@rolatech/angular-product 17.1.10 → 19.0.0-beta.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.
Files changed (57) hide show
  1. package/fesm2022/{rolatech-angular-product-product-index.component-sLpwxg6g.mjs → rolatech-angular-product-product-index.component-Dy6tCxJf.mjs} +6 -7
  2. package/fesm2022/rolatech-angular-product-product-index.component-Dy6tCxJf.mjs.map +1 -0
  3. package/fesm2022/rolatech-angular-product.mjs +271 -224
  4. package/fesm2022/rolatech-angular-product.mjs.map +1 -1
  5. package/lib/pages/product/product-category/product-category.component.d.ts +1 -2
  6. package/lib/pages/product/product-layout/product-layout.component.d.ts +1 -2
  7. package/lib/pages/product-manage/product-manage-info/product-manage-info.component.d.ts +1 -2
  8. package/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.d.ts +26 -2
  9. package/lib/services/index.d.ts +0 -2
  10. package/package.json +8 -6
  11. package/themes/_default.scss +1 -1
  12. package/esm2022/index.mjs +0 -7
  13. package/esm2022/lib/components/index.mjs +0 -12
  14. package/esm2022/lib/components/product-action/product-action.component.mjs +0 -32
  15. package/esm2022/lib/components/product-info/product-info.component.mjs +0 -19
  16. package/esm2022/lib/components/product-item/product-item.component.mjs +0 -17
  17. package/esm2022/lib/components/product-manage-option-add/product-manage-option-add.component.mjs +0 -68
  18. package/esm2022/lib/components/product-manage-option-item/product-manage-option-item.component.mjs +0 -49
  19. package/esm2022/lib/components/product-manage-variant/product-manage-variant.component.mjs +0 -127
  20. package/esm2022/lib/components/product-mange-option-action/product-manage-option-action.component.mjs +0 -22
  21. package/esm2022/lib/components/product-mange-section-item/product-mange-section-item.component.mjs +0 -89
  22. package/esm2022/lib/components/product-media/product-media.component.mjs +0 -34
  23. package/esm2022/lib/components/product-option/product-option.component.mjs +0 -23
  24. package/esm2022/lib/components/product-owner-renderer/product-owner-renderer.component.mjs +0 -20
  25. package/esm2022/lib/components/product-pricing/product-pricing.component.mjs +0 -31
  26. package/esm2022/lib/components/product-section/product-section.component.mjs +0 -26
  27. package/esm2022/lib/interfaces/category.mjs +0 -2
  28. package/esm2022/lib/interfaces/index.mjs +0 -2
  29. package/esm2022/lib/interfaces/product.mjs +0 -36
  30. package/esm2022/lib/pages/product/product-category/product-category.component.mjs +0 -74
  31. package/esm2022/lib/pages/product/product-details/product-details.component.mjs +0 -185
  32. package/esm2022/lib/pages/product/product-details/selected.pipe.mjs +0 -18
  33. package/esm2022/lib/pages/product/product-index/product-index.component.mjs +0 -43
  34. package/esm2022/lib/pages/product/product-layout/product-layout.component.mjs +0 -50
  35. package/esm2022/lib/pages/product/product.routes.mjs +0 -24
  36. package/esm2022/lib/pages/product-manage/product-manage-content/product-manage-content.component.mjs +0 -12
  37. package/esm2022/lib/pages/product-manage/product-manage-create/product-manage-create.component.mjs +0 -61
  38. package/esm2022/lib/pages/product-manage/product-manage-index/product-manage-index.component.mjs +0 -155
  39. package/esm2022/lib/pages/product-manage/product-manage-info/product-manage-info.component.mjs +0 -112
  40. package/esm2022/lib/pages/product-manage/product-manage-inventory/product-manage-inventory.component.mjs +0 -14
  41. package/esm2022/lib/pages/product-manage/product-manage-item/product-manage-item.component.mjs +0 -28
  42. package/esm2022/lib/pages/product-manage/product-manage-item-header/product-manage-item-header.component.mjs +0 -12
  43. package/esm2022/lib/pages/product-manage/product-manage-layout/product-manage-layout.component.mjs +0 -55
  44. package/esm2022/lib/pages/product-manage/product-manage-media/product-manage-media.component.mjs +0 -137
  45. package/esm2022/lib/pages/product-manage/product-manage-options/product-manage-options.component.mjs +0 -102
  46. package/esm2022/lib/pages/product-manage/product-manage-pricing/product-manage-pricing.component.mjs +0 -12
  47. package/esm2022/lib/pages/product-manage/product-manage-schedule/product-manage-schedule.component.mjs +0 -14
  48. package/esm2022/lib/pages/product-manage/product-manage-sections/product-manage-sections.component.mjs +0 -171
  49. package/esm2022/lib/pages/product-manage/product-manage-variants/product-manage-variants.component.mjs +0 -133
  50. package/esm2022/lib/pages/product-manage/product-manage.routes.mjs +0 -60
  51. package/esm2022/lib/services/index.mjs +0 -4
  52. package/esm2022/lib/services/product-category.service.mjs +0 -38
  53. package/esm2022/provider.mjs +0 -13
  54. package/esm2022/rolatech-angular-product.mjs +0 -5
  55. package/fesm2022/rolatech-angular-product-product-index.component-sLpwxg6g.mjs.map +0 -1
  56. package/lib/components/product-mange-option-action/product-manage-option-action.component.d.ts +0 -10
  57. package/lib/services/product-category.service.d.ts +0 -12
@@ -1,36 +0,0 @@
1
- export var ProductPriceType;
2
- (function (ProductPriceType) {
3
- ProductPriceType["FIXED"] = "\u56FA\u5B9A\u4EF7\u683C";
4
- ProductPriceType["PARTIAL"] = "\u652F\u4ED8\u5B9A\u91D1";
5
- ProductPriceType["VARIED"] = "\u591A\u53D8\u7684";
6
- })(ProductPriceType || (ProductPriceType = {}));
7
- export var ProductStatus;
8
- (function (ProductStatus) {
9
- ProductStatus[ProductStatus["DRAFT"] = '草稿'] = "DRAFT";
10
- ProductStatus[ProductStatus["AWAITING"] = '审核中'] = "AWAITING";
11
- ProductStatus[ProductStatus["PENDING"] = '审核中'] = "PENDING";
12
- ProductStatus[ProductStatus["ACCEPTED"] = '已通过'] = "ACCEPTED";
13
- ProductStatus[ProductStatus["ACTIVE"] = '已发布'] = "ACTIVE";
14
- ProductStatus[ProductStatus["DELETED"] = '已删除'] = "DELETED";
15
- ProductStatus[ProductStatus["ARCHIVED"] = '已下架'] = "ARCHIVED";
16
- })(ProductStatus || (ProductStatus = {}));
17
- export var ProductType;
18
- (function (ProductType) {
19
- ProductType["DIGITAL"] = "\u865A\u62DF\u5546\u54C1";
20
- ProductType["PHYSICAL"] = "\u5B9E\u4F53\u5546\u54C1";
21
- ProductType["SERVICE"] = "\u670D\u52A1";
22
- ProductType["OTHER"] = "\u5176\u4ED6";
23
- })(ProductType || (ProductType = {}));
24
- export var ProductInventoryStatus;
25
- (function (ProductInventoryStatus) {
26
- ProductInventoryStatus["IN_STOCK"] = "\u6709\u8D27";
27
- ProductInventoryStatus["LOW_STOCK"] = "\u5E93\u5B58\u4E0D\u8DB3";
28
- ProductInventoryStatus["OUT_OF_STOCK"] = "\u552E\u7F44";
29
- ProductInventoryStatus["DISCONTINUED"] = "\u5DF2\u505C\u4EA7";
30
- })(ProductInventoryStatus || (ProductInventoryStatus = {}));
31
- export var ProductScope;
32
- (function (ProductScope) {
33
- ProductScope[ProductScope["WEB"] = '网站'] = "WEB";
34
- ProductScope[ProductScope["GLOBAL"] = '全域'] = "GLOBAL";
35
- })(ProductScope || (ProductScope = {}));
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvaW50ZXJmYWNlcy9wcm9kdWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCQSxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQzFCLHNEQUFjLENBQUE7SUFDZCx3REFBZ0IsQ0FBQTtJQUNoQixpREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBZ0NELE1BQU0sQ0FBTixJQUFZLGFBUVg7QUFSRCxXQUFZLGFBQWE7SUFDdkIsdUNBQWEsSUFBSSxXQUFBLENBQUE7SUFDakIsMENBQWdCLEtBQUssY0FBQSxDQUFBO0lBQ3JCLHlDQUFlLEtBQUssYUFBQSxDQUFBO0lBQ3BCLDBDQUFnQixLQUFLLGNBQUEsQ0FBQTtJQUNyQix3Q0FBYyxLQUFLLFlBQUEsQ0FBQTtJQUNuQix5Q0FBZSxLQUFLLGFBQUEsQ0FBQTtJQUNwQiwwQ0FBZ0IsS0FBSyxjQUFBLENBQUE7QUFDdkIsQ0FBQyxFQVJXLGFBQWEsS0FBYixhQUFhLFFBUXhCO0FBQ0QsTUFBTSxDQUFOLElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQixtREFBZ0IsQ0FBQTtJQUNoQixvREFBaUIsQ0FBQTtJQUNqQix1Q0FBYyxDQUFBO0lBQ2QscUNBQVksQ0FBQTtBQUNkLENBQUMsRUFMVyxXQUFXLEtBQVgsV0FBVyxRQUt0QjtBQUNELE1BQU0sQ0FBTixJQUFZLHNCQUtYO0FBTEQsV0FBWSxzQkFBc0I7SUFDaEMsbURBQWUsQ0FBQTtJQUNmLGdFQUFrQixDQUFBO0lBQ2xCLHVEQUFtQixDQUFBO0lBQ25CLDZEQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFMVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBS2pDO0FBQ0QsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixtQ0FBVyxJQUFJLFNBQUEsQ0FBQTtJQUNmLHNDQUFjLElBQUksWUFBQSxDQUFBO0FBQ3BCLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3RDYXRlZ29yeSB9IGZyb20gJy4vY2F0ZWdvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3Qge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG1lZGlhOiBQcm9kdWN0TWVkaWFbXTtcbiAgc3RhdHVzOiBQcm9kdWN0U3RhdHVzIHwgc3RyaW5nO1xuICB0eXBlOiBQcm9kdWN0VHlwZSB8IHN0cmluZztcbiAgc2NvcGU6IFByb2R1Y3RTY29wZSB8IHN0cmluZztcbiAgY2F0ZWdvcmllczogUHJvZHVjdENhdGVnb3J5W107XG4gIHRhZ3M6IFByb2R1Y3RUYWdbXTtcbiAgc2VjdGlvbnM6IFByb2R1Y3RTZWN0aW9uW107XG4gIG9wdGlvbnM6IFByb2R1Y3RPcHRpb25bXTtcbiAgdmFyaWFudHM/OiBQcm9kdWN0VmFyaWFudFtdO1xuICBwcmljZTogbnVtYmVyO1xuICBkZXBvc2l0OiBudW1iZXI7XG4gIHByaWNlVHlwZTogUHJvZHVjdFByaWNlVHlwZTtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cbmV4cG9ydCBlbnVtIFByb2R1Y3RQcmljZVR5cGUge1xuICBGSVhFRCA9ICflm7rlrprku7fmoLwnLFxuICBQQVJUSUFMID0gJ+aUr+S7mOWumumHkScsXG4gIFZBUklFRCA9ICflpJrlj5jnmoQnLFxufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG1lZGlhOiBQcm9kdWN0TWVkaWFbXTtcbiAgaXNVcGxvYWRpbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RWYXJpYW50IHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcHJpY2U6IG51bWJlcjtcbiAgc2t1OiBzdHJpbmc7XG4gIG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50T3B0aW9uW107XG4gIG1lZGlhOiBQcm9kdWN0VmFyaWFudE1lZGlhW107XG4gIGlzVXBsb2FkaW5nPzogYm9vbGVhbjtcbiAgc3RhdHVzOiBQcm9kdWN0SW52ZW50b3J5U3RhdHVzIHwgc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0VmFyaWFudE1lZGlhIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGFsdDogc3RyaW5nO1xuICB1cGxvYWRpbmc/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0VmFyaWFudE9wdGlvbiB7XG4gIG9wdGlvbjogUHJvZHVjdE9wdGlvbjtcbiAgdmFsdWU6IFByb2R1Y3RPcHRpb25WYWx1ZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFRhZyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cbmV4cG9ydCBlbnVtIFByb2R1Y3RTdGF0dXMge1xuICBEUkFGVCA9IDxhbnk+J+iNieeovycsXG4gIEFXQUlUSU5HID0gPGFueT4n5a6h5qC45LitJyxcbiAgUEVORElORyA9IDxhbnk+J+WuoeaguOS4rScsXG4gIEFDQ0VQVEVEID0gPGFueT4n5bey6YCa6L+HJyxcbiAgQUNUSVZFID0gPGFueT4n5bey5Y+R5biDJyxcbiAgREVMRVRFRCA9IDxhbnk+J+W3suWIoOmZpCcsXG4gIEFSQ0hJVkVEID0gPGFueT4n5bey5LiL5p62Jyxcbn1cbmV4cG9ydCBlbnVtIFByb2R1Y3RUeXBlIHtcbiAgRElHSVRBTCA9ICfomZrmi5/llYblk4EnLFxuICBQSFlTSUNBTCA9ICflrp7kvZPllYblk4EnLFxuICBTRVJWSUNFID0gJ+acjeWKoScsXG4gIE9USEVSID0gJ+WFtuS7licsXG59XG5leHBvcnQgZW51bSBQcm9kdWN0SW52ZW50b3J5U3RhdHVzIHtcbiAgSU5fU1RPQ0sgPSAn5pyJ6LSnJyxcbiAgTE9XX1NUT0NLID0gJ+W6k+WtmOS4jei2sycsXG4gIE9VVF9PRl9TVE9DSyA9ICfllK7nvYQnLFxuICBESVNDT05USU5VRUQgPSAn5bey5YGc5LqnJyxcbn1cbmV4cG9ydCBlbnVtIFByb2R1Y3RTY29wZSB7XG4gIFdFQiA9IDxhbnk+J+e9keermScsXG4gIEdMT0JBTCA9IDxhbnk+J+WFqOWfnycsXG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RNZWRpYSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHV1aWQ6IHN0cmluZztcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdE9wdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWVzOiBQcm9kdWN0T3B0aW9uVmFsdWVbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdE9wdGlvblZhbHVlIHtcbiAgaWQ/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cbiJdfQ==
@@ -1,74 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { ProductService } from '@rolatech/angular-services';
3
- import { AngularComponentsModule, BaseComponent, RichItemComponent, RichViewComponent } from '@rolatech/angular-components';
4
- import { AngularCommonModule } from '@rolatech/angular-common';
5
- import { ProductCategoryService } from '../../../services';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- export class ProductCategoryComponent extends BaseComponent {
9
- constructor() {
10
- super(...arguments);
11
- this.categoryService = inject(ProductCategoryService);
12
- this.productService = inject(ProductService);
13
- this.products = [];
14
- this.categories = [];
15
- this.loading = false;
16
- }
17
- ngOnInit() {
18
- this.findAllCategories();
19
- this.route.paramMap.subscribe((params) => {
20
- const id = params.get('id');
21
- this.findCategoryById(id);
22
- this.findProductsByCategoryId(id);
23
- });
24
- }
25
- findAllCategories() {
26
- this.categoryService.find({}).subscribe({
27
- next: (res) => {
28
- this.categories = res.data;
29
- },
30
- });
31
- }
32
- findCategoryById(id) {
33
- this.categoryService.get(id).subscribe({
34
- next: (res) => {
35
- this.category = res.data;
36
- },
37
- });
38
- }
39
- findAllProducts() {
40
- this.productService.find({}).subscribe({
41
- next: (res) => {
42
- this.products = res.data;
43
- },
44
- });
45
- }
46
- findProductsByCategoryId(id) {
47
- this.loading = true;
48
- const options = {
49
- filter: `categories:${id},published:true`,
50
- };
51
- this.productService.find(options).subscribe({
52
- next: (res) => {
53
- this.products = res.data;
54
- this.loading = false;
55
- },
56
- error: (error) => {
57
- this.loading = false;
58
- },
59
- });
60
- }
61
- loadProductsByCategory(item) {
62
- // [routerLink] = "['../../', item.id]";
63
- this.router.navigate([`../../${item.id}`], {
64
- relativeTo: this.route,
65
- });
66
- }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductCategoryComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ProductCategoryComponent, isStandalone: true, selector: "rolatech-product-category", usesInheritance: true, ngImport: i0, template: "<div>\n @if (category) {\n <div class=\"p-3 hidden md:block text-2xl font-medium\">{{ category.name }}</div>\n } @else {\n <div class=\"flex flex-row animate-pulse w-full\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n </div>\n }\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 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 list>\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"] }], deferBlockDependencies: [() => [i1.RouterLink, RichItemComponent]] }); }
69
- }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductCategoryComponent, decorators: [{
71
- type: Component,
72
- args: [{ selector: 'rolatech-product-category', standalone: true, imports: [AngularCommonModule, AngularComponentsModule, RichViewComponent, RichItemComponent], template: "<div>\n @if (category) {\n <div class=\"p-3 hidden md:block text-2xl font-medium\">{{ category.name }}</div>\n } @else {\n <div class=\"flex flex-row animate-pulse w-full\">\n <div class=\"h-4 bg-[--rt-base-background] rounded col-span-2\"></div>\n </div>\n }\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 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 list>\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" }]
73
- }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXRlZ29yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QvcHJvZHVjdC1jYXRlZ29yeS9wcm9kdWN0LWNhdGVnb3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LWNhdGVnb3J5L3Byb2R1Y3QtY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc1SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBUzNELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxhQUFhO0lBUDNEOztRQVFFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakQsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFeEMsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUNuQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0tBcURqQjtJQW5EQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFO1lBQ2pELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFXLENBQUM7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdEMsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGdCQUFnQixDQUFDLEVBQVU7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0IsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxFQUFVO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLGNBQWMsRUFBRSxpQkFBaUI7U0FDMUMsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFTO1FBQzlCLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMURVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDRHQ2ZyQyxtaERBd0NBLHlERDdCWSxtQkFBbUIsOEJBQUUsdUJBQXVCLCtCQUFFLGlCQUFpQiw4R0FBRSxpQkFBaUI7OzJGQUlqRix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgQmFzZUNvbXBvbmVudCwgUmljaEl0ZW1Db21wb25lbnQsIFJpY2hWaWV3Q29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQcm9kdWN0LCBQcm9kdWN0Q2F0ZWdvcnkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBhcmFtTWFwIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgUHJvZHVjdENhdGVnb3J5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvZHVjdC1jYXRlZ29yeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgUmljaFZpZXdDb21wb25lbnQsIFJpY2hJdGVtQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtY2F0ZWdvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcHJvZHVjdC1jYXRlZ29yeS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RDYXRlZ29yeUNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjYXRlZ29yeVNlcnZpY2UgPSBpbmplY3QoUHJvZHVjdENhdGVnb3J5U2VydmljZSk7XG4gIHByb2R1Y3RTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RTZXJ2aWNlKTtcbiAgY2F0ZWdvcnkhOiBQcm9kdWN0Q2F0ZWdvcnk7XG4gIHByb2R1Y3RzOiBQcm9kdWN0W10gPSBbXTtcbiAgY2F0ZWdvcmllczogUHJvZHVjdENhdGVnb3J5W10gPSBbXTtcbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZEFsbENhdGVnb3JpZXMoKTtcbiAgICB0aGlzLnJvdXRlLnBhcmFtTWFwLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbU1hcCkgPT4ge1xuICAgICAgY29uc3QgaWQgPSBwYXJhbXMuZ2V0KCdpZCcpIGFzIHN0cmluZztcbiAgICAgIHRoaXMuZmluZENhdGVnb3J5QnlJZChpZCk7XG4gICAgICB0aGlzLmZpbmRQcm9kdWN0c0J5Q2F0ZWdvcnlJZChpZCk7XG4gICAgfSk7XG4gIH1cbiAgZmluZEFsbENhdGVnb3JpZXMoKSB7XG4gICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZmluZCh7fSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZENhdGVnb3J5QnlJZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZ2V0KGlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcnkgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgZmluZEFsbFByb2R1Y3RzKCkge1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZmluZCh7fSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2R1Y3RzID0gcmVzLmRhdGE7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGZpbmRQcm9kdWN0c0J5Q2F0ZWdvcnlJZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgZmlsdGVyOiBgY2F0ZWdvcmllczoke2lkfSxwdWJsaXNoZWQ6dHJ1ZWAsXG4gICAgfTtcbiAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLmZpbmQob3B0aW9ucykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnByb2R1Y3RzID0gcmVzLmRhdGE7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgbG9hZFByb2R1Y3RzQnlDYXRlZ29yeShpdGVtOiBhbnkpIHtcbiAgICAvLyAgW3JvdXRlckxpbmtdID0gXCJbJy4uLy4uLycsIGl0ZW0uaWRdXCI7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AuLi8uLi8ke2l0ZW0uaWR9YF0sIHtcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIEBpZiAoY2F0ZWdvcnkpIHtcbiAgICA8ZGl2IGNsYXNzPVwicC0zIGhpZGRlbiBtZDpibG9jayB0ZXh0LTJ4bCBmb250LW1lZGl1bVwiPnt7IGNhdGVnb3J5Lm5hbWUgfX08L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYW5pbWF0ZS1wdWxzZSB3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoLTQgYmctWy0tcnQtYmFzZS1iYWNrZ3JvdW5kXSByb3VuZGVkIGNvbC1zcGFuLTJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuICBAaWYgKGxvYWRpbmcpIHtcbiAgICBAZm9yIChudW1iZXIgb2YgWzAsIDEsIDIsIDMsIDQsIDVdOyB0cmFjayBudW1iZXIpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFuaW1hdGUtcHVsc2UgbXQtMyBtci00IGN1cnNvci1wb2ludGVyIHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1maXQgdy0yLzUgbWQ6dy0xLzQgYXNwZWN0LXZpZGVvIGJnLVstLXJ0LWJhc2UtYmFja2dyb3VuZF0gcm91bmRlZC1sZ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0zLzUgbWQ6dy0zLzQgbWwtMyBweS0xIGZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNCBiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHJvdW5kZWQgY29sLXNwYW4tMlwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMiBiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHJvdW5kZWQgY29sLXNwYW4tMVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMiBiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHJvdW5kZWQgY29sLXNwYW4tMSBweS0xXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTIgYmctWy0tcnQtYmFzZS1iYWNrZ3JvdW5kXSByb3VuZGVkIGNvbC1zcGFuLTIgcHktMVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPHJvbGF0ZWNoLXJpY2gtdmlldyBsaXN0PlxuICAgICAgQGZvciAoaXRlbSBvZiBwcm9kdWN0czsgdHJhY2sgaXRlbSkge1xuICAgICAgICBAZGVmZXIge1xuICAgICAgICAgIDxyb2xhdGVjaC1yaWNoLWl0ZW1cbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLi4vLi4vJywgaXRlbS5pZF1cIlxuICAgICAgICAgICAgW3RodW1ibmFpbF09XCJpdGVtLm1lZGlhWzBdLnVybCArICchdzQwMCdcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICBbc3VidGl0bGVdPVwiaXRlbS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBbcHJpY2VdPVwiaXRlbS5wcmljZSAvIDEwMFwiXG4gICAgICAgICAgPjwvcm9sYXRlY2gtcmljaC1pdGVtPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9yb2xhdGVjaC1yaWNoLXZpZXc+XG4gIH1cbjwvZGl2PlxuIl19
@@ -1,185 +0,0 @@
1
- import { Component, computed, effect, inject, signal } from '@angular/core';
2
- import { ProductActionComponent, ProductInfoComponent, ProductMediaComponent, ProductOptionComponent, ProductPricingComponent, } from '../../../components';
3
- import { AngularComponentsModule, BaseComponent, ContainerComponent } from '@rolatech/angular-components';
4
- import { AngularCommonModule } from '@rolatech/angular-common';
5
- import { CommentsComponent } from '@rolatech/angular-comment';
6
- import { AuthService, AuthUserService } from '@rolatech/angular-auth';
7
- import { ProductSectionComponent } from '../../../components/product-section/product-section.component';
8
- import { SelectedPipe } from './selected.pipe';
9
- import _ from 'lodash';
10
- import { ProductOwnerRendererComponent } from '../../../components/product-owner-renderer/product-owner-renderer.component';
11
- import { CartEventType, CartService, ProductService } from '@rolatech/angular-services';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/material/divider";
14
- export class ProductDetailsComponent extends BaseComponent {
15
- constructor() {
16
- super();
17
- this.authService = inject(AuthService);
18
- this.authUserService = inject(AuthUserService);
19
- this.productService = inject(ProductService);
20
- this.cartService = inject(CartService);
21
- this.authenticated = this.authService.authenticated;
22
- this.fullname = '';
23
- this.username = '';
24
- this.inWishList = false;
25
- this.purchased = false;
26
- this.variants = [];
27
- this.variantOption = signal(undefined);
28
- this.variantOptionChanged = computed(() => {
29
- return this.variantOption();
30
- });
31
- this.results = [];
32
- effect(() => {
33
- if (this.authenticated()) {
34
- this.findWishlistBy();
35
- }
36
- });
37
- }
38
- ngOnInit() {
39
- this.getProduct();
40
- }
41
- getProduct() {
42
- this.productService.get(this.id).subscribe({
43
- next: (res) => {
44
- this.product = res.data;
45
- if (this.product.variants) {
46
- this.variants = this.product.variants;
47
- this.selectedVariant = this.variants[0];
48
- this.selectedVariant.options.forEach((item) => {
49
- this.results.push([item.option.id, item.value.id]);
50
- });
51
- }
52
- this.findUserBaseInfo(this.product.userId);
53
- this.titleService.setTitle(`${this.product.name} - 拼小课`);
54
- },
55
- });
56
- }
57
- findVariant(optionId, valueId) {
58
- return this.variants.find((item) => {
59
- const exist = item.options.some((i) => i.option.id === optionId && i.value.id === valueId);
60
- if (exist) {
61
- return item;
62
- }
63
- return null;
64
- });
65
- }
66
- findUserBaseInfo(userId) {
67
- this.authUserService.getPublicUserInfo(userId).subscribe({
68
- next: (res) => {
69
- this.fullname = res.name;
70
- this.username = res.username;
71
- this.user = res;
72
- },
73
- });
74
- }
75
- findWishlistBy() {
76
- this.productService.findWishlistBy(this.id).subscribe({
77
- next: (res) => {
78
- this.inWishList = res.data;
79
- },
80
- });
81
- }
82
- onWish(e) {
83
- if (this.authenticated()) {
84
- if (this.inWishList) {
85
- this.removeFromWishlist();
86
- }
87
- else {
88
- this.addToWishlist();
89
- }
90
- }
91
- else {
92
- this.snackBarService.open('请先登录');
93
- }
94
- }
95
- onCart(e) {
96
- const data = { productId: this.id, quantity: 1 };
97
- if (this.selectedVariant) {
98
- data['variantId'] = this.selectedVariant.id;
99
- }
100
- this.cartService.create(data).subscribe({
101
- next: (res) => {
102
- this.cartService.cartEvent.emit(CartEventType.CartAdd);
103
- },
104
- });
105
- }
106
- removeFromWishlist() {
107
- this.productService.removeFromWishlist(this.id).subscribe({
108
- next: (res) => {
109
- this.inWishList = false;
110
- },
111
- });
112
- }
113
- addToWishlist() {
114
- this.productService.addToWishlist(this.id).subscribe({
115
- next: (res) => {
116
- this.inWishList = true;
117
- },
118
- });
119
- }
120
- checkout(e) {
121
- if (this.authenticated()) {
122
- if (this.selectedVariant) {
123
- // this.router.navigateByUrl(`/cart/checkout/products/${this.id}?variant-id=${this.selectedVariant.id}`);
124
- // this.router.navigate([`/cart/checkout/products/${this.id}`], { queryParams: { variant: this.selectedVariant.id } });
125
- this.router.navigate([`/cart/checkout/products/${this.id}/variants/${this.selectedVariant.id}`]);
126
- }
127
- else {
128
- this.router.navigateByUrl(`/cart/checkout/products/${this.id}`);
129
- }
130
- }
131
- else {
132
- this.snackBarService.open('请先登录');
133
- }
134
- }
135
- onOptionChange(e) {
136
- let criteria = [];
137
- this.selectedVariant.options.map((item) => {
138
- criteria.push({
139
- optionId: item.option.id === e.option.id ? e.option.id : item.option.id,
140
- valueId: item.option.id === e.option.id ? e.value.id : item.value.id,
141
- });
142
- });
143
- // const criteria = [
144
- // { optionId: '249008855294545920', valueId: '249008855298740224' }, // color: red
145
- // { optionId: '248661715955355648', valueId: '249001130061860865' }, // size: 256GB
146
- // ];
147
- // Function to check if a variant matches all the criteria
148
- const matchesAllCriteria = (variant, criteria) => {
149
- return _.every(criteria, (criterion) => {
150
- return _.some(variant.options, (o) => o.option.id === criterion.optionId && o.value.id === criterion.valueId);
151
- });
152
- };
153
- // Function to update the criteria based on a matching variant
154
- const updateCriteriaFromVariant = (variant) => {
155
- return _.map(variant.options, (o) => ({
156
- optionId: o.option.id,
157
- valueId: o.value.id,
158
- }));
159
- };
160
- // Find the variant that matches all the criteria
161
- const matchingVariant = _.find(this.variants, (variant) => matchesAllCriteria(variant, criteria));
162
- this.selectedVariant = matchingVariant;
163
- // const updatedCriteria = matchingVariant ? updateCriteriaFromVariant(matchingVariant) : [];
164
- }
165
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
166
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ProductDetailsComponent, isStandalone: true, selector: "rolatech-product-details", usesInheritance: true, ngImport: i0, template: "@if (product) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row w-full\">\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-media [media]=\"product.media\"></rolatech-product-media>\n </div>\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-info [name]=\"product.name\" [description]=\"product.description\"> </rolatech-product-info>\n @for (option of product.options; track $index) {\n <rolatech-product-option\n [option]=\"option\"\n [value]=\"selectedVariant | selected: option\"\n (change)=\"onOptionChange($event)\"\n ></rolatech-product-option>\n }\n <rolatech-product-pricing\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n [product]=\"product\"\n [price]=\"selectedVariant ? selectedVariant.price : product.price\"\n ></rolatech-product-pricing>\n <rolatech-product-action\n [product]=\"product\"\n (checkout)=\"checkout($event)\"\n (deposit)=\"checkout($event)\"\n (cart)=\"onCart($event)\"\n ></rolatech-product-action>\n </div>\n </div>\n <div class=\"py-3\">\n <mat-divider></mat-divider>\n <rolatech-product-owner-renderer\n [name]=\"fullname\"\n [avatar]=\"user?.avatar\"\n [username]=\"username\"\n ></rolatech-product-owner-renderer>\n <mat-divider></mat-divider>\n </div>\n <div class=\"flex flex-col\">\n @for (section of product.sections; track $index) {\n <rolatech-product-section [section]=\"section\" [reverse]=\"$index % 2 !== 0\"></rolatech-product-section>\n }\n\n <rolatech-comments [itemId]=\"product.id\"></rolatech-comments>\n </div>\n </rolatech-container>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ProductInfoComponent, selector: "rolatech-product-info", inputs: ["name", "description"] }, { kind: "component", type: ProductMediaComponent, selector: "rolatech-product-media", inputs: ["media", "min"] }, { kind: "component", type: ProductPricingComponent, selector: "rolatech-product-pricing", inputs: ["product", "price", "inWishList"], outputs: ["wish"] }, { kind: "component", type: ProductSectionComponent, selector: "rolatech-product-section", inputs: ["section", "user", "username", "row", "reverse"] }, { kind: "component", type: ProductActionComponent, selector: "rolatech-product-action", inputs: ["product"], outputs: ["cart", "checkout", "deposit"] }, { kind: "component", type: CommentsComponent, selector: "rolatech-comments", inputs: ["itemId"] }, { kind: "component", type: ProductOptionComponent, selector: "rolatech-product-option", inputs: ["option", "selected", "value"], outputs: ["change", "selectedChange", "valueChange"] }, { kind: "component", type: ProductOwnerRendererComponent, selector: "rolatech-product-owner-renderer", inputs: ["name", "avatar", "username"] }, { kind: "pipe", type: SelectedPipe, name: "selected" }] }); }
167
- }
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductDetailsComponent, decorators: [{
169
- type: Component,
170
- args: [{ selector: 'rolatech-product-details', standalone: true, imports: [
171
- AngularCommonModule,
172
- AngularComponentsModule,
173
- ContainerComponent,
174
- ProductInfoComponent,
175
- ProductMediaComponent,
176
- ProductPricingComponent,
177
- ProductSectionComponent,
178
- ProductActionComponent,
179
- CommentsComponent,
180
- ProductOptionComponent,
181
- ProductOwnerRendererComponent,
182
- SelectedPipe,
183
- ], template: "@if (product) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row w-full\">\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-media [media]=\"product.media\"></rolatech-product-media>\n </div>\n <div class=\"md:w-1/2 md:p-3 py-3\">\n <rolatech-product-info [name]=\"product.name\" [description]=\"product.description\"> </rolatech-product-info>\n @for (option of product.options; track $index) {\n <rolatech-product-option\n [option]=\"option\"\n [value]=\"selectedVariant | selected: option\"\n (change)=\"onOptionChange($event)\"\n ></rolatech-product-option>\n }\n <rolatech-product-pricing\n (wish)=\"onWish($event)\"\n [inWishList]=\"inWishList\"\n [product]=\"product\"\n [price]=\"selectedVariant ? selectedVariant.price : product.price\"\n ></rolatech-product-pricing>\n <rolatech-product-action\n [product]=\"product\"\n (checkout)=\"checkout($event)\"\n (deposit)=\"checkout($event)\"\n (cart)=\"onCart($event)\"\n ></rolatech-product-action>\n </div>\n </div>\n <div class=\"py-3\">\n <mat-divider></mat-divider>\n <rolatech-product-owner-renderer\n [name]=\"fullname\"\n [avatar]=\"user?.avatar\"\n [username]=\"username\"\n ></rolatech-product-owner-renderer>\n <mat-divider></mat-divider>\n </div>\n <div class=\"flex flex-col\">\n @for (section of product.sections; track $index) {\n <rolatech-product-section [section]=\"section\" [reverse]=\"$index % 2 !== 0\"></rolatech-product-section>\n }\n\n <rolatech-comments [itemId]=\"product.id\"></rolatech-comments>\n </div>\n </rolatech-container>\n}\n" }]
184
- }], ctorParameters: () => [] });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LWRldGFpbHMvcHJvZHVjdC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LWRldGFpbHMvcHJvZHVjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQztBQUM1SCxPQUFPLEVBQUUs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QUFzQixtS0FDdEIsNkJBQTZCLCtHQUM3QixZQUFZOzsyRkFLSCx1QkFBdUI7a0JBcEJuQyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0Qiw2QkFBNkI7d0JBQzdCLFlBQVk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgUHJvZHVjdEFjdGlvbkNvbXBvbmVudCxcbiAgUHJvZHVjdEluZm9Db21wb25lbnQsXG4gIFByb2R1Y3RNZWRpYUNvbXBvbmVudCxcbiAgUHJvZHVjdE9wdGlvbkNvbXBvbmVudCxcbiAgUHJvZHVjdFByaWNpbmdDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhc2VDb21wb25lbnQsIENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBDb21tZW50c0NvbXBvbmVudCB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1lbnQnO1xuaW1wb3J0IHsgUHJvZHVjdCwgUHJvZHVjdE9wdGlvbiwgUHJvZHVjdFZhcmlhbnQsIFByb2R1Y3RWYXJpYW50T3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBQcm9kdWN0U2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvcHJvZHVjdC1zZWN0aW9uL3Byb2R1Y3Qtc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0ZWRQaXBlIH0gZnJvbSAnLi9zZWxlY3RlZC5waXBlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQcm9kdWN0T3duZXJSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvcHJvZHVjdC1vd25lci1yZW5kZXJlci9wcm9kdWN0LW93bmVyLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXJ0RXZlbnRUeXBlLCBDYXJ0U2VydmljZSwgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLXByb2R1Y3QtZGV0YWlscycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyQ29tbW9uTW9kdWxlLFxuICAgIEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLFxuICAgIENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBQcm9kdWN0SW5mb0NvbXBvbmVudCxcbiAgICBQcm9kdWN0TWVkaWFDb21wb25lbnQsXG4gICAgUHJvZHVjdFByaWNpbmdDb21wb25lbnQsXG4gICAgUHJvZHVjdFNlY3Rpb25Db21wb25lbnQsXG4gICAgUHJvZHVjdEFjdGlvbkNvbXBvbmVudCxcbiAgICBDb21tZW50c0NvbXBvbmVudCxcbiAgICBQcm9kdWN0T3B0aW9uQ29tcG9uZW50LFxuICAgIFByb2R1Y3RPd25lclJlbmRlcmVyQ29tcG9uZW50LFxuICAgIFNlbGVjdGVkUGlwZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcm9kdWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGF1dGhVc2VyU2VydmljZSA9IGluamVjdChBdXRoVXNlclNlcnZpY2UpO1xuICBwcm9kdWN0U2VydmljZSA9IGluamVjdChQcm9kdWN0U2VydmljZSk7XG4gIGNhcnRTZXJ2aWNlID0gaW5qZWN0KENhcnRTZXJ2aWNlKTtcbiAgYXV0aGVudGljYXRlZCA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZDtcbiAgcHJvZHVjdCE6IFByb2R1Y3Q7XG4gIGZ1bGxuYW1lID0gJyc7XG4gIHVzZXJuYW1lID0gJyc7XG4gIHVzZXI6IGFueTtcbiAgaW5XaXNoTGlzdCA9IGZhbHNlO1xuICBwdXJjaGFzZWQgPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb24hOiBQcm9kdWN0T3B0aW9uO1xuICB2YXJpYW50czogUHJvZHVjdFZhcmlhbnRbXSA9IFtdO1xuICBzZWxlY3RlZFZhcmlhbnQhOiBQcm9kdWN0VmFyaWFudDtcbiAgdmFyaWFudE9wdGlvbiA9IHNpZ25hbDxQcm9kdWN0VmFyaWFudE9wdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdmFyaWFudE9wdGlvbkNoYW5nZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFudE9wdGlvbigpO1xuICB9KTtcbiAgcmVzdWx0czogYW55W10gPSBbXTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXV0aGVudGljYXRlZCgpKSB7XG4gICAgICAgIHRoaXMuZmluZFdpc2hsaXN0QnkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldFByb2R1Y3QoKTtcbiAgfVxuICBnZXRQcm9kdWN0KCkge1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZ2V0KHRoaXMuaWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5wcm9kdWN0ID0gcmVzLmRhdGE7XG4gICAgICAgIGlmICh0aGlzLnByb2R1Y3QudmFyaWFudHMpIHtcbiAgICAgICAgICB0aGlzLnZhcmlhbnRzID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYXJpYW50ID0gdGhpcy52YXJpYW50c1swXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFyaWFudC5vcHRpb25zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0cy5wdXNoKFtpdGVtLm9wdGlvbi5pZCwgaXRlbS52YWx1ZS5pZF0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maW5kVXNlckJhc2VJbmZvKHRoaXMucHJvZHVjdC51c2VySWQpO1xuICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZShgJHt0aGlzLnByb2R1Y3QubmFtZX0gLSDmi7zlsI/or75gKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBmaW5kVmFyaWFudChvcHRpb25JZDogc3RyaW5nLCB2YWx1ZUlkOiBzdHJpbmcpOiBQcm9kdWN0VmFyaWFudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFudHMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgZXhpc3QgPSBpdGVtLm9wdGlvbnMuc29tZSgoaTogUHJvZHVjdFZhcmlhbnRPcHRpb24pID0+IGkub3B0aW9uLmlkID09PSBvcHRpb25JZCAmJiBpLnZhbHVlLmlkID09PSB2YWx1ZUlkKTtcbiAgICAgIGlmIChleGlzdCkge1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9XG4gIGZpbmRVc2VyQmFzZUluZm8odXNlcklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5nZXRQdWJsaWNVc2VySW5mbyh1c2VySWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuZnVsbG5hbWUgPSByZXMubmFtZTtcbiAgICAgICAgdGhpcy51c2VybmFtZSA9IHJlcy51c2VybmFtZTtcbiAgICAgICAgdGhpcy51c2VyID0gcmVzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGZpbmRXaXNobGlzdEJ5KCkge1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZmluZFdpc2hsaXN0QnkodGhpcy5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmluV2lzaExpc3QgPSByZXMuZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25XaXNoKGU6IGFueSkge1xuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0ZWQoKSkge1xuICAgICAgaWYgKHRoaXMuaW5XaXNoTGlzdCkge1xuICAgICAgICB0aGlzLnJlbW92ZUZyb21XaXNobGlzdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRUb1dpc2hsaXN0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+ivt+WFiOeZu+W9lScpO1xuICAgIH1cbiAgfVxuICBvbkNhcnQoZTogYW55KSB7XG4gICAgY29uc3QgZGF0YSA9IHsgcHJvZHVjdElkOiB0aGlzLmlkLCBxdWFudGl0eTogMSB9O1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVmFyaWFudCkge1xuICAgICAgZGF0YVsndmFyaWFudElkJ10gPSB0aGlzLnNlbGVjdGVkVmFyaWFudC5pZDtcbiAgICB9XG4gICAgdGhpcy5jYXJ0U2VydmljZS5jcmVhdGUoZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jYXJ0RXZlbnQuZW1pdChDYXJ0RXZlbnRUeXBlLkNhcnRBZGQpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIHJlbW92ZUZyb21XaXNobGlzdCgpIHtcbiAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnJlbW92ZUZyb21XaXNobGlzdCh0aGlzLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmluV2lzaExpc3QgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBhZGRUb1dpc2hsaXN0KCkge1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuYWRkVG9XaXNobGlzdCh0aGlzLmlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmluV2lzaExpc3QgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBjaGVja291dChlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5hdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFyaWFudCkge1xuICAgICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvY2FydC9jaGVja291dC9wcm9kdWN0cy8ke3RoaXMuaWR9P3ZhcmlhbnQtaWQ9JHt0aGlzLnNlbGVjdGVkVmFyaWFudC5pZH1gKTtcbiAgICAgICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FydC9jaGVja291dC9wcm9kdWN0cy8ke3RoaXMuaWR9YF0sIHsgcXVlcnlQYXJhbXM6IHsgdmFyaWFudDogdGhpcy5zZWxlY3RlZFZhcmlhbnQuaWQgfSB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FydC9jaGVja291dC9wcm9kdWN0cy8ke3RoaXMuaWR9L3ZhcmlhbnRzLyR7dGhpcy5zZWxlY3RlZFZhcmlhbnQuaWR9YF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2NhcnQvY2hlY2tvdXQvcHJvZHVjdHMvJHt0aGlzLmlkfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKCfor7flhYjnmbvlvZUnKTtcbiAgICB9XG4gIH1cblxuICBvbk9wdGlvbkNoYW5nZShlKSB7XG4gICAgbGV0IGNyaXRlcmlhOiBhbnkgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkVmFyaWFudC5vcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY3JpdGVyaWEucHVzaCh7XG4gICAgICAgIG9wdGlvbklkOiBpdGVtLm9wdGlvbi5pZCA9PT0gZS5vcHRpb24uaWQgPyBlLm9wdGlvbi5pZCA6IGl0ZW0ub3B0aW9uLmlkLFxuICAgICAgICB2YWx1ZUlkOiBpdGVtLm9wdGlvbi5pZCA9PT0gZS5vcHRpb24uaWQgPyBlLnZhbHVlLmlkIDogaXRlbS52YWx1ZS5pZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gY29uc3QgY3JpdGVyaWEgPSBbXG4gICAgLy8gICB7IG9wdGlvbklkOiAnMjQ5MDA4ODU1Mjk0NTQ1OTIwJywgdmFsdWVJZDogJzI0OTAwODg1NTI5ODc0MDIyNCcgfSwgLy8gY29sb3I6IHJlZFxuICAgIC8vICAgeyBvcHRpb25JZDogJzI0ODY2MTcxNTk1NTM1NTY0OCcsIHZhbHVlSWQ6ICcyNDkwMDExMzAwNjE4NjA4NjUnIH0sIC8vIHNpemU6IDI1NkdCXG4gICAgLy8gXTtcblxuICAgIC8vIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgdmFyaWFudCBtYXRjaGVzIGFsbCB0aGUgY3JpdGVyaWFcbiAgICBjb25zdCBtYXRjaGVzQWxsQ3JpdGVyaWEgPSAodmFyaWFudCwgY3JpdGVyaWEpID0+IHtcbiAgICAgIHJldHVybiBfLmV2ZXJ5KGNyaXRlcmlhLCAoY3JpdGVyaW9uKSA9PiB7XG4gICAgICAgIHJldHVybiBfLnNvbWUodmFyaWFudC5vcHRpb25zLCAobykgPT4gby5vcHRpb24uaWQgPT09IGNyaXRlcmlvbi5vcHRpb25JZCAmJiBvLnZhbHVlLmlkID09PSBjcml0ZXJpb24udmFsdWVJZCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY3JpdGVyaWEgYmFzZWQgb24gYSBtYXRjaGluZyB2YXJpYW50XG4gICAgY29uc3QgdXBkYXRlQ3JpdGVyaWFGcm9tVmFyaWFudCA9ICh2YXJpYW50KSA9PiB7XG4gICAgICByZXR1cm4gXy5tYXAodmFyaWFudC5vcHRpb25zLCAobykgPT4gKHtcbiAgICAgICAgb3B0aW9uSWQ6IG8ub3B0aW9uLmlkLFxuICAgICAgICB2YWx1ZUlkOiBvLnZhbHVlLmlkLFxuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSB2YXJpYW50IHRoYXQgbWF0Y2hlcyBhbGwgdGhlIGNyaXRlcmlhXG4gICAgY29uc3QgbWF0Y2hpbmdWYXJpYW50ID0gXy5maW5kKHRoaXMudmFyaWFudHMsICh2YXJpYW50KSA9PiBtYXRjaGVzQWxsQ3JpdGVyaWEodmFyaWFudCwgY3JpdGVyaWEpKTtcbiAgICB0aGlzLnNlbGVjdGVkVmFyaWFudCA9IG1hdGNoaW5nVmFyaWFudCE7XG4gICAgLy8gY29uc3QgdXBkYXRlZENyaXRlcmlhID0gbWF0Y2hpbmdWYXJpYW50ID8gdXBkYXRlQ3JpdGVyaWFGcm9tVmFyaWFudChtYXRjaGluZ1ZhcmlhbnQpIDogW107XG4gIH1cbn1cbiIsIkBpZiAocHJvZHVjdCkge1xuICA8cm9sYXRlY2gtY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IHctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1kOnctMS8yIG1kOnAtMyBweS0zXCI+XG4gICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LW1lZGlhIFttZWRpYV09XCJwcm9kdWN0Lm1lZGlhXCI+PC9yb2xhdGVjaC1wcm9kdWN0LW1lZGlhPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWQ6dy0xLzIgbWQ6cC0zIHB5LTNcIj5cbiAgICAgICAgPHJvbGF0ZWNoLXByb2R1Y3QtaW5mbyBbbmFtZV09XCJwcm9kdWN0Lm5hbWVcIiBbZGVzY3JpcHRpb25dPVwicHJvZHVjdC5kZXNjcmlwdGlvblwiPiA8L3JvbGF0ZWNoLXByb2R1Y3QtaW5mbz5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIHByb2R1Y3Qub3B0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgPHJvbGF0ZWNoLXByb2R1Y3Qtb3B0aW9uXG4gICAgICAgICAgICBbb3B0aW9uXT1cIm9wdGlvblwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRWYXJpYW50IHwgc2VsZWN0ZWQ6IG9wdGlvblwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uT3B0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgID48L3JvbGF0ZWNoLXByb2R1Y3Qtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LXByaWNpbmdcbiAgICAgICAgICAod2lzaCk9XCJvbldpc2goJGV2ZW50KVwiXG4gICAgICAgICAgW2luV2lzaExpc3RdPVwiaW5XaXNoTGlzdFwiXG4gICAgICAgICAgW3Byb2R1Y3RdPVwicHJvZHVjdFwiXG4gICAgICAgICAgW3ByaWNlXT1cInNlbGVjdGVkVmFyaWFudCA/IHNlbGVjdGVkVmFyaWFudC5wcmljZSA6IHByb2R1Y3QucHJpY2VcIlxuICAgICAgICA+PC9yb2xhdGVjaC1wcm9kdWN0LXByaWNpbmc+XG4gICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LWFjdGlvblxuICAgICAgICAgIFtwcm9kdWN0XT1cInByb2R1Y3RcIlxuICAgICAgICAgIChjaGVja291dCk9XCJjaGVja291dCgkZXZlbnQpXCJcbiAgICAgICAgICAoZGVwb3NpdCk9XCJjaGVja291dCgkZXZlbnQpXCJcbiAgICAgICAgICAoY2FydCk9XCJvbkNhcnQoJGV2ZW50KVwiXG4gICAgICAgID48L3JvbGF0ZWNoLXByb2R1Y3QtYWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB5LTNcIj5cbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPHJvbGF0ZWNoLXByb2R1Y3Qtb3duZXItcmVuZGVyZXJcbiAgICAgICAgW25hbWVdPVwiZnVsbG5hbWVcIlxuICAgICAgICBbYXZhdGFyXT1cInVzZXI/LmF2YXRhclwiXG4gICAgICAgIFt1c2VybmFtZV09XCJ1c2VybmFtZVwiXG4gICAgICA+PC9yb2xhdGVjaC1wcm9kdWN0LW93bmVyLXJlbmRlcmVyPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgIEBmb3IgKHNlY3Rpb24gb2YgcHJvZHVjdC5zZWN0aW9uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxyb2xhdGVjaC1wcm9kdWN0LXNlY3Rpb24gW3NlY3Rpb25dPVwic2VjdGlvblwiIFtyZXZlcnNlXT1cIiRpbmRleCAlIDIgIT09IDBcIj48L3JvbGF0ZWNoLXByb2R1Y3Qtc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPHJvbGF0ZWNoLWNvbW1lbnRzIFtpdGVtSWRdPVwicHJvZHVjdC5pZFwiPjwvcm9sYXRlY2gtY29tbWVudHM+XG4gICAgPC9kaXY+XG4gIDwvcm9sYXRlY2gtY29udGFpbmVyPlxufVxuIl19
@@ -1,18 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class SelectedPipe {
4
- transform(variant, option) {
5
- const findedOption = variant.options.find((item) => item.option.id === option.id);
6
- return findedOption?.value;
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: SelectedPipe, isStandalone: true, name: "selected" }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SelectedPipe, decorators: [{
12
- type: Pipe,
13
- args: [{
14
- name: 'selected',
15
- standalone: true,
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0ZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LWRldGFpbHMvc2VsZWN0ZWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsU0FBUyxDQUFDLE9BQXVCLEVBQUUsTUFBcUI7UUFDdEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRixPQUFPLFlBQVksRUFBRSxLQUFLLENBQUM7SUFDN0IsQ0FBQzs4R0FKVSxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSnhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2R1Y3RPcHRpb24sIFByb2R1Y3RPcHRpb25WYWx1ZSwgUHJvZHVjdFZhcmlhbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnc2VsZWN0ZWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RlZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhcmlhbnQ6IFByb2R1Y3RWYXJpYW50LCBvcHRpb246IFByb2R1Y3RPcHRpb24pOiBhbnkge1xuICAgIGNvbnN0IGZpbmRlZE9wdGlvbiA9IHZhcmlhbnQub3B0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtLm9wdGlvbi5pZCA9PT0gb3B0aW9uLmlkKTtcbiAgICByZXR1cm4gZmluZGVkT3B0aW9uPy52YWx1ZTtcbiAgfVxufVxuIl19
@@ -1,43 +0,0 @@
1
- import { Component, inject, signal, ViewEncapsulation } from '@angular/core';
2
- import { ProductService } from '@rolatech/angular-services';
3
- import { RichViewComponent, RichItemComponent, AngularComponentsModule } from '@rolatech/angular-components';
4
- import { AngularCommonModule } from '@rolatech/angular-common';
5
- import { ProductItemComponent } from '../../../components';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- export class ProductIndexComponent {
9
- constructor() {
10
- this.productService = inject(ProductService);
11
- // products: Product[] = [];
12
- this.products = signal([]);
13
- this.loading = false;
14
- }
15
- ngOnInit() {
16
- this.findProducts();
17
- }
18
- findProducts() {
19
- this.loading = true;
20
- const options = {
21
- sort: 'updatedAt desc',
22
- // filter: 'published:true',
23
- };
24
- this.productService.find(options).subscribe({
25
- next: (res) => {
26
- // this.products = res.data;
27
- this.products.set(res.data);
28
- this.meta = res.meta;
29
- this.loading = false;
30
- },
31
- error: (error) => {
32
- this.loading = false;
33
- },
34
- });
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", 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 thumbnailRatio=\"square\"\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]] }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductIndexComponent, decorators: [{
40
- type: Component,
41
- 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 thumbnailRatio=\"square\"\n ></rolatech-rich-item>\n }\n }\n </rolatech-rich-view>\n }\n</div>\n" }]
42
- }], ctorParameters: () => [] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1pbmRleC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QvcHJvZHVjdC1pbmRleC9wcm9kdWN0LWluZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LWluZGV4L3Byb2R1Y3QtaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQixTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVUzRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDO1FBTkEsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsNEJBQTRCO1FBQzVCLGFBQVEsR0FBRyxNQUFNLENBQVksRUFBRSxDQUFDLENBQUM7UUFHakMsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUNELENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtZQUN0Qiw0QkFBNEI7U0FDN0IsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDakIsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTdCVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixrRkNmbEMsdTdDQW1DQSx5REQxQlksbUJBQW1CLDhCQUFFLHVCQUF1QiwrQkFBRSxpQkFBaUIsd0pBQUUsaUJBQWlCOzsyRkFNakYscUJBQXFCO2tCQVRqQyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxpQkFHcEcsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgT25Jbml0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0U2VydmljZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL3Byb2R1Y3QnO1xuaW1wb3J0IHsgUmljaFZpZXdDb21wb25lbnQsIFJpY2hJdGVtQ29tcG9uZW50LCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQW5ndWxhckNvbW1vbk1vZHVsZSB9IGZyb20gJ0Byb2xhdGVjaC9hbmd1bGFyLWNvbW1vbic7XG5pbXBvcnQgeyBQcm9kdWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtcHJvZHVjdC1pbmRleCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgUmljaFZpZXdDb21wb25lbnQsIFJpY2hJdGVtQ29tcG9uZW50LCBQcm9kdWN0SXRlbUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWluZGV4LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtaW5kZXguY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdEluZGV4Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvZHVjdFNlcnZpY2UgPSBpbmplY3QoUHJvZHVjdFNlcnZpY2UpO1xuICAvLyBwcm9kdWN0czogUHJvZHVjdFtdID0gW107XG4gIHByb2R1Y3RzID0gc2lnbmFsPFByb2R1Y3RbXT4oW10pO1xuXG4gIG1ldGE6IGFueTtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maW5kUHJvZHVjdHMoKTtcbiAgfVxuICBmaW5kUHJvZHVjdHMoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgc29ydDogJ3VwZGF0ZWRBdCBkZXNjJyxcbiAgICAgIC8vIGZpbHRlcjogJ3B1Ymxpc2hlZDp0cnVlJyxcbiAgICB9O1xuICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuZmluZChvcHRpb25zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIC8vIHRoaXMucHJvZHVjdHMgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5wcm9kdWN0cy5zZXQocmVzLmRhdGEpO1xuICAgICAgICB0aGlzLm1ldGEgPSByZXMubWV0YTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaW4tdy1bMzIwcHhdIG1heC13LVsxMTIwcHhdIG0tYXV0b1wiPlxuICA8ZGl2IGNsYXNzPVwicC0zIGhpZGRlbiBtZDpibG9jayB0ZXh0LTJ4bCBmb250LW1lZGl1bVwiPuWFqOmDqOWVhuWTgTwvZGl2PlxuICBAaWYgKGxvYWRpbmcpIHtcbiAgICBAZm9yIChudW1iZXIgb2YgWzAsIDEsIDIsIDMsIDQsIDVdOyB0cmFjayBudW1iZXIpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFuaW1hdGUtcHVsc2UgbXQtMyBtci00IGN1cnNvci1wb2ludGVyIHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC1maXQgdy0yLzUgbWQ6dy0xLzQgYXNwZWN0LXZpZGVvIGhvdmVyOmJnLVstLXJ0LWJhc2UtYmFja2dyb3VuZF0gcm91bmRlZC1sZ1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0zLzUgbWQ6dy0zLzQgbWwtMyBweS0xIGZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNCBiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHJvdW5kZWQgY29sLXNwYW4tMlwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMiBiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHJvdW5kZWQgY29sLXNwYW4tMVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMiBiZy1bLS1ydC1iYXNlLWJhY2tncm91bmRdIHJvdW5kZWQgY29sLXNwYW4tMSBweS0xXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTIgYmctWy0tcnQtYmFzZS1iYWNrZ3JvdW5kXSByb3VuZGVkIGNvbC1zcGFuLTIgcHktMVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPHJvbGF0ZWNoLXJpY2gtdmlldyB3cmFwPlxuICAgICAgQGZvciAoaXRlbSBvZiBwcm9kdWN0cygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIEBkZWZlciB7XG4gICAgICAgICAgPHJvbGF0ZWNoLXJpY2gtaXRlbVxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycuLycsIGl0ZW0uaWRdXCJcbiAgICAgICAgICAgIFt0aHVtYm5haWxdPVwiaXRlbS5tZWRpYVswXS51cmwgKyAnIXc0MDAnXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW3N1YnRpdGxlXT1cIml0ZW0uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgW3ByaWNlXT1cIml0ZW0ucHJpY2UgLyAxMDBcIlxuICAgICAgICAgICAgdGh1bWJuYWlsUmF0aW89XCJzcXVhcmVcIlxuICAgICAgICAgID48L3JvbGF0ZWNoLXJpY2gtaXRlbT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvcm9sYXRlY2gtcmljaC12aWV3PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,50 +0,0 @@
1
- import { Component, inject } from '@angular/core';
2
- import { AngularCommonModule } from '@rolatech/angular-common';
3
- import { AngularComponentsModule, BaseComponent, ContainerComponent, ListComponent } from '@rolatech/angular-components';
4
- import { ProductService } from '@rolatech/angular-services';
5
- import { ProductCategoryService } from '../../../services';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/router";
8
- export class ProductLayoutComponent extends BaseComponent {
9
- constructor() {
10
- super(...arguments);
11
- this.categories = [];
12
- this.categoryService = inject(ProductCategoryService);
13
- this.productService = inject(ProductService);
14
- this.selectIndex = 0;
15
- }
16
- ngOnInit() {
17
- this.findCategories();
18
- }
19
- findCategories() {
20
- this.categoryService.find({}).subscribe({
21
- next: (res) => {
22
- this.categories = res.data;
23
- },
24
- });
25
- }
26
- loadProductByCategoryIndex(index) {
27
- this.selectIndex = index;
28
- const id = this.categories[index].id;
29
- if (index === 0) {
30
- this.router.navigate([`./`]);
31
- // this.productService.find({}).subscribe({
32
- // next: res => {
33
- // }
34
- // })
35
- }
36
- else {
37
- this.router.navigate([`../categories/${id}`], {
38
- relativeTo: this.route,
39
- });
40
- }
41
- }
42
- nextCategory() { }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: ProductLayoutComponent, isStandalone: true, selector: "rolatech-product-layout", usesInheritance: true, ngImport: i0, template: "@if (categories) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 md:h-auto min-w-[240px]\">\n <div class=\"hidden md:block text-2xl font-medium py-3 md:px-1 px-3\">\u5206\u7C7B</div>\n <div\n class=\"flex flex-row md:flex-col md:h-full items-center md:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center md:mb-1 mr-2 md:mr-0\"\n routerLinkActive=\"product-layout-active\"\n routerLink=\"./\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">\u5168\u90E8</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center mr-2 md:mr-0 md:mb-1\"\n routerLinkActive=\"product-layout-active\"\n [routerLink]=\"['./categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [".product-layout-active{border-radius:var(--rt-rounded-base, 8px);background-color:var(-rt-base-background, #fff);color:var(--rt-brand-color, #000)}@media (max-width: 768px){.product-layout-active{background-color:var(--rt-text-primary, #000);color:var(--rt-text-primary-inverse, #000)}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }] }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductLayoutComponent, decorators: [{
47
- type: Component,
48
- args: [{ selector: 'rolatech-product-layout', standalone: true, imports: [AngularCommonModule, AngularComponentsModule, ContainerComponent, ListComponent], template: "@if (categories) {\n <rolatech-container>\n <div class=\"flex flex-col md:flex-row min-w-[320px] max-w-[1280px] m-auto\">\n <div class=\"h-14 md:h-auto min-w-[240px]\">\n <div class=\"hidden md:block text-2xl font-medium py-3 md:px-1 px-3\">\u5206\u7C7B</div>\n <div\n class=\"flex flex-row md:flex-col md:h-full items-center md:items-start h-14 overflow-x-scroll overflow-y-hidden scrollbar-hide whitespace-pre\"\n >\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center md:mb-1 mr-2 md:mr-0\"\n routerLinkActive=\"product-layout-active\"\n routerLink=\"./\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">\u5168\u90E8</span>\n </a>\n @for (category of categories; track category; let index = $index) {\n <a\n class=\"cursor-pointer h-8 bg-[--rt-badge-chip-background] md:bg-[--rt-base-background] rounded-md flex items-center mr-2 md:mr-0 md:mb-1\"\n routerLinkActive=\"product-layout-active\"\n [routerLink]=\"['./categories/', category.id]\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n >\n <span class=\"md:px-1 px-3 text-md md:text-lg\">{{ category.name }}</span>\n </a>\n }\n </div>\n </div>\n <div class=\"w-full\">\n <router-outlet></router-outlet>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [".product-layout-active{border-radius:var(--rt-rounded-base, 8px);background-color:var(-rt-base-background, #fff);color:var(--rt-brand-color, #000)}@media (max-width: 768px){.product-layout-active{background-color:var(--rt-text-primary, #000);color:var(--rt-text-primary-inverse, #000)}}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}\n"] }]
49
- }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXByb2R1Y3Qvc3JjL2xpYi9wYWdlcy9wcm9kdWN0L3Byb2R1Y3QtbGF5b3V0L3Byb2R1Y3QtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1wcm9kdWN0L3NyYy9saWIvcGFnZXMvcHJvZHVjdC9wcm9kdWN0LWxheW91dC9wcm9kdWN0LWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXpILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBUzNELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxhQUFhO0lBUHpEOztRQVFFLGVBQVUsR0FBc0IsRUFBRSxDQUFDO1FBQ25DLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakQsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7S0E0QmpCO0lBMUJDLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUNELGNBQWM7UUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdEMsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDBCQUEwQixDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckMsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdCLDJDQUEyQztZQUMzQyxtQkFBbUI7WUFDbkIsTUFBTTtZQUNOLEtBQUs7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQzVDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSzthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELFlBQVksS0FBSSxDQUFDOzhHQS9CTixzQkFBc0I7a0dBQXRCLHNCQUFzQiwwR0NkbkMsc2tEQWtDQSxzY0R4QlksbUJBQW1CLDBwQkFBRSx1QkFBdUIsK0JBQUUsa0JBQWtCOzsyRkFJL0Qsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50LCBDb250YWluZXJDb21wb25lbnQsIExpc3RDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IFByb2R1Y3RDYXRlZ29yeSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUHJvZHVjdFNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1wcm9kdWN0LWxheW91dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgQ29udGFpbmVyQ29tcG9uZW50LCBMaXN0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtbGF5b3V0LmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdExheW91dENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjYXRlZ29yaWVzOiBQcm9kdWN0Q2F0ZWdvcnlbXSA9IFtdO1xuICBjYXRlZ29yeVNlcnZpY2UgPSBpbmplY3QoUHJvZHVjdENhdGVnb3J5U2VydmljZSk7XG4gIHByb2R1Y3RTZXJ2aWNlID0gaW5qZWN0KFByb2R1Y3RTZXJ2aWNlKTtcbiAgc2VsZWN0SW5kZXggPSAwO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmluZENhdGVnb3JpZXMoKTtcbiAgfVxuICBmaW5kQ2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLmNhdGVnb3J5U2VydmljZS5maW5kKHt9KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlcy5kYXRhO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICBsb2FkUHJvZHVjdEJ5Q2F0ZWdvcnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RJbmRleCA9IGluZGV4O1xuICAgIGNvbnN0IGlkID0gdGhpcy5jYXRlZ29yaWVzW2luZGV4XS5pZDtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLi9gXSk7XG4gICAgICAvLyB0aGlzLnByb2R1Y3RTZXJ2aWNlLmZpbmQoe30pLnN1YnNjcmliZSh7XG4gICAgICAvLyAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgLi4vY2F0ZWdvcmllcy8ke2lkfWBdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgbmV4dENhdGVnb3J5KCkge31cbn1cbiIsIkBpZiAoY2F0ZWdvcmllcykge1xuICA8cm9sYXRlY2gtY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IG1pbi13LVszMjBweF0gbWF4LXctWzEyODBweF0gbS1hdXRvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaC0xNCBtZDpoLWF1dG8gbWluLXctWzI0MHB4XVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIG1kOmJsb2NrIHRleHQtMnhsIGZvbnQtbWVkaXVtIHB5LTMgbWQ6cHgtMSBweC0zXCI+5YiG57G7PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgbWQ6ZmxleC1jb2wgbWQ6aC1mdWxsIGl0ZW1zLWNlbnRlciBtZDppdGVtcy1zdGFydCBoLTE0IG92ZXJmbG93LXgtc2Nyb2xsIG92ZXJmbG93LXktaGlkZGVuIHNjcm9sbGJhci1oaWRlIHdoaXRlc3BhY2UtcHJlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGgtOCBiZy1bLS1ydC1iYWRnZS1jaGlwLWJhY2tncm91bmRdIG1kOmJnLVstLXJ0LWJhc2UtYmFja2dyb3VuZF0gcm91bmRlZC1tZCBmbGV4IGl0ZW1zLWNlbnRlciBtZDptYi0xIG1yLTIgbWQ6bXItMFwiXG4gICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicHJvZHVjdC1sYXlvdXQtYWN0aXZlXCJcbiAgICAgICAgICAgIHJvdXRlckxpbms9XCIuL1wiXG4gICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogdHJ1ZSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1kOnB4LTEgcHgtMyB0ZXh0LW1kIG1kOnRleHQtbGdcIj7lhajpg6g8L3NwYW4+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIEBmb3IgKGNhdGVnb3J5IG9mIGNhdGVnb3JpZXM7IHRyYWNrIGNhdGVnb3J5OyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgaC04IGJnLVstLXJ0LWJhZGdlLWNoaXAtYmFja2dyb3VuZF0gbWQ6YmctWy0tcnQtYmFzZS1iYWNrZ3JvdW5kXSByb3VuZGVkLW1kIGZsZXggaXRlbXMtY2VudGVyIG1yLTIgbWQ6bXItMCBtZDptYi0xXCJcbiAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInByb2R1Y3QtbGF5b3V0LWFjdGl2ZVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLi9jYXRlZ29yaWVzLycsIGNhdGVnb3J5LmlkXVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiB0cnVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1kOnB4LTEgcHgtMyB0ZXh0LW1kIG1kOnRleHQtbGdcIj57eyBjYXRlZ29yeS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvcm9sYXRlY2gtY29udGFpbmVyPlxufVxuIl19
@@ -1,24 +0,0 @@
1
- import { ProductLayoutComponent } from './product-layout/product-layout.component';
2
- import { ProductCategoryComponent } from './product-category/product-category.component';
3
- import { ProductDetailsComponent } from './product-details/product-details.component';
4
- export const productRoutes = [
5
- {
6
- path: '',
7
- component: ProductLayoutComponent,
8
- children: [
9
- {
10
- path: '',
11
- loadComponent: () => import('./product-index/product-index.component').then((x) => x.ProductIndexComponent),
12
- },
13
- {
14
- path: 'categories/:id',
15
- component: ProductCategoryComponent,
16
- },
17
- ],
18
- },
19
- {
20
- path: ':id',
21
- component: ProductDetailsComponent,
22
- },
23
- ];
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC5yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QvcHJvZHVjdC5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFXO0lBQ25DO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFFBQVEsRUFBRTtZQUNSO2dCQUNFLElBQUksRUFBRSxFQUFFO2dCQUNSLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQzthQUM1RztZQUNEO2dCQUNFLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFNBQVMsRUFBRSx3QkFBd0I7YUFDcEM7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsS0FBSztRQUNYLFNBQVMsRUFBRSx1QkFBdUI7S0FDbkM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFByb2R1Y3RMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtbGF5b3V0L3Byb2R1Y3QtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9kdWN0Q2F0ZWdvcnlDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtY2F0ZWdvcnkvcHJvZHVjdC1jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZHVjdERldGFpbHNDb21wb25lbnQgfSBmcm9tICcuL3Byb2R1Y3QtZGV0YWlscy9wcm9kdWN0LWRldGFpbHMuY29tcG9uZW50JztcbmV4cG9ydCBjb25zdCBwcm9kdWN0Um91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IFByb2R1Y3RMYXlvdXRDb21wb25lbnQsXG4gICAgY2hpbGRyZW46IFtcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9wcm9kdWN0LWluZGV4L3Byb2R1Y3QtaW5kZXguY29tcG9uZW50JykudGhlbigoeCkgPT4geC5Qcm9kdWN0SW5kZXhDb21wb25lbnQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ2NhdGVnb3JpZXMvOmlkJyxcbiAgICAgICAgY29tcG9uZW50OiBQcm9kdWN0Q2F0ZWdvcnlDb21wb25lbnQsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnOmlkJyxcbiAgICBjb21wb25lbnQ6IFByb2R1Y3REZXRhaWxzQ29tcG9uZW50LFxuICB9LFxuXTtcbiJdfQ==
@@ -1,12 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from "@angular/core";
4
- export class ProductManageContentComponent {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductManageContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ProductManageContentComponent, isStandalone: true, selector: "rolatech-product-manage-content", ngImport: i0, template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ProductManageContentComponent, decorators: [{
9
- type: Component,
10
- args: [{ selector: 'rolatech-product-manage-content', standalone: true, imports: [CommonModule], template: "<ng-content select=\"rolatech-toolbar\"></ng-content>\n<div class=\"p-3\">\n <ng-content></ng-content>\n</div>\n" }]
11
- }] });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1tYW5hZ2UtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLWNvbnRlbnQvcHJvZHVjdC1tYW5hZ2UtY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItcHJvZHVjdC9zcmMvbGliL3BhZ2VzL3Byb2R1Y3QtbWFuYWdlL3Byb2R1Y3QtbWFuYWdlLWNvbnRlbnQvcHJvZHVjdC1tYW5hZ2UtY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFTL0MsTUFBTSxPQUFPLDZCQUE2Qjs4R0FBN0IsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsMkZDVjFDLG1IQUlBLHlEREVZLFlBQVk7OzJGQUlYLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSxpQ0FBaUMsY0FDL0IsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xhdGVjaC1wcm9kdWN0LW1hbmFnZS1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LW1hbmFnZS1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3Byb2R1Y3QtbWFuYWdlLWNvbnRlbnQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0TWFuYWdlQ29udGVudENvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRlbnQgc2VsZWN0PVwicm9sYXRlY2gtdG9vbGJhclwiPjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJwLTNcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=