@rolatech/angular-cart 19.0.0-beta.4 → 19.0.0-beta.6

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, inject, ViewEncapsulation } from '@angular/core';
2
+ import { Component, inject, ViewEncapsulation, model } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { BaseComponent, ContainerComponent, ToolbarComponent, ThumbnailComponent } from '@rolatech/angular-components';
5
5
  import { AuthUserService } from '@rolatech/angular-auth';
@@ -9,7 +9,7 @@ import * as i1 from '@angular/material/button';
9
9
  import { MatButtonModule } from '@angular/material/button';
10
10
  import { FixedPipe, OptionsFormatPipe } from '@rolatech/angular-common';
11
11
  import { ProductType } from '@rolatech/angular-product';
12
- import { C as CartCheckoutSummaryComponent, a as CartCheckoutItemComponent, b as CartCheckoutActionComponent } from './rolatech-angular-cart-rolatech-angular-cart-CYsylW_P.mjs';
12
+ import { C as CartCheckoutSummaryComponent, a as CartCheckoutItemComponent, b as CartCheckoutActionComponent } from './rolatech-angular-cart-rolatech-angular-cart-BXV_DS6w.mjs';
13
13
  import * as i4 from '@angular/cdk/text-field';
14
14
  import { TextFieldModule } from '@angular/cdk/text-field';
15
15
  import * as i2 from '@angular/material/form-field';
@@ -20,10 +20,10 @@ import * as i1$1 from '@angular/forms';
20
20
  import { FormsModule } from '@angular/forms';
21
21
 
22
22
  class CartCheckoutIndexComponent {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: CartCheckoutIndexComponent, isStandalone: true, selector: "rolatech-cart-checkout-index", ngImport: i0, template: "<p>cart-checkout-index works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: CartCheckoutIndexComponent, isStandalone: true, selector: "rolatech-cart-checkout-index", ngImport: i0, template: "<p>cart-checkout-index works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutIndexComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutIndexComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'rolatech-cart-checkout-index', imports: [CommonModule], template: "<p>cart-checkout-index works!</p>\n" }]
29
29
  }] });
@@ -66,12 +66,12 @@ class CartCheckoutCourseComponent extends BaseComponent {
66
66
  },
67
67
  });
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutCourseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartCheckoutCourseComponent, isStandalone: true, selector: "rolatech-cart-checkout-course", usesInheritance: true, ngImport: i0, template: "@if (course) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u8BFE\u7A0B\u4FE1\u606F</div>\n @if (course) {\n <div>\n <div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course.media) {\n <div class=\"object-cover aspect-video rounded-lg\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-medium\">{{ course.name }}</span>\n <span class=\"text-sm text-[--rt-text-secondary]\">\u7C7B\u578B {{ type[course.type] }}</span>\n </div>\n </div>\n <div>\u00A5{{ course.pricing[0].total | fixed }}</div>\n </div>\n @if (course.schedule) {\n <div class=\"flex justify-between py-3\">\n <span>\u5F00\u8BFE\u65E5\u671F</span>\n <span>{{ course.schedule[0].startAt }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n <div class=\"divide-y\">\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u8BA2\u5355\u91D1\u989D </span>\n <span> \u00A5{{ course.pricing[0].total | fixed }} </span>\n </div>\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ course.pricing[0].total | fixed }}</span>\n </div>\n <a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"createOrder()\">\u63D0\u4EA4\u8BA2\u5355</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [""], dependencies: [{ kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: FixedPipe, name: "fixed" }], deferBlockDependencies: [() => [ThumbnailComponent]] }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutCourseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartCheckoutCourseComponent, isStandalone: true, selector: "rolatech-cart-checkout-course", usesInheritance: true, ngImport: i0, template: "@if (course) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u8BFE\u7A0B\u4FE1\u606F</div>\n @if (course) {\n <div>\n <div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-(--rt-raised-background) h-fit\">\n @if (course.media) {\n <div class=\"object-cover aspect-video rounded-lg\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-medium\">{{ course.name }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\">\u7C7B\u578B {{ type[course.type] }}</span>\n </div>\n </div>\n <div>\u00A5{{ course.pricing[0].total | fixed }}</div>\n </div>\n @if (course.schedule) {\n <div class=\"flex justify-between py-3\">\n <span>\u5F00\u8BFE\u65E5\u671F</span>\n <span>{{ course.schedule[0].startAt }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n <div class=\"divide-y divide-(--rt-10-percent-layer)\">\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u8BA2\u5355\u91D1\u989D </span>\n <span> \u00A5{{ course.pricing[0].total | fixed }} </span>\n </div>\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ course.pricing[0].total | fixed }}</span>\n </div>\n <a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"createOrder()\">\u63D0\u4EA4\u8BA2\u5355</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [""], dependencies: [{ kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: FixedPipe, name: "fixed" }], deferBlockDependencies: [() => [ThumbnailComponent]] }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutCourseComponent, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutCourseComponent, decorators: [{
73
73
  type: Component,
74
- args: [{ selector: 'rolatech-cart-checkout-course', imports: [ContainerComponent, ToolbarComponent, ThumbnailComponent, MatButtonModule, FixedPipe], template: "@if (course) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u8BFE\u7A0B\u4FE1\u606F</div>\n @if (course) {\n <div>\n <div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course.media) {\n <div class=\"object-cover aspect-video rounded-lg\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-medium\">{{ course.name }}</span>\n <span class=\"text-sm text-[--rt-text-secondary]\">\u7C7B\u578B {{ type[course.type] }}</span>\n </div>\n </div>\n <div>\u00A5{{ course.pricing[0].total | fixed }}</div>\n </div>\n @if (course.schedule) {\n <div class=\"flex justify-between py-3\">\n <span>\u5F00\u8BFE\u65E5\u671F</span>\n <span>{{ course.schedule[0].startAt }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n <div class=\"divide-y\">\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u8BA2\u5355\u91D1\u989D </span>\n <span> \u00A5{{ course.pricing[0].total | fixed }} </span>\n </div>\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ course.pricing[0].total | fixed }}</span>\n </div>\n <a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"createOrder()\">\u63D0\u4EA4\u8BA2\u5355</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n" }]
74
+ args: [{ selector: 'rolatech-cart-checkout-course', imports: [ContainerComponent, ToolbarComponent, ThumbnailComponent, MatButtonModule, FixedPipe], template: "@if (course) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u8BFE\u7A0B\u4FE1\u606F</div>\n @if (course) {\n <div>\n <div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-(--rt-raised-background) h-fit\">\n @if (course.media) {\n <div class=\"object-cover aspect-video rounded-lg\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-medium\">{{ course.name }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\">\u7C7B\u578B {{ type[course.type] }}</span>\n </div>\n </div>\n <div>\u00A5{{ course.pricing[0].total | fixed }}</div>\n </div>\n @if (course.schedule) {\n <div class=\"flex justify-between py-3\">\n <span>\u5F00\u8BFE\u65E5\u671F</span>\n <span>{{ course.schedule[0].startAt }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n <div class=\"divide-y divide-(--rt-10-percent-layer)\">\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u8BA2\u5355\u91D1\u989D </span>\n <span> \u00A5{{ course.pricing[0].total | fixed }} </span>\n </div>\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ course.pricing[0].total | fixed }}</span>\n </div>\n <a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"createOrder()\">\u63D0\u4EA4\u8BA2\u5355</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n" }]
75
75
  }] });
76
76
 
77
77
  class CartCheckoutProductComponent extends BaseComponent {
@@ -91,7 +91,7 @@ class CartCheckoutProductComponent extends BaseComponent {
91
91
  }
92
92
  createOrder() {
93
93
  this.orderService
94
- .create({ type: 'PRODUCT', productId: this.id, note: this.note, shippingAddress: this.address })
94
+ .create({ type: 'PRODUCT', productId: this.id, note: this.note, shippingAddress: this.address, quantity: this.quantity })
95
95
  .subscribe({
96
96
  next: (res) => {
97
97
  this.router.navigateByUrl(`/orders/${res.data.id}`);
@@ -109,10 +109,10 @@ class CartCheckoutProductComponent extends BaseComponent {
109
109
  },
110
110
  });
111
111
  }
112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutProductComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartCheckoutProductComponent, isStandalone: true, selector: "rolatech-cart-checkout-product", usesInheritance: true, ngImport: i0, template: "@if (product) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"product.name\"\n [description]=\"product.description\"\n [thumbnail]=\"product.media[0].url + '!w200'\"\n [price]=\"product.price\"\n [(quantity)]=\"quantity\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <div class=\"text-md py-2\">\u6536\u8D27\u4EBA\u4FE1\u606F</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u59D3\u540D</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7535\u8BDD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7701\u4EFD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u57CE\u5E02</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5730\u533A</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>\u8BE6\u7EC6\u5730\u5740</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address.detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n <div>\n <div class=\"text-md\">\u5907\u6CE8</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [deposit]=\"product.deposit\"></rolatech-cart-checkout-summary>\n } @else {\n <rolatech-cart-checkout-summary [total]=\"product.price\"></rolatech-cart-checkout-summary>\n }\n <rolatech-cart-checkout-action\n (create)=\"createOrder()\"\n [title]=\"product.priceType && product.priceType.toString() === 'FIXED' ? '\u63D0\u4EA4\u8BA2\u5355' : '\u63D0\u4EA4\u8BA2\u5355'\"\n ></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: CartCheckoutSummaryComponent, selector: "rolatech-cart-checkout-summary", inputs: ["deposit", "total"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "component", type: CartCheckoutActionComponent, selector: "rolatech-cart-checkout-action", inputs: ["title"], outputs: ["create"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: TextFieldModule }], encapsulation: i0.ViewEncapsulation.None }); }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutProductComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartCheckoutProductComponent, isStandalone: true, selector: "rolatech-cart-checkout-product", usesInheritance: true, ngImport: i0, template: "@if (product) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"product.name\"\n [description]=\"product.description\"\n [thumbnail]=\"product.media[0].url + '!w200'\"\n [price]=\"product.price\"\n [(quantity)]=\"quantity\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <div class=\"text-md py-2\">\u6536\u8D27\u4EBA\u4FE1\u606F</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u59D3\u540D</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7535\u8BDD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7701\u4EFD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u57CE\u5E02</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5730\u533A</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>\u8BE6\u7EC6\u5730\u5740</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address.detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n <div>\n <div class=\"text-md\">\u5907\u6CE8</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [deposit]=\"product.deposit\"></rolatech-cart-checkout-summary>\n } @else {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [quantity]=\"quantity\"></rolatech-cart-checkout-summary>\n }\n <rolatech-cart-checkout-action\n (create)=\"createOrder()\"\n [title]=\"product.priceType && product.priceType.toString() === 'FIXED' ? '\u63D0\u4EA4\u8BA2\u5355' : '\u63D0\u4EA4\u8BA2\u5355'\"\n ></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: CartCheckoutSummaryComponent, selector: "rolatech-cart-checkout-summary", inputs: ["deposit", "total", "quantity"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "component", type: CartCheckoutActionComponent, selector: "rolatech-cart-checkout-action", inputs: ["title"], outputs: ["create"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: TextFieldModule }], encapsulation: i0.ViewEncapsulation.None }); }
114
114
  }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutProductComponent, decorators: [{
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutProductComponent, decorators: [{
116
116
  type: Component,
117
117
  args: [{ selector: 'rolatech-cart-checkout-product', imports: [
118
118
  ContainerComponent,
@@ -125,7 +125,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
125
125
  MatFormFieldModule,
126
126
  MatInputModule,
127
127
  TextFieldModule,
128
- ], encapsulation: ViewEncapsulation.None, template: "@if (product) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"product.name\"\n [description]=\"product.description\"\n [thumbnail]=\"product.media[0].url + '!w200'\"\n [price]=\"product.price\"\n [(quantity)]=\"quantity\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <div class=\"text-md py-2\">\u6536\u8D27\u4EBA\u4FE1\u606F</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u59D3\u540D</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7535\u8BDD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7701\u4EFD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u57CE\u5E02</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5730\u533A</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>\u8BE6\u7EC6\u5730\u5740</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address.detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n <div>\n <div class=\"text-md\">\u5907\u6CE8</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [deposit]=\"product.deposit\"></rolatech-cart-checkout-summary>\n } @else {\n <rolatech-cart-checkout-summary [total]=\"product.price\"></rolatech-cart-checkout-summary>\n }\n <rolatech-cart-checkout-action\n (create)=\"createOrder()\"\n [title]=\"product.priceType && product.priceType.toString() === 'FIXED' ? '\u63D0\u4EA4\u8BA2\u5355' : '\u63D0\u4EA4\u8BA2\u5355'\"\n ></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: ["mat-form-field{width:100%}\n"] }]
128
+ ], encapsulation: ViewEncapsulation.None, template: "@if (product) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"product.name\"\n [description]=\"product.description\"\n [thumbnail]=\"product.media[0].url + '!w200'\"\n [price]=\"product.price\"\n [(quantity)]=\"quantity\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <div class=\"text-md py-2\">\u6536\u8D27\u4EBA\u4FE1\u606F</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u59D3\u540D</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7535\u8BDD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7701\u4EFD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u57CE\u5E02</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5730\u533A</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>\u8BE6\u7EC6\u5730\u5740</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address.detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n <div>\n <div class=\"text-md\">\u5907\u6CE8</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [deposit]=\"product.deposit\"></rolatech-cart-checkout-summary>\n } @else {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [quantity]=\"quantity\"></rolatech-cart-checkout-summary>\n }\n <rolatech-cart-checkout-action\n (create)=\"createOrder()\"\n [title]=\"product.priceType && product.priceType.toString() === 'FIXED' ? '\u63D0\u4EA4\u8BA2\u5355' : '\u63D0\u4EA4\u8BA2\u5355'\"\n ></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: ["mat-form-field{width:100%}\n"] }]
129
+ }] });
130
+
131
+ class CartCheckoutShippingComponent {
132
+ constructor() {
133
+ this.address = model();
134
+ }
135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutShippingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: CartCheckoutShippingComponent, isStandalone: true, selector: "rolatech-cart-checkout-shipping", inputs: { address: { classPropertyName: "address", publicName: "address", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { address: "addressChange" }, ngImport: i0, template: "<div>\n <div class=\"text-md py-2\">\u6536\u8D27\u4EBA\u4FE1\u606F</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u59D3\u540D</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7535\u8BDD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7701\u4EFD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u57CE\u5E02</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5730\u533A</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>\u8BE6\u7EC6\u5730\u5740</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address().detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: TextFieldModule }] }); }
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutShippingComponent, decorators: [{
139
+ type: Component,
140
+ args: [{ selector: 'rolatech-cart-checkout-shipping', imports: [FormsModule, MatFormFieldModule, MatInputModule, TextFieldModule], template: "<div>\n <div class=\"text-md py-2\">\u6536\u8D27\u4EBA\u4FE1\u606F</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u59D3\u540D</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7535\u8BDD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>\u7701\u4EFD</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u57CE\u5E02</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>\u5730\u533A</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>\u8BE6\u7EC6\u5730\u5740</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address().detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
129
141
  }] });
130
142
 
131
143
  class CartCheckoutVariantComponent extends BaseComponent {
@@ -136,6 +148,8 @@ class CartCheckoutVariantComponent extends BaseComponent {
136
148
  this.cartService = inject(CartService);
137
149
  this.variantId = '';
138
150
  this.quantity = 1;
151
+ this.address = {};
152
+ this.note = '';
139
153
  this.variantId = this.route.snapshot.params['variant-id'];
140
154
  }
141
155
  ngOnInit() {
@@ -151,7 +165,15 @@ class CartCheckoutVariantComponent extends BaseComponent {
151
165
  });
152
166
  }
153
167
  createOrder() {
154
- this.orderService.create({ type: 'PRODUCT', variantId: this.variant.id }).subscribe({
168
+ this.orderService
169
+ .create({
170
+ type: 'PRODUCT',
171
+ variantId: this.variant.id,
172
+ note: this.note,
173
+ shippingAddress: this.address,
174
+ quantity: this.quantity,
175
+ })
176
+ .subscribe({
155
177
  next: (res) => {
156
178
  this.router.navigateByUrl(`/orders/${res.data.id}`);
157
179
  },
@@ -160,20 +182,25 @@ class CartCheckoutVariantComponent extends BaseComponent {
160
182
  },
161
183
  });
162
184
  }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutVariantComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartCheckoutVariantComponent, isStandalone: true, selector: "rolatech-cart-checkout-variant", usesInheritance: true, ngImport: i0, template: "@if (variant) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"variant.title ? variant.title : product.name\"\n [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\"\n [price]=\"variant.price\"\n [(quantity)]=\"quantity\"\n [max]=\"3\"\n ></rolatech-cart-checkout-item>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary\n [total]=\"variant.price * quantity\"\n [deposit]=\"product.deposit\"\n ></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: [""], dependencies: [{ kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: CartCheckoutSummaryComponent, selector: "rolatech-cart-checkout-summary", inputs: ["deposit", "total"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "component", type: CartCheckoutActionComponent, selector: "rolatech-cart-checkout-action", inputs: ["title"], outputs: ["create"] }, { kind: "pipe", type: OptionsFormatPipe, name: "options" }] }); }
185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutVariantComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartCheckoutVariantComponent, isStandalone: true, selector: "rolatech-cart-checkout-variant", usesInheritance: true, ngImport: i0, template: "@if (variant) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"variant.title ? variant.title : product.name\"\n [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\"\n [price]=\"variant.price\"\n [(quantity)]=\"quantity\"\n [max]=\"3\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <rolatech-cart-checkout-shipping [address]=\"address\"></rolatech-cart-checkout-shipping>\n </div>\n <div>\n <div class=\"text-md\">\u5907\u6CE8</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary\n [total]=\"variant.price * quantity\"\n [deposit]=\"product.deposit\"\n [quantity]=\"quantity\"\n ></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: CartCheckoutShippingComponent, selector: "rolatech-cart-checkout-shipping", inputs: ["address"], outputs: ["addressChange"] }, { kind: "component", type: CartCheckoutSummaryComponent, selector: "rolatech-cart-checkout-summary", inputs: ["deposit", "total", "quantity"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "component", type: CartCheckoutActionComponent, selector: "rolatech-cart-checkout-action", inputs: ["title"], outputs: ["create"] }, { kind: "pipe", type: OptionsFormatPipe, name: "options" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: TextFieldModule }] }); }
165
187
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutVariantComponent, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutVariantComponent, decorators: [{
167
189
  type: Component,
168
190
  args: [{ selector: 'rolatech-cart-checkout-variant', imports: [
169
191
  ContainerComponent,
170
192
  ToolbarComponent,
171
193
  MatButtonModule,
194
+ CartCheckoutShippingComponent,
172
195
  CartCheckoutSummaryComponent,
173
196
  CartCheckoutItemComponent,
174
197
  CartCheckoutActionComponent,
175
198
  OptionsFormatPipe,
176
- ], template: "@if (variant) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"variant.title ? variant.title : product.name\"\n [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\"\n [price]=\"variant.price\"\n [(quantity)]=\"quantity\"\n [max]=\"3\"\n ></rolatech-cart-checkout-item>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary\n [total]=\"variant.price * quantity\"\n [deposit]=\"product.deposit\"\n ></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n" }]
199
+ FormsModule,
200
+ MatFormFieldModule,
201
+ MatInputModule,
202
+ TextFieldModule,
203
+ ], template: "@if (variant) {\n <rolatech-container>\n <rolatech-toolbar title=\"\u8BA2\u5355\u786E\u8BA4\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">\u5546\u54C1\u4FE1\u606F</div>\n <rolatech-cart-checkout-item\n [name]=\"variant.title ? variant.title : product.name\"\n [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\"\n [price]=\"variant.price\"\n [(quantity)]=\"quantity\"\n [max]=\"3\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <rolatech-cart-checkout-shipping [address]=\"address\"></rolatech-cart-checkout-shipping>\n </div>\n <div>\n <div class=\"text-md\">\u5907\u6CE8</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary\n [total]=\"variant.price * quantity\"\n [deposit]=\"product.deposit\"\n [quantity]=\"quantity\"\n ></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n", styles: ["mat-form-field{width:100%}\n"] }]
177
204
  }], ctorParameters: () => [] });
178
205
 
179
206
  const cartCheckoutRoutes = [
@@ -196,4 +223,4 @@ const cartCheckoutRoutes = [
196
223
  ];
197
224
 
198
225
  export { cartCheckoutRoutes as default };
199
- //# sourceMappingURL=rolatech-angular-cart-cart-checkout.routes-BY3Et8Oc.mjs.map
226
+ //# sourceMappingURL=rolatech-angular-cart-cart-checkout.routes-xnCS8xco.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-cart-cart-checkout.routes-xnCS8xco.mjs","sources":["../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-index/cart-checkout-index.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-index/cart-checkout-index.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-course/cart-checkout-course.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-course/cart-checkout-course.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-product/cart-checkout-product.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-product/cart-checkout-product.component.html","../../../../packages/angular-cart/src/lib/components/cart-checkout-shipping/cart-checkout-shipping.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-shipping/cart-checkout-shipping.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-variant/cart-checkout-variant.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-variant/cart-checkout-variant.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout.routes.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-cart-checkout-index',\n imports: [CommonModule],\n templateUrl: './cart-checkout-index.component.html',\n styleUrl: './cart-checkout-index.component.scss',\n})\nexport class CartCheckoutIndexComponent {}\n","<p>cart-checkout-index works!</p>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { BaseComponent, ContainerComponent, ThumbnailComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { CourseService, Course, CourseType } from '@rolatech/angular-course';\nimport { OrderService } from '@rolatech/angular-services';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FixedPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-cart-checkout-course',\n imports: [ContainerComponent, ToolbarComponent, ThumbnailComponent, MatButtonModule, FixedPipe],\n templateUrl: './cart-checkout-course.component.html',\n styleUrl: './cart-checkout-course.component.scss',\n})\nexport class CartCheckoutCourseComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n orderService = inject(OrderService);\n authUserService = inject(AuthUserService);\n course!: Course;\n type = CourseType;\n purchased = false;\n ngOnInit(): void {\n this.findCourse();\n this.findPurchasedByCourseId();\n }\n createOrder() {\n this.orderService.create({ productId: this.id, type: 'COURSE' }).subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n findCourse() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.titleService.setTitle(`订单确认 - ${this.course.name}`);\n },\n });\n }\n findPurchasedByCourseId() {\n this.courseService.findPurchasedByCourseId(this.id).subscribe({\n next: (res: any) => {\n this.purchased = res.data ? true : false;\n },\n });\n }\n}\n","@if (course) {\n <rolatech-container>\n <rolatech-toolbar title=\"订单确认\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">课程信息</div>\n @if (course) {\n <div>\n <div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-(--rt-raised-background) h-fit\">\n @if (course.media) {\n <div class=\"object-cover aspect-video rounded-lg\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-medium\">{{ course.name }}</span>\n <span class=\"text-sm text-(--rt-text-secondary)\">类型 {{ type[course.type] }}</span>\n </div>\n </div>\n <div>¥{{ course.pricing[0].total | fixed }}</div>\n </div>\n @if (course.schedule) {\n <div class=\"flex justify-between py-3\">\n <span>开课日期</span>\n <span>{{ course.schedule[0].startAt }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <div class=\"text-2xl font-medium mb-2\">统计</div>\n <div class=\"divide-y divide-(--rt-10-percent-layer)\">\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 订单金额 </span>\n <span> ¥{{ course.pricing[0].total | fixed }} </span>\n </div>\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">总计</span>\n <span>¥{{ course.pricing[0].total | fixed }}</span>\n </div>\n <a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"createOrder()\">提交订单</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, ContainerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Product, ProductType } from '@rolatech/angular-product';\nimport { OrderService } from '@rolatech/angular-services';\nimport { CartCheckoutSummaryComponent } from '../../../components/cart-checkout-summary/cart-checkout-summary.component';\nimport { CartCheckoutItemComponent } from '../../../components/cart-checkout-item/cart-checkout-item.component';\nimport { CartCheckoutActionComponent } from '../../../components/cart-checkout-action/cart-checkout-action.component';\nimport { CartService, ProductService } from '@rolatech/angular-services';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'rolatech-cart-checkout-product',\n imports: [\n ContainerComponent,\n ToolbarComponent,\n MatButtonModule,\n CartCheckoutSummaryComponent,\n CartCheckoutItemComponent,\n CartCheckoutActionComponent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n ],\n templateUrl: './cart-checkout-product.component.html',\n styleUrl: './cart-checkout-product.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class CartCheckoutProductComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n cartService = inject(CartService);\n orderService = inject(OrderService);\n authUserService = inject(AuthUserService);\n product!: Product;\n type = ProductType;\n quantity = 1;\n note = '';\n address: any = {};\n ngOnInit(): void {\n this.getProduct();\n }\n createOrder() {\n this.orderService\n .create({ type: 'PRODUCT', productId: this.id, note: this.note, shippingAddress: this.address, quantity: this.quantity })\n .subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n getProduct() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.titleService.setTitle(`订单确认 - ${this.product.name}`);\n },\n });\n }\n}\n","@if (product) {\n <rolatech-container>\n <rolatech-toolbar title=\"订单确认\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">商品信息</div>\n <rolatech-cart-checkout-item\n [name]=\"product.name\"\n [description]=\"product.description\"\n [thumbnail]=\"product.media[0].url + '!w200'\"\n [price]=\"product.price\"\n [(quantity)]=\"quantity\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <div class=\"text-md py-2\">收货人信息</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>姓名</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>电话</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>省份</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>城市</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>地区</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>详细地址</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address.detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n <div>\n <div class=\"text-md\">备注</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [deposit]=\"product.deposit\"></rolatech-cart-checkout-summary>\n } @else {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [quantity]=\"quantity\"></rolatech-cart-checkout-summary>\n }\n <rolatech-cart-checkout-action\n (create)=\"createOrder()\"\n [title]=\"product.priceType && product.priceType.toString() === 'FIXED' ? '提交订单' : '提交订单'\"\n ></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Component, model } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'rolatech-cart-checkout-shipping',\n imports: [FormsModule, MatFormFieldModule, MatInputModule, TextFieldModule],\n templateUrl: './cart-checkout-shipping.component.html',\n styleUrl: './cart-checkout-shipping.component.scss',\n})\nexport class CartCheckoutShippingComponent {\n address = model<any>();\n}\n","<div>\n <div class=\"text-md py-2\">收货人信息</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>姓名</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>电话</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>省份</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>城市</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>地区</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address().district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>详细地址</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address().detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ContainerComponent, ToolbarComponent, BaseComponent } from '@rolatech/angular-components';\nimport { CartCheckoutActionComponent } from '../../../components/cart-checkout-action/cart-checkout-action.component';\nimport { CartCheckoutItemComponent } from '../../../components/cart-checkout-item/cart-checkout-item.component';\nimport { CartCheckoutSummaryComponent } from '../../../components/cart-checkout-summary/cart-checkout-summary.component';\nimport { Product, ProductVariant } from '@rolatech/angular-product';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\nimport { OrderService } from '@rolatech/angular-services';\nimport { ProductService, CartService } from '@rolatech/angular-services';\nimport { CartCheckoutShippingComponent } from '../../../components/cart-checkout-shipping/cart-checkout-shipping.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\n\n@Component({\n selector: 'rolatech-cart-checkout-variant',\n imports: [\n ContainerComponent,\n ToolbarComponent,\n MatButtonModule,\n CartCheckoutShippingComponent,\n CartCheckoutSummaryComponent,\n CartCheckoutItemComponent,\n CartCheckoutActionComponent,\n OptionsFormatPipe,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n ],\n templateUrl: './cart-checkout-variant.component.html',\n styleUrl: './cart-checkout-variant.component.scss',\n})\nexport class CartCheckoutVariantComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n orderService = inject(OrderService);\n cartService = inject(CartService);\n product!: Product;\n variant!: ProductVariant;\n variantId = '';\n quantity = 1;\n address: any = {};\n note = '';\n constructor() {\n super();\n this.variantId = this.route.snapshot.params['variant-id'];\n }\n\n ngOnInit(): void {\n this.getProduct();\n }\n getProduct() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.variant = res.data.variants.find((item) => item.id === this.variantId);\n this.titleService.setTitle(`订单确认 - ${this.product.name}`);\n },\n });\n }\n createOrder() {\n this.orderService\n .create({\n type: 'PRODUCT',\n variantId: this.variant.id,\n note: this.note,\n shippingAddress: this.address,\n quantity: this.quantity,\n })\n .subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","@if (variant) {\n <rolatech-container>\n <rolatech-toolbar title=\"订单确认\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">商品信息</div>\n <rolatech-cart-checkout-item\n [name]=\"variant.title ? variant.title : product.name\"\n [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\"\n [price]=\"variant.price\"\n [(quantity)]=\"quantity\"\n [max]=\"3\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <rolatech-cart-checkout-shipping [address]=\"address\"></rolatech-cart-checkout-shipping>\n </div>\n <div>\n <div class=\"text-md\">备注</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary\n [total]=\"variant.price * quantity\"\n [deposit]=\"product.deposit\"\n [quantity]=\"quantity\"\n ></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Routes } from '@angular/router';\nimport { CartCheckoutIndexComponent } from './cart-checkout-index/cart-checkout-index.component';\nimport { CartCheckoutCourseComponent } from './cart-checkout-course/cart-checkout-course.component';\nimport { CartCheckoutProductComponent } from './cart-checkout-product/cart-checkout-product.component';\nimport { CartCheckoutVariantComponent } from './cart-checkout-variant/cart-checkout-variant.component';\n\nconst cartCheckoutRoutes: Routes = [\n {\n path: '',\n component: CartCheckoutIndexComponent,\n },\n {\n path: 'courses/:id',\n component: CartCheckoutCourseComponent,\n },\n {\n path: 'products/:id',\n component: CartCheckoutProductComponent,\n },\n {\n path: 'products/:id/variants/:variant-id',\n component: CartCheckoutVariantComponent,\n },\n];\nexport default cartCheckoutRoutes;\n"],"names":["i1"],"mappings":"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"}
@@ -44,12 +44,12 @@ class CartCheckoutItemComponent {
44
44
  onDelete() {
45
45
  this.delete.emit();
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartCheckoutItemComponent, isStandalone: true, selector: "rolatech-cart-checkout-item", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, quantity: { classPropertyName: "quantity", publicName: "quantity", isSignal: true, isRequired: false, transformFunction: null }, price: { classPropertyName: "price", publicName: "price", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { quantity: "quantityChange", add: "add", remove: "remove", delete: "delete" }, ngImport: i0, template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold line-clamp-1\">{{ name() }}</span>\n <span class=\"text-sm text-[--rt-text-secondary] mt-2 line-clamp-2\">{{ description() }}</span>\n </div>\n <div class=\"p-1\">\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <button mat-icon-button (click)=\"onRemove()\" [disabled]=\"quantity() === 1\">\n <mat-icon>remove</mat-icon>\n </button>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n <button mat-icon-button (click)=\"onAdd()\" [disabled]=\"quantity() === max()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-icon{scale:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], deferBlockDependencies: [() => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)]] }); }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartCheckoutItemComponent, isStandalone: true, selector: "rolatech-cart-checkout-item", inputs: { thumbnail: { classPropertyName: "thumbnail", publicName: "thumbnail", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, quantity: { classPropertyName: "quantity", publicName: "quantity", isSignal: true, isRequired: false, transformFunction: null }, price: { classPropertyName: "price", publicName: "price", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { quantity: "quantityChange", add: "add", remove: "remove", delete: "delete" }, ngImport: i0, template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-(--rt-raised-background) rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold line-clamp-1\">{{ name() }}</span>\n <span class=\"text-sm text-(--rt-text-secondary) mt-2 line-clamp-2\">{{ description() }}</span>\n </div>\n <div class=\"p-1\">\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <button mat-icon-button (click)=\"onRemove()\" [disabled]=\"quantity() === 1\">\n <mat-icon>remove</mat-icon>\n </button>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n <button mat-icon-button (click)=\"onAdd()\" [disabled]=\"quantity() === max()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-icon{scale:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], deferBlockDependencies: [() => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)]] }); }
49
49
  }
50
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutItemComponent, resolveDeferredDeps: () => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
50
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutItemComponent, resolveDeferredDeps: () => [import('@rolatech/angular-components').then(m => m.ThumbnailComponent)], resolveMetadata: ThumbnailComponent => ({ decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'rolatech-cart-checkout-item', imports: [CommonModule, ThumbnailComponent, MatIcon, MatButtonModule], template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold line-clamp-1\">{{ name() }}</span>\n <span class=\"text-sm text-[--rt-text-secondary] mt-2 line-clamp-2\">{{ description() }}</span>\n </div>\n <div class=\"p-1\">\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <button mat-icon-button (click)=\"onRemove()\" [disabled]=\"quantity() === 1\">\n <mat-icon>remove</mat-icon>\n </button>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n <button mat-icon-button (click)=\"onAdd()\" [disabled]=\"quantity() === max()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-icon{scale:.7}\n"] }]
52
+ args: [{ selector: 'rolatech-cart-checkout-item', imports: [CommonModule, ThumbnailComponent, MatIcon, MatButtonModule], template: "<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-(--rt-raised-background) rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold line-clamp-1\">{{ name() }}</span>\n <span class=\"text-sm text-(--rt-text-secondary) mt-2 line-clamp-2\">{{ description() }}</span>\n </div>\n <div class=\"p-1\">\u00A5{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">\u6570\u91CF</span>\n <button mat-icon-button (click)=\"onRemove()\" [disabled]=\"quantity() === 1\">\n <mat-icon>remove</mat-icon>\n </button>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n <button mat-icon-button (click)=\"onAdd()\" [disabled]=\"quantity() === max()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: ["mat-icon{scale:.7}\n"] }]
53
53
  }], ctorParameters: null, propDecorators: null }) });
54
54
 
55
55
  class CartCheckoutActionComponent {
@@ -60,10 +60,10 @@ class CartCheckoutActionComponent {
60
60
  onCreate() {
61
61
  this.create.emit();
62
62
  }
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", type: CartCheckoutActionComponent, isStandalone: true, selector: "rolatech-cart-checkout-action", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { create: "create" }, ngImport: i0, template: "<a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"onCreate()\">{{ title() }}</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.1.4", type: CartCheckoutActionComponent, isStandalone: true, selector: "rolatech-cart-checkout-action", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { create: "create" }, ngImport: i0, template: "<a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"onCreate()\">{{ title() }}</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
65
65
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutActionComponent, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutActionComponent, decorators: [{
67
67
  type: Component,
68
68
  args: [{ selector: 'rolatech-cart-checkout-action', imports: [CommonModule, MatButtonModule], template: "<a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"onCreate()\">{{ title() }}</a>\n" }]
69
69
  }] });
@@ -72,8 +72,9 @@ class CartCheckoutSummaryComponent {
72
72
  constructor() {
73
73
  this.deposit = input(0);
74
74
  this.total = input.required();
75
+ this.quantity = input(1);
75
76
  this.totalDisplay = computed(() => {
76
- return (this.total() / 100).toFixed(2);
77
+ return ((this.total() / 100) * this.quantity()).toFixed(2);
77
78
  });
78
79
  this.depositDisplay = computed(() => {
79
80
  return (this.deposit() / 100).toFixed(2);
@@ -82,12 +83,12 @@ class CartCheckoutSummaryComponent {
82
83
  return ((this.total() - this.deposit()) / 100).toFixed(2);
83
84
  });
84
85
  }
85
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
86
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartCheckoutSummaryComponent, isStandalone: true, selector: "rolatech-cart-checkout-summary", inputs: { deposit: { classPropertyName: "deposit", publicName: "deposit", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n<div class=\"divide-y\">\n @if (deposit()) {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span>\u5B9A\u91D1</span>\n <span> \u00A5{{ depositDisplay() }} </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5C3E\u6B3E </span>\n <span> \u00A5{{ remainingDisplay() }} </span>\n </div>\n } @else {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5E94\u4ED8\u91D1\u989D </span>\n <span> \u00A5{{ totalDisplay() }} </span>\n </div>\n }\n\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ totalDisplay() }}</span>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartCheckoutSummaryComponent, isStandalone: true, selector: "rolatech-cart-checkout-summary", inputs: { deposit: { classPropertyName: "deposit", publicName: "deposit", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: true, transformFunction: null }, quantity: { classPropertyName: "quantity", publicName: "quantity", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n<div class=\"divide-y divide-(--rt-10-percent-layer)\">\n @if (deposit()) {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span>\u5B9A\u91D1</span>\n <span> \u00A5{{ depositDisplay() }} </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5C3E\u6B3E </span>\n <span> \u00A5{{ remainingDisplay() }} </span>\n </div>\n } @else {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5546\u54C1\u6570\u91CF </span>\n <span> {{ quantity() }}\u4EF6 </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5E94\u4ED8\u91D1\u989D </span>\n <span> \u00A5{{ totalDisplay() }} </span>\n </div>\n }\n\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ totalDisplay() }}</span>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
87
88
  }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartCheckoutSummaryComponent, decorators: [{
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartCheckoutSummaryComponent, decorators: [{
89
90
  type: Component,
90
- args: [{ selector: 'rolatech-cart-checkout-summary', imports: [CommonModule], template: "<div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n<div class=\"divide-y\">\n @if (deposit()) {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span>\u5B9A\u91D1</span>\n <span> \u00A5{{ depositDisplay() }} </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5C3E\u6B3E </span>\n <span> \u00A5{{ remainingDisplay() }} </span>\n </div>\n } @else {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5E94\u4ED8\u91D1\u989D </span>\n <span> \u00A5{{ totalDisplay() }} </span>\n </div>\n }\n\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ totalDisplay() }}</span>\n </div>\n </div>\n </div>\n</div>\n" }]
91
+ args: [{ selector: 'rolatech-cart-checkout-summary', imports: [CommonModule], template: "<div class=\"text-2xl font-medium mb-2\">\u7EDF\u8BA1</div>\n<div class=\"divide-y divide-(--rt-10-percent-layer)\">\n @if (deposit()) {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span>\u5B9A\u91D1</span>\n <span> \u00A5{{ depositDisplay() }} </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5C3E\u6B3E </span>\n <span> \u00A5{{ remainingDisplay() }} </span>\n </div>\n } @else {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5546\u54C1\u6570\u91CF </span>\n <span> {{ quantity() }}\u4EF6 </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> \u5E94\u4ED8\u91D1\u989D </span>\n <span> \u00A5{{ totalDisplay() }} </span>\n </div>\n }\n\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">\u603B\u8BA1</span>\n <span>\u00A5{{ totalDisplay() }}</span>\n </div>\n </div>\n </div>\n</div>\n" }]
91
92
  }] });
92
93
 
93
94
  class CartIndexComponent {
@@ -147,10 +148,10 @@ class CartIndexComponent {
147
148
  });
148
149
  }
149
150
  deleteAllCarts() { }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartIndexComponent, isStandalone: true, selector: "rolatech-cart-index", ngImport: i0, template: "<rolatech-container>\n <rolatech-toolbar title=\"\u8D2D\u7269\u8F66\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div>\n @for (item of carts; track $index) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary [total]=\"totalPrice\"></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n</rolatech-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "component", type: CartCheckoutSummaryComponent, selector: "rolatech-cart-checkout-summary", inputs: ["deposit", "total"] }, { kind: "component", type: CartCheckoutActionComponent, selector: "rolatech-cart-checkout-action", inputs: ["title"], outputs: ["create"] }, { kind: "pipe", type: OptionsFormatPipe, name: "options" }] }); }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartIndexComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartIndexComponent, isStandalone: true, selector: "rolatech-cart-index", ngImport: i0, template: "<rolatech-container>\n <rolatech-toolbar title=\"\u8D2D\u7269\u8F66\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div>\n @for (item of carts; track $index) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary [total]=\"totalPrice\"></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n</rolatech-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ContainerComponent, selector: "rolatech-container" }, { kind: "component", type: ToolbarComponent, selector: "rolatech-toolbar", inputs: ["title", "subtitle", "back", "link", "large", "divider"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "component", type: CartCheckoutSummaryComponent, selector: "rolatech-cart-checkout-summary", inputs: ["deposit", "total", "quantity"] }, { kind: "component", type: CartCheckoutActionComponent, selector: "rolatech-cart-checkout-action", inputs: ["title"], outputs: ["create"] }, { kind: "pipe", type: OptionsFormatPipe, name: "options" }] }); }
152
153
  }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartIndexComponent, decorators: [{
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartIndexComponent, decorators: [{
154
155
  type: Component,
155
156
  args: [{ selector: 'rolatech-cart-index', imports: [
156
157
  CommonModule,
@@ -170,7 +171,7 @@ const cartRoutes = [
170
171
  },
171
172
  {
172
173
  path: 'checkout',
173
- loadChildren: () => import('./rolatech-angular-cart-cart-checkout.routes-BY3Et8Oc.mjs'),
174
+ loadChildren: () => import('./rolatech-angular-cart-cart-checkout.routes-xnCS8xco.mjs'),
174
175
  },
175
176
  ];
176
177
 
@@ -244,10 +245,10 @@ class CartSideComponent {
244
245
  },
245
246
  });
246
247
  }
247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartSideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
248
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartSideComponent, isStandalone: true, selector: "rolatech-cart-side", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { info: "infoChange" }, ngImport: i0, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" (click)=\"show()\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<div\n [ngClass]=\"{ 'translate-none': info(), 'translate-y-full md:translate-x-full md:translate-y-0': !info() }\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-full md:w-[600px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-2xl font-bold\">\u8D2D\u7269\u8F66</div>\n <button mat-icon-button (click)=\"dismiss()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loading) {\n <div class=\"mt-3 p-1 sm:p-4\">\n @for (item of carts; track item) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n <mat-divider></mat-divider>\n <div class=\"h-14 flex justify-between items-center\">\n <div class=\"text-lg font-bold\">\u603B\u8BA1</div>\n <div>\u00A5{{ totalPrice }}</div>\n </div>\n <div class=\"flex flex-row gap-3 w-full items-center justify-center mt-3\">\n <button mat-flat-button [routerLink]=\"router()\" (click)=\"dismiss()\" class=\"w-8/12\">\n <a>\u53BB\u8D2D\u7269\u8F66\u7ED3\u7B97</a>\n </button>\n <button mat-stroked-button (click)=\"dismiss()\" class=\"w-4/12\">\n <a>\u7EE7\u7EED\u8D2D\u7269</a>\n </button>\n </div>\n </div>\n }\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"dismiss()\"\n [ngClass]=\"info() ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed h-screen inset-0 z-[1000]\"\n></div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "pipe", type: OptionsFormatPipe, name: "options" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartSideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartSideComponent, isStandalone: true, selector: "rolatech-cart-side", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null }, info: { classPropertyName: "info", publicName: "info", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { info: "infoChange" }, ngImport: i0, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" (click)=\"show()\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<div\n [ngClass]=\"{ 'translate-none': info(), 'translate-y-full md:translate-x-full md:translate-y-0': !info() }\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-(--rt-raised-background) w-full md:w-[600px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-2xl font-bold\">\u8D2D\u7269\u8F66</div>\n <button mat-icon-button (click)=\"dismiss()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loading) {\n <div class=\"mt-3 p-1 sm:p-4\">\n @for (item of carts; track item) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n <mat-divider></mat-divider>\n <div class=\"h-14 flex justify-between items-center\">\n <div class=\"text-lg font-bold\">\u603B\u8BA1</div>\n <div>\u00A5{{ totalPrice }}</div>\n </div>\n <div class=\"flex flex-row gap-3 w-full items-center justify-center mt-3\">\n <button mat-flat-button [routerLink]=\"router()\" (click)=\"dismiss()\" class=\"w-8/12\">\n <a>\u53BB\u8D2D\u7269\u8F66\u7ED3\u7B97</a>\n </button>\n <button mat-stroked-button (click)=\"dismiss()\" class=\"w-4/12\">\n <a>\u7EE7\u7EED\u8D2D\u7269</a>\n </button>\n </div>\n </div>\n }\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"dismiss()\"\n [ngClass]=\"info() ? 'visible' : 'invisible'\"\n class=\"bg-(--rt-10-percent-layer) fixed h-screen inset-0 z-[1000]\"\n></div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "component", type: CartCheckoutItemComponent, selector: "rolatech-cart-checkout-item", inputs: ["thumbnail", "name", "description", "quantity", "price", "max"], outputs: ["quantityChange", "add", "remove", "delete"] }, { kind: "pipe", type: OptionsFormatPipe, name: "options" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] }); }
249
250
  }
250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartSideComponent, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartSideComponent, decorators: [{
251
252
  type: Component,
252
253
  args: [{ selector: 'rolatech-cart-side', imports: [
253
254
  CommonModule,
@@ -259,7 +260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
259
260
  OptionsFormatPipe,
260
261
  RouterLink,
261
262
  MatDivider,
262
- ], template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" (click)=\"show()\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<div\n [ngClass]=\"{ 'translate-none': info(), 'translate-y-full md:translate-x-full md:translate-y-0': !info() }\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-full md:w-[600px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-2xl font-bold\">\u8D2D\u7269\u8F66</div>\n <button mat-icon-button (click)=\"dismiss()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loading) {\n <div class=\"mt-3 p-1 sm:p-4\">\n @for (item of carts; track item) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n <mat-divider></mat-divider>\n <div class=\"h-14 flex justify-between items-center\">\n <div class=\"text-lg font-bold\">\u603B\u8BA1</div>\n <div>\u00A5{{ totalPrice }}</div>\n </div>\n <div class=\"flex flex-row gap-3 w-full items-center justify-center mt-3\">\n <button mat-flat-button [routerLink]=\"router()\" (click)=\"dismiss()\" class=\"w-8/12\">\n <a>\u53BB\u8D2D\u7269\u8F66\u7ED3\u7B97</a>\n </button>\n <button mat-stroked-button (click)=\"dismiss()\" class=\"w-4/12\">\n <a>\u7EE7\u7EED\u8D2D\u7269</a>\n </button>\n </div>\n </div>\n }\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"dismiss()\"\n [ngClass]=\"info() ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed h-screen inset-0 z-[1000]\"\n></div>\n" }]
263
+ ], template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" (click)=\"show()\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<div\n [ngClass]=\"{ 'translate-none': info(), 'translate-y-full md:translate-x-full md:translate-y-0': !info() }\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-(--rt-raised-background) w-full md:w-[600px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-2xl font-bold\">\u8D2D\u7269\u8F66</div>\n <button mat-icon-button (click)=\"dismiss()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loading) {\n <div class=\"mt-3 p-1 sm:p-4\">\n @for (item of carts; track item) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n <mat-divider></mat-divider>\n <div class=\"h-14 flex justify-between items-center\">\n <div class=\"text-lg font-bold\">\u603B\u8BA1</div>\n <div>\u00A5{{ totalPrice }}</div>\n </div>\n <div class=\"flex flex-row gap-3 w-full items-center justify-center mt-3\">\n <button mat-flat-button [routerLink]=\"router()\" (click)=\"dismiss()\" class=\"w-8/12\">\n <a>\u53BB\u8D2D\u7269\u8F66\u7ED3\u7B97</a>\n </button>\n <button mat-stroked-button (click)=\"dismiss()\" class=\"w-4/12\">\n <a>\u7EE7\u7EED\u8D2D\u7269</a>\n </button>\n </div>\n </div>\n }\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"dismiss()\"\n [ngClass]=\"info() ? 'visible' : 'invisible'\"\n class=\"bg-(--rt-10-percent-layer) fixed h-screen inset-0 z-[1000]\"\n></div>\n" }]
263
264
  }] });
264
265
 
265
266
  class CartState {
@@ -269,10 +270,10 @@ class CartState {
269
270
  getCount() {
270
271
  return this.$count.asObservable();
271
272
  }
272
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
273
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartState, providedIn: 'root' }); }
273
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
274
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartState, providedIn: 'root' }); }
274
275
  }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartState, decorators: [{
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartState, decorators: [{
276
277
  type: Injectable,
277
278
  args: [{
278
279
  providedIn: 'root',
@@ -312,12 +313,12 @@ class CartIconComponent {
312
313
  },
313
314
  });
314
315
  }
315
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
316
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: CartIconComponent, isStandalone: true, selector: "rolatech-cart-icon", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col divide-y min-w-[320px]\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">\u8D2D\u7269\u8F66</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"deleteAll()\">\u5220\u9664\u5168\u90E8</span>\n }\n </div>\n <div>\n @if (carts && carts.length > 0) {\n <div class=\"divide-y\">\n @for (item of carts; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-[--rt-raised-background]\" [routerLink]=\"[router(), item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">\u6682\u65E0</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-[--rt-raised-background]\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-[--rt-brand-color]\"> \u524D\u5F80\u8D2D\u7269\u8F66 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: ["rolatech-cart-icon{color:var(--rt-text-primary, #000)}.custom-menu{color:var(--rt-text-primary, #000)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "directive", type: i2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], encapsulation: i0.ViewEncapsulation.None }); }
316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
317
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: CartIconComponent, isStandalone: true, selector: "rolatech-cart-icon", inputs: { router: { classPropertyName: "router", publicName: "router", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col min-w-[320px] divide-y divide-(--rt-10-percent-layer)\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">\u8D2D\u7269\u8F66</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"deleteAll()\">\u5220\u9664\u5168\u90E8</span>\n }\n </div>\n <div>\n @if (carts && carts.length > 0) {\n <div class=\"divide-y divide-(--rt-10-percent-layer)\">\n @for (item of carts; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-(--rt-raised-background)\" [routerLink]=\"[router(), item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">\u6682\u65E0</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-(--rt-raised-background)\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-(--rt-brand-color)\"> \u524D\u5F80\u8D2D\u7269\u8F66 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: ["rolatech-cart-icon{color:var(--rt-text-primary, #000)}.custom-menu{color:var(--rt-text-primary, #000)}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "directive", type: i2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], encapsulation: i0.ViewEncapsulation.None }); }
317
318
  }
318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: CartIconComponent, decorators: [{
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: CartIconComponent, decorators: [{
319
320
  type: Component,
320
- args: [{ selector: 'rolatech-cart-icon', imports: [AngularCommonModule, AngularComponentsModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col divide-y min-w-[320px]\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">\u8D2D\u7269\u8F66</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"deleteAll()\">\u5220\u9664\u5168\u90E8</span>\n }\n </div>\n <div>\n @if (carts && carts.length > 0) {\n <div class=\"divide-y\">\n @for (item of carts; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-[--rt-raised-background]\" [routerLink]=\"[router(), item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">\u6682\u65E0</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-[--rt-raised-background]\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-[--rt-brand-color]\"> \u524D\u5F80\u8D2D\u7269\u8F66 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: ["rolatech-cart-icon{color:var(--rt-text-primary, #000)}.custom-menu{color:var(--rt-text-primary, #000)}\n"] }]
321
+ args: [{ selector: 'rolatech-cart-icon', imports: [AngularCommonModule, AngularComponentsModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col min-w-[320px] divide-y divide-(--rt-10-percent-layer)\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">\u8D2D\u7269\u8F66</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"deleteAll()\">\u5220\u9664\u5168\u90E8</span>\n }\n </div>\n <div>\n @if (carts && carts.length > 0) {\n <div class=\"divide-y divide-(--rt-10-percent-layer)\">\n @for (item of carts; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-(--rt-raised-background)\" [routerLink]=\"[router(), item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">\u6682\u65E0</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-(--rt-raised-background)\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-(--rt-brand-color)\"> \u524D\u5F80\u8D2D\u7269\u8F66 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n", styles: ["rolatech-cart-icon{color:var(--rt-text-primary, #000)}.custom-menu{color:var(--rt-text-primary, #000)}\n"] }]
321
322
  }] });
322
323
 
323
324
  /**
@@ -325,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
325
326
  */
326
327
 
327
328
  export { CartCheckoutSummaryComponent as C, CartCheckoutItemComponent as a, CartCheckoutActionComponent as b, cartRoutes as c, CartSideComponent as d, CartIconComponent as e, CartState as f };
328
- //# sourceMappingURL=rolatech-angular-cart-rolatech-angular-cart-CYsylW_P.mjs.map
329
+ //# sourceMappingURL=rolatech-angular-cart-rolatech-angular-cart-BXV_DS6w.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolatech-angular-cart-rolatech-angular-cart-BXV_DS6w.mjs","sources":["../../../../packages/angular-cart/src/lib/components/cart-checkout-item/cart-checkout-item.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-item/cart-checkout-item.component.html","../../../../packages/angular-cart/src/lib/components/cart-checkout-action/cart-checkout-action.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-action/cart-checkout-action.component.html","../../../../packages/angular-cart/src/lib/components/cart-checkout-summary/cart-checkout-summary.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-summary/cart-checkout-summary.component.html","../../../../packages/angular-cart/src/lib/pages/cart-index/cart-index.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-index/cart-index.component.html","../../../../packages/angular-cart/src/lib/pages/cart.routes.ts","../../../../packages/angular-cart/src/lib/components/cart-side/cart-side.component.ts","../../../../packages/angular-cart/src/lib/components/cart-side/cart-side.component.html","../../../../packages/angular-cart/src/lib/state/cart.state.ts","../../../../packages/angular-cart/src/lib/components/cart-icon/cart-icon.component.ts","../../../../packages/angular-cart/src/lib/components/cart-icon/cart-icon.component.html","../../../../packages/angular-cart/src/rolatech-angular-cart.ts"],"sourcesContent":["import { Component, computed, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\nimport { Product, ProductMedia, ProductVariant } from '@rolatech/angular-product';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-cart-checkout-item',\n imports: [CommonModule, ThumbnailComponent, MatIcon, MatButtonModule],\n templateUrl: './cart-checkout-item.component.html',\n styleUrl: './cart-checkout-item.component.scss',\n})\nexport class CartCheckoutItemComponent {\n thumbnail = input<string>();\n name = input<string>();\n description = input<string>();\n quantity = model<number>(1);\n price = input.required<number>();\n priceDisplay = computed(() => {\n return (this.price() / 100).toFixed(2);\n });\n add = output();\n remove = output();\n delete = output();\n max = input<number>();\n onAdd() {\n this.quantity.update((item) => item + 1);\n this.add.emit();\n }\n onRemove() {\n this.quantity.update((item) => item - 1);\n this.remove.emit();\n }\n onDelete() {\n this.delete.emit();\n }\n}\n","<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-(--rt-raised-background) rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-(--rt-raised-background) h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold line-clamp-1\">{{ name() }}</span>\n <span class=\"text-sm text-(--rt-text-secondary) mt-2 line-clamp-2\">{{ description() }}</span>\n </div>\n <div class=\"p-1\">¥{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">数量</span>\n <button mat-icon-button (click)=\"onRemove()\" [disabled]=\"quantity() === 1\">\n <mat-icon>remove</mat-icon>\n </button>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n <button mat-icon-button (click)=\"onAdd()\" [disabled]=\"quantity() === max()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-cart-checkout-action',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './cart-checkout-action.component.html',\n styleUrl: './cart-checkout-action.component.scss',\n})\nexport class CartCheckoutActionComponent {\n title = input<string>('提交订单');\n create = output();\n onCreate() {\n this.create.emit();\n }\n}\n","<a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"onCreate()\">{{ title() }}</a>\n","import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-cart-checkout-summary',\n imports: [CommonModule],\n templateUrl: './cart-checkout-summary.component.html',\n styleUrl: './cart-checkout-summary.component.scss',\n})\nexport class CartCheckoutSummaryComponent {\n deposit = input(0);\n total = input.required<number>();\n quantity = input<number>(1);\n totalDisplay = computed(() => {\n return ((this.total() / 100) * this.quantity()).toFixed(2);\n });\n depositDisplay = computed(() => {\n return (this.deposit() / 100).toFixed(2);\n });\n remainingDisplay = computed(() => {\n return ((this.total() - this.deposit()) / 100).toFixed(2);\n });\n}\n","<div class=\"text-2xl font-medium mb-2\">统计</div>\n<div class=\"divide-y divide-(--rt-10-percent-layer)\">\n @if (deposit()) {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span>定金</span>\n <span> ¥{{ depositDisplay() }} </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 尾款 </span>\n <span> ¥{{ remainingDisplay() }} </span>\n </div>\n } @else {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 商品数量 </span>\n <span> {{ quantity() }}件 </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 应付金额 </span>\n <span> ¥{{ totalDisplay() }} </span>\n </div>\n }\n\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">总计</span>\n <span>¥{{ totalDisplay() }}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CartCheckoutItemComponent } from '../../components/cart-checkout-item/cart-checkout-item.component';\nimport { ContainerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CartService, TitleService } from '@rolatech/angular-services';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\nimport { CartCheckoutActionComponent } from '../../components/cart-checkout-action/cart-checkout-action.component';\nimport { CartCheckoutSummaryComponent } from '../../components/cart-checkout-summary/cart-checkout-summary.component';\nimport { sumBy, map, uniq } from 'lodash';\nimport { ProductService, OrderService } from '@rolatech/angular-services';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'rolatech-cart-index',\n imports: [\n CommonModule,\n ContainerComponent,\n ToolbarComponent,\n CartCheckoutItemComponent,\n CartCheckoutSummaryComponent,\n CartCheckoutActionComponent,\n OptionsFormatPipe,\n ],\n templateUrl: './cart-index.component.html',\n styleUrl: './cart-index.component.scss',\n})\nexport class CartIndexComponent implements OnInit {\n cartService = inject(CartService);\n productService = inject(ProductService);\n orderService = inject(OrderService);\n titleService = inject(TitleService);\n router = inject(Router);\n carts: any = [];\n totalPrice = 0;\n ngOnInit(): void {\n this.titleService.setTitle('购物车');\n this.findCarts();\n }\n findCarts() {\n this.cartService.findDetails({}).subscribe({\n next: (res: any) => {\n this.carts = res.data;\n this.calcPrice();\n },\n });\n }\n calcPrice(): any {\n this.totalPrice = sumBy(this.carts, (item: any) =>\n item.variant ? item.quantity * item.variant.price : item.quantity * item.product.price,\n );\n }\n onAdd(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onRemove(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onDelete(cart: any) {\n this.cartService.delete(cart.id).subscribe({\n next: (res) => {\n const index = this.carts.findIndex((item) => item.id === cart.id);\n this.carts.splice(index, 1);\n this.calcPrice();\n },\n });\n }\n createOrder() {\n const ids = uniq(map(this.carts, 'id')); // [12, 14, 16, 18]\n this.orderService.create({ type: 'PRODUCT', cartIds: ids }).subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n });\n }\n deleteAllCarts() {}\n}\n","<rolatech-container>\n <rolatech-toolbar title=\"购物车\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div>\n @for (item of carts; track $index) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary [total]=\"totalPrice\"></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n</rolatech-container>\n","import { Routes } from '@angular/router';\nimport { CartIndexComponent } from './cart-index/cart-index.component';\n\nexport const cartRoutes: Routes = [\n {\n path: '',\n component: CartIndexComponent,\n },\n {\n path: 'checkout',\n loadChildren: () => import('./cart-checkout/cart-checkout.routes'),\n },\n];\n","import { Component, computed, effect, inject, input, model, OnDestroy, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatBadge } from '@angular/material/badge';\nimport { SpinnerComponent } from '@rolatech/angular-components';\nimport { CartEventType, CartService } from '@rolatech/angular-services';\nimport { filter, Subscription } from 'rxjs';\nimport { CartCheckoutItemComponent } from '../cart-checkout-item/cart-checkout-item.component';\nimport { RouterLink } from '@angular/router';\nimport { sumBy } from 'lodash';\nimport { MatDivider } from '@angular/material/divider';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-cart-side',\n imports: [\n CommonModule,\n MatButtonModule,\n MatIcon,\n MatBadge,\n SpinnerComponent,\n CartCheckoutItemComponent,\n OptionsFormatPipe,\n RouterLink,\n MatDivider,\n ],\n templateUrl: './cart-side.component.html',\n styleUrl: './cart-side.component.scss',\n})\nexport class CartSideComponent implements OnInit, OnDestroy {\n router = input<string>('/cart');\n cartService = inject(CartService);\n carts: any;\n info = model(false);\n loading = false;\n count = 0;\n totalPrice = '';\n private countSubscription!: Subscription;\n toggle = effect(() => {\n if (this.info()) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = 'auto';\n }\n });\n ngOnInit(): void {\n this.cartService.cartEvent.pipe(filter((evt) => evt === CartEventType.CartAdd)).subscribe((res) => {\n this.show();\n });\n }\n ngOnDestroy() {\n if (this.countSubscription) this.countSubscription.unsubscribe();\n }\n calcPrice(): any {\n const price = sumBy(this.carts, (item: any) =>\n item.variant ? item.quantity * item.variant.price : item.quantity * item.product.price,\n );\n this.totalPrice = (price / 100).toFixed(2);\n }\n show() {\n this.info.set(true);\n this.loading = true;\n this.cartService.findDetails({}).subscribe({\n next: (res: any) => {\n this.carts = res.data;\n this.loading = false;\n this.calcPrice();\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n dismiss() {\n this.info.set(false);\n }\n onAdd(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onRemove(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onDelete(cart: any) {\n this.cartService.delete(cart.id).subscribe({\n next: (res) => {\n const index = this.carts.findIndex((item) => item.id === cart.id);\n this.carts.splice(index, 1);\n this.calcPrice();\n },\n });\n }\n}\n","<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" (click)=\"show()\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<div\n [ngClass]=\"{ 'translate-none': info(), 'translate-y-full md:translate-x-full md:translate-y-0': !info() }\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-(--rt-raised-background) w-full md:w-[600px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-2xl font-bold\">购物车</div>\n <button mat-icon-button (click)=\"dismiss()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loading) {\n <div class=\"mt-3 p-1 sm:p-4\">\n @for (item of carts; track item) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n <mat-divider></mat-divider>\n <div class=\"h-14 flex justify-between items-center\">\n <div class=\"text-lg font-bold\">总计</div>\n <div>¥{{ totalPrice }}</div>\n </div>\n <div class=\"flex flex-row gap-3 w-full items-center justify-center mt-3\">\n <button mat-flat-button [routerLink]=\"router()\" (click)=\"dismiss()\" class=\"w-8/12\">\n <a>去购物车结算</a>\n </button>\n <button mat-stroked-button (click)=\"dismiss()\" class=\"w-4/12\">\n <a>继续购物</a>\n </button>\n </div>\n </div>\n }\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"dismiss()\"\n [ngClass]=\"info() ? 'visible' : 'invisible'\"\n class=\"bg-(--rt-10-percent-layer) fixed h-screen inset-0 z-[1000]\"\n></div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CartState {\n $count = new BehaviorSubject(0);\n getCount() {\n return this.$count.asObservable();\n }\n}\n","import { Component, inject, input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { CartService } from '@rolatech/angular-services';\nimport { CartState } from '../../state';\n\n@Component({\n selector: 'rolatech-cart-icon',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './cart-icon.component.html',\n styleUrl: './cart-icon.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class CartIconComponent implements OnInit, OnDestroy {\n router = input<string>('/cart');\n carts: any = [];\n cartService = inject(CartService);\n cartState = inject(CartState);\n\n count = 0;\n private countSubscription!: Subscription;\n ngOnInit(): void {\n this.cartState.$count.subscribe((data) => {\n this.count = data;\n });\n this.loadCarts();\n }\n ngOnDestroy() {\n if (this.countSubscription) this.countSubscription.unsubscribe();\n }\n\n loadCarts() {\n const options = {};\n this.cartService.find(options).subscribe({\n next: (res: any) => {\n this.carts = res.data;\n },\n });\n }\n deleteAll() {\n this.cartService.deleteAll().subscribe({\n next: (res) => {\n this.carts = [];\n },\n });\n }\n}\n","<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col min-w-[320px] divide-y divide-(--rt-10-percent-layer)\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">购物车</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"deleteAll()\">删除全部</span>\n }\n </div>\n <div>\n @if (carts && carts.length > 0) {\n <div class=\"divide-y divide-(--rt-10-percent-layer)\">\n @for (item of carts; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-(--rt-raised-background)\" [routerLink]=\"[router(), item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">暂无</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-(--rt-raised-background)\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-(--rt-brand-color)\"> 前往购物车 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { e as CartIconComponent, d as CartSideComponent, f as CartState, c as cartRoutes } from './rolatech-angular-cart-rolatech-angular-cart-CYsylW_P.mjs';
1
+ export { e as CartIconComponent, d as CartSideComponent, f as CartState, c as cartRoutes } from './rolatech-angular-cart-rolatech-angular-cart-BXV_DS6w.mjs';
2
2
  //# sourceMappingURL=rolatech-angular-cart.mjs.map
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CartCheckoutShippingComponent {
3
+ address: import("@angular/core").ModelSignal<any>;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<CartCheckoutShippingComponent, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<CartCheckoutShippingComponent, "rolatech-cart-checkout-shipping", never, { "address": { "alias": "address"; "required": false; "isSignal": true; }; }, { "address": "addressChange"; }, never, never, true, never>;
6
+ }
@@ -2,9 +2,10 @@ import * as i0 from "@angular/core";
2
2
  export declare class CartCheckoutSummaryComponent {
3
3
  deposit: import("@angular/core").InputSignal<number>;
4
4
  total: import("@angular/core").InputSignal<number>;
5
+ quantity: import("@angular/core").InputSignal<number>;
5
6
  totalDisplay: import("@angular/core").Signal<string>;
6
7
  depositDisplay: import("@angular/core").Signal<string>;
7
8
  remainingDisplay: import("@angular/core").Signal<string>;
8
9
  static ɵfac: i0.ɵɵFactoryDeclaration<CartCheckoutSummaryComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<CartCheckoutSummaryComponent, "rolatech-cart-checkout-summary", never, { "deposit": { "alias": "deposit"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<CartCheckoutSummaryComponent, "rolatech-cart-checkout-summary", never, { "deposit": { "alias": "deposit"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": true; "isSignal": true; }; "quantity": { "alias": "quantity"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
11
  }
@@ -12,6 +12,8 @@ export declare class CartCheckoutVariantComponent extends BaseComponent implemen
12
12
  variant: ProductVariant;
13
13
  variantId: string;
14
14
  quantity: number;
15
+ address: any;
16
+ note: string;
15
17
  constructor();
16
18
  ngOnInit(): void;
17
19
  getProduct(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolatech/angular-cart",
3
- "version": "19.0.0-beta.4",
3
+ "version": "19.0.0-beta.6",
4
4
  "private": false,
5
5
  "peerDependencies": {},
6
6
  "dependencies": {
@@ -1 +1,2 @@
1
- .pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-20{z-index:20}.z-30{z-index:30}.z-\[1000\]{z-index:1000}.z-\[1001\]{z-index:1001}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.-m-1{margin:-.25rem}.m-3{margin:.75rem}.m-auto{margin:auto}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.-ml-2{margin-left:-.5rem}.-mt-4{margin-top:-1rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-14{margin-left:3.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-\[40px\]{margin-left:40px}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-\[6px\]{margin-top:6px}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-4{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:4}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.hidden{display:none}.aspect-video{aspect-ratio:16/9}.h-0{height:0}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-32{height:8rem}.h-4{height:1rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-80{height:20rem}.h-9{height:2.25rem}.h-\[190px\]{height:190px}.h-\[1px\]{height:1px}.h-\[256px\]{height:256px}.h-\[72px\]{height:72px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-8{max-height:2rem}.max-h-9{max-height:2.25rem}.max-h-\[55vh\]{max-height:55vh}.min-h-10{min-height:2.5rem}.min-h-11{min-height:2.75rem}.min-h-\[28px\]{min-height:28px}.min-h-\[320px\]{min-height:320px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-2\/5{width:40%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/12{width:33.333333%}.w-7{width:1.75rem}.w-8\/12{width:66.666667%}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[160px\]{width:160px}.w-\[190px\]{width:190px}.w-\[256px\]{width:256px}.w-\[60px\]{width:60px}.w-full{width:100%}.min-w-10{min-width:2.5rem}.min-w-24{min-width:6rem}.min-w-28{min-width:7rem}.min-w-9{min-width:2.25rem}.min-w-\[100px\]{min-width:100px}.min-w-\[240px\]{min-width:240px}.min-w-\[256px\]{min-width:256px}.min-w-\[28px\]{min-width:28px}.min-w-\[320px\]{min-width:320px}.max-w-24{max-width:6rem}.max-w-8{max-width:2rem}.max-w-\[1120px\]{max-width:1120px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[500px\]{max-width:500px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.grow{flex-grow:1}.translate-y-0{--tw-translate-y:0px}.translate-y-0,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y:100%}.scale-90{--tw-scale-x:.9;--tw-scale-y:.9}.scale-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-dashed>:not([hidden])~:not([hidden]){border-style:dashed}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-x-scroll{overflow-x:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-pre{white-space:pre}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-dashed{border-style:dashed}.border-\[--rt-border-color\]{border-color:var(--rt-border-color)}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.bg-\[--rt-10-percent-layer\]{background-color:var(--rt-10-percent-layer)}.bg-\[--rt-20-percent-layer\]{background-color:var(--rt-20-percent-layer)}.bg-\[--rt-badge-chip-background\]{background-color:var(--rt-badge-chip-background)}.bg-\[--rt-base-background-inverse\]{background-color:var(--rt-base-background-inverse)}.bg-\[--rt-base-background\]{background-color:var(--rt-base-background)}.bg-\[--rt-brand-color\]{background-color:var(--rt-brand-color)}.bg-\[--rt-raised-background\]{background-color:var(--rt-raised-background)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-fixed{background-attachment:fixed}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-1{padding:.25rem!important}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-11{padding-bottom:2.75rem;padding-top:2.75rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-32{padding-bottom:8rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.9rem\]{font-size:.9rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-thin{font-weight:100}.italic{font-style:italic}.leading-3{line-height:.75rem}.leading-none{line-height:1}.text-\[\#4A4A4A\]{--tw-text-opacity:1;color:rgb(74 74 74/var(--tw-text-opacity,1))}.text-\[--rt-brand-color\]{color:var(--rt-brand-color)}.text-\[--rt-text-primary-inverse\]{color:var(--rt-text-primary-inverse)}.text-\[--rt-text-primary\]{color:var(--rt-text-primary)}.text-\[--rt-text-secondary\]{color:var(--rt-text-secondary)}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-transparent{color:transparent}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.opacity-30{opacity:.3}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.outline-dashed{outline-style:dashed}.outline-1{outline-width:1px}.outline-4{outline-width:4px}.outline-transparent{outline-color:transparent}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-\[--rt-10-percent-layer\]:hover{background-color:var(--rt-10-percent-layer)}.hover\:bg-\[--rt-20-percent-layer\]:hover{background-color:var(--rt-20-percent-layer)}.hover\:bg-\[--rt-base-background-inverse\]:hover{background-color:var(--rt-base-background-inverse)}.hover\:bg-\[--rt-base-background\]:hover{background-color:var(--rt-base-background)}.hover\:bg-\[--rt-raised-background\]:hover{background-color:var(--rt-raised-background)}.hover\:text-\[--rt-text-primary-inverse\]:hover{color:var(--rt-text-primary-inverse)}.hover\:text-orange-600:hover{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:outline-\[--rt-raised-background\]:hover{outline-color:var(--rt-raised-background)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.group:hover .group-hover\:visible{visibility:visible}@media (min-width:600px){.sm\:w-1\/3{width:33.333333%}.sm\:p-4{padding:1rem}}@media (min-width:768px){.md\:visible{visibility:visible}.md\:static{position:static}.md\:mb-1{margin-bottom:.25rem}.md\:ml-16{margin-left:4rem}.md\:ml-2{margin-left:.5rem}.md\:ml-8{margin-left:2rem}.md\:mr-0{margin-right:0}.md\:mr-16{margin-right:4rem}.md\:mt-6{margin-top:1.5rem}.md\:line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.md\:block{display:block}.md\:flex{display:flex}.md\:h-auto{height:auto}.md\:h-full{height:100%}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-1\/4{width:25%}.md\:w-2\/3{width:66.666667%}.md\:w-3\/4{width:75%}.md\:w-80{width:20rem}.md\:w-\[600px\]{width:600px}.md\:w-full{width:100%}.md\:translate-x-full{--tw-translate-x:100%}.md\:translate-x-full,.md\:translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:translate-y-0{--tw-translate-y:0px}.md\:flex-row{flex-direction:row}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:flex-col{flex-direction:column}.md\:items-start{align-items:flex-start}.md\:gap-10{gap:2.5rem}.md\:rounded-xl{border-radius:.75rem}.md\:bg-\[--rt-base-background\]{background-color:var(--rt-base-background)}.md\:p-3{padding:.75rem}.md\:px-0{padding-left:0;padding-right:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-16{padding-left:4rem;padding-right:4rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:pb-3{padding-bottom:.75rem}.md\:pr-16{padding-right:4rem}.md\:text-lg{font-size:1.125rem}.md\:text-lg,.md\:text-xl{line-height:1.75rem}.md\:text-xl{font-size:1.25rem}}@media (min-width:1024px){.lg\:mt-4{margin-top:1rem}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:w-1\/6{width:16.666667%}.lg\:w-\[30\%\]{width:30%}.lg\:w-\[70\%\]{width:70%}.lg\:basis-1\/2{flex-basis:50%}.lg\:flex-row{flex-direction:row}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-6{padding-left:1.5rem}.lg\:pr-6,.lg\:px-6{padding-right:1.5rem}.lg\:pt-0{padding-top:0}}@media (min-width:1280px){.xl\:max-w-\[1024px\]{max-width:1024px}}@media (min-width:1536px){.\32xl\:max-w-\[1280px\]{max-width:1280px}}
1
+ /*! tailwindcss v4.0.3 | MIT License | https://tailwindcss.com */
2
+ .pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-\[30px\]{top:30px}.left-\[30px\]{left:30px}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-\[1000\]{z-index:1000}.z-\[1001\]{z-index:1001}.z-\[9999\]{z-index:9999}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.container{width:100%}.m-auto{margin:auto}.mx-auto{margin-inline:auto}.mt-\[6px\]{margin-top:6px}.ml-\[40px\]{margin-left:40px}.ml-\[56px\]{margin-left:56px}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-\[72px\]{height:72px}.h-\[190px\]{height:190px}.h-\[1px\]{height:1px}.h-\[256px\]{height:256px}.h-\[calc\(100vh-10rem\)\]{height:calc(100vh - 10rem)}.h-\[calc\(100vh-128px\)\]{height:calc(100vh - 128px)}.h-\[calc\(100vh-190px\)\]{height:calc(100vh - 190px)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[55vh\]{max-height:55vh}.max-h-\[320px\]{max-height:320px}.min-h-\[28px\]{min-height:28px}.min-h-\[214px\]{min-height:214px}.min-h-\[320px\]{min-height:320px}.min-h-\[420px\]{min-height:420px}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-4\/12{width:33.3333%}.w-8\/12{width:66.6667%}.w-\[60px\]{width:60px}.w-\[128px\]{width:128px}.w-\[160px\]{width:160px}.w-\[190px\]{width:190px}.w-\[256px\]{width:256px}.w-full{width:100%}.max-w-\[128px\]{max-width:128px}.max-w-\[500px\]{max-width:500px}.max-w-\[820px\]{max-width:820px}.max-w-\[1120px\]{max-width:1120px}.max-w-\[1280px\]{max-width:1280px}.max-w-\[1300px\]{max-width:1300px}.max-w-\[1396px\]{max-width:1396px}.max-w-full{max-width:100%}.min-w-\[28px\]{min-width:28px}.min-w-\[40\%\]{min-width:40%}.min-w-\[100px\]{min-width:100px}.min-w-\[240px\]{min-width:240px}.min-w-\[256px\]{min-width:256px}.min-w-\[320px\]{min-width:320px}.flex-1{flex:1}.grow{flex-grow:1}.basis-1\/2{flex-basis:50%}.basis-1\/3{flex-basis:33.3333%}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-dashed>:not(:last-child)){--tw-border-style:dashed;border-style:dashed}:where(.divide-\(--rt-10-percent-layer\)>:not(:last-child)){border-color:var(--rt-10-percent-layer)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\(--rt-border-color\){border-color:var(--rt-border-color)}.border-\(--rt-raised-background\){border-color:var(--rt-raised-background)}.bg-\(--rt-10-percent-layer\){background-color:var(--rt-10-percent-layer)}.bg-\(--rt-20-percent-layer\){background-color:var(--rt-20-percent-layer)}.bg-\(--rt-badge-chip-background\){background-color:var(--rt-badge-chip-background)}.bg-\(--rt-base-background\){background-color:var(--rt-base-background)}.bg-\(--rt-base-background-inverse\){background-color:var(--rt-base-background-inverse)}.bg-\(--rt-brand-color\){background-color:var(--rt-brand-color)}.bg-\(--rt-raised-background\){background-color:var(--rt-raised-background)}.bg-\(--rt-signin-inner-background\){background-color:var(--rt-signin-inner-background)}.bg-\(--rt-text-primary\){background-color:var(--rt-text-primary)}.bg-fixed{background-attachment:fixed}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.text-center{text-align:center}.text-right{text-align:right}.text-\[0\.9rem\]{font-size:.9rem}.text-\[0\.85rem\]{font-size:.85rem}.leading-none{--tw-leading:1;line-height:1}.break-words{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.whitespace-pre{white-space:pre}.text-\(--rt-brand-color\){color:var(--rt-brand-color)}.text-\(--rt-text-primary\){color:var(--rt-text-primary)}.text-\(--rt-text-primary-inverse\){color:var(--rt-text-primary-inverse)}.text-\(--rt-text-secondary\){color:var(--rt-text-secondary)}.text-\[\#4A4A4A\]{color:#4a4a4a}.text-\[\#8C8C8C\]{color:#8c8c8c}.text-transparent{color:#0000}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-30{opacity:.3}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-4{outline-style:var(--tw-outline-style);outline-width:4px}.outline-transparent{outline-color:#0000}.\!filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.outline-dashed{--tw-outline-style:dashed;outline-style:dashed}@media (hover:hover){.group-hover\:visible:is(:where(.group):hover *){visibility:visible}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:rounded-none:hover{border-radius:0}.hover\:bg-\(--rt-10-percent-layer\):hover{background-color:var(--rt-10-percent-layer)}.hover\:bg-\(--rt-20-percent-layer\):hover{background-color:var(--rt-20-percent-layer)}.hover\:bg-\(--rt-base-background\):hover{background-color:var(--rt-base-background)}.hover\:bg-\(--rt-base-background-inverse\):hover{background-color:var(--rt-base-background-inverse)}.hover\:bg-\(--rt-raised-background\):hover{background-color:var(--rt-raised-background)}.hover\:text-\(--rt-brand-color\):hover{color:var(--rt-brand-color)}.hover\:text-\(--rt-text-primary-inverse\):hover{color:var(--rt-text-primary-inverse)}.hover\:underline:hover{text-decoration-line:underline}.hover\:outline-\(--rt-raised-background\):hover{outline-color:var(--rt-raised-background)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-cart-cart-checkout.routes-BY3Et8Oc.mjs","sources":["../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-index/cart-checkout-index.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-index/cart-checkout-index.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-course/cart-checkout-course.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-course/cart-checkout-course.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-product/cart-checkout-product.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-product/cart-checkout-product.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-variant/cart-checkout-variant.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout-variant/cart-checkout-variant.component.html","../../../../packages/angular-cart/src/lib/pages/cart-checkout/cart-checkout.routes.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-cart-checkout-index',\n imports: [CommonModule],\n templateUrl: './cart-checkout-index.component.html',\n styleUrl: './cart-checkout-index.component.scss',\n})\nexport class CartCheckoutIndexComponent {}\n","<p>cart-checkout-index works!</p>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { BaseComponent, ContainerComponent, ThumbnailComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { CourseService, Course, CourseType } from '@rolatech/angular-course';\nimport { OrderService } from '@rolatech/angular-services';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FixedPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-cart-checkout-course',\n imports: [ContainerComponent, ToolbarComponent, ThumbnailComponent, MatButtonModule, FixedPipe],\n templateUrl: './cart-checkout-course.component.html',\n styleUrl: './cart-checkout-course.component.scss',\n})\nexport class CartCheckoutCourseComponent extends BaseComponent implements OnInit {\n courseService = inject(CourseService);\n orderService = inject(OrderService);\n authUserService = inject(AuthUserService);\n course!: Course;\n type = CourseType;\n purchased = false;\n ngOnInit(): void {\n this.findCourse();\n this.findPurchasedByCourseId();\n }\n createOrder() {\n this.orderService.create({ productId: this.id, type: 'COURSE' }).subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n findCourse() {\n this.courseService.get(this.id).subscribe({\n next: (res: any) => {\n this.course = res.data;\n this.titleService.setTitle(`订单确认 - ${this.course.name}`);\n },\n });\n }\n findPurchasedByCourseId() {\n this.courseService.findPurchasedByCourseId(this.id).subscribe({\n next: (res: any) => {\n this.purchased = res.data ? true : false;\n },\n });\n }\n}\n","@if (course) {\n <rolatech-container>\n <rolatech-toolbar title=\"订单确认\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">课程信息</div>\n @if (course) {\n <div>\n <div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] h-fit\">\n @if (course.media) {\n <div class=\"object-cover aspect-video rounded-lg\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"course.media[0].url + '!w400'\" size=\"medium\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video rounded-lg\"></div>\n }\n </div>\n }\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <span class=\"font-medium\">{{ course.name }}</span>\n <span class=\"text-sm text-[--rt-text-secondary]\">类型 {{ type[course.type] }}</span>\n </div>\n </div>\n <div>¥{{ course.pricing[0].total | fixed }}</div>\n </div>\n @if (course.schedule) {\n <div class=\"flex justify-between py-3\">\n <span>开课日期</span>\n <span>{{ course.schedule[0].startAt }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <div class=\"text-2xl font-medium mb-2\">统计</div>\n <div class=\"divide-y\">\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 订单金额 </span>\n <span> ¥{{ course.pricing[0].total | fixed }} </span>\n </div>\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">总计</span>\n <span>¥{{ course.pricing[0].total | fixed }}</span>\n </div>\n <a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"createOrder()\">提交订单</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Component, inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { BaseComponent, ContainerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { AuthUserService } from '@rolatech/angular-auth';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Product, ProductType } from '@rolatech/angular-product';\nimport { OrderService } from '@rolatech/angular-services';\nimport { CartCheckoutSummaryComponent } from '../../../components/cart-checkout-summary/cart-checkout-summary.component';\nimport { CartCheckoutItemComponent } from '../../../components/cart-checkout-item/cart-checkout-item.component';\nimport { CartCheckoutActionComponent } from '../../../components/cart-checkout-action/cart-checkout-action.component';\nimport { CartService, ProductService } from '@rolatech/angular-services';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'rolatech-cart-checkout-product',\n imports: [\n ContainerComponent,\n ToolbarComponent,\n MatButtonModule,\n CartCheckoutSummaryComponent,\n CartCheckoutItemComponent,\n CartCheckoutActionComponent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n TextFieldModule,\n ],\n templateUrl: './cart-checkout-product.component.html',\n styleUrl: './cart-checkout-product.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class CartCheckoutProductComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n cartService = inject(CartService);\n orderService = inject(OrderService);\n authUserService = inject(AuthUserService);\n product!: Product;\n type = ProductType;\n quantity = 1;\n note = '';\n address: any = {};\n ngOnInit(): void {\n this.getProduct();\n }\n createOrder() {\n this.orderService\n .create({ type: 'PRODUCT', productId: this.id, note: this.note, shippingAddress: this.address })\n .subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n getProduct() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.titleService.setTitle(`订单确认 - ${this.product.name}`);\n },\n });\n }\n}\n","@if (product) {\n <rolatech-container>\n <rolatech-toolbar title=\"订单确认\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">商品信息</div>\n <rolatech-cart-checkout-item\n [name]=\"product.name\"\n [description]=\"product.description\"\n [thumbnail]=\"product.media[0].url + '!w200'\"\n [price]=\"product.price\"\n [(quantity)]=\"quantity\"\n ></rolatech-cart-checkout-item>\n </div>\n <div>\n <div class=\"text-md py-2\">收货人信息</div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>姓名</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.name\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>电话</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.phone\" />\n </mat-form-field>\n </div>\n <div class=\"flex flex-col md:flex-row gap-2\">\n <mat-form-field appearance=\"fill\">\n <mat-label>省份</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>城市</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label>地区</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"address.district\" />\n </mat-form-field>\n </div>\n\n <mat-form-field appearance=\"fill\">\n <mat-label>详细地址</mat-label>\n <textarea matInput type=\"text\" [(ngModel)]=\"address.detail\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n <div>\n <div class=\"text-md\">备注</div>\n <mat-form-field appearance=\"fill\">\n <textarea matInput type=\"text\" [(ngModel)]=\"note\" cdkTextareaAutosize cdkAutosizeMinRows=\"3\"></textarea>\n </mat-form-field>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n @if (product.priceType && product.priceType.toString() === 'PARTIAL') {\n <rolatech-cart-checkout-summary [total]=\"product.price\" [deposit]=\"product.deposit\"></rolatech-cart-checkout-summary>\n } @else {\n <rolatech-cart-checkout-summary [total]=\"product.price\"></rolatech-cart-checkout-summary>\n }\n <rolatech-cart-checkout-action\n (create)=\"createOrder()\"\n [title]=\"product.priceType && product.priceType.toString() === 'FIXED' ? '提交订单' : '提交订单'\"\n ></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Component, inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ContainerComponent, ToolbarComponent, BaseComponent } from '@rolatech/angular-components';\nimport { CartCheckoutActionComponent } from '../../../components/cart-checkout-action/cart-checkout-action.component';\nimport { CartCheckoutItemComponent } from '../../../components/cart-checkout-item/cart-checkout-item.component';\nimport { CartCheckoutSummaryComponent } from '../../../components/cart-checkout-summary/cart-checkout-summary.component';\nimport { Product, ProductVariant } from '@rolatech/angular-product';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\nimport { OrderService } from '@rolatech/angular-services';\nimport { ProductService, CartService } from '@rolatech/angular-services';\n\n@Component({\n selector: 'rolatech-cart-checkout-variant',\n imports: [\n ContainerComponent,\n ToolbarComponent,\n MatButtonModule,\n CartCheckoutSummaryComponent,\n CartCheckoutItemComponent,\n CartCheckoutActionComponent,\n OptionsFormatPipe,\n ],\n templateUrl: './cart-checkout-variant.component.html',\n styleUrl: './cart-checkout-variant.component.scss',\n})\nexport class CartCheckoutVariantComponent extends BaseComponent implements OnInit {\n productService = inject(ProductService);\n orderService = inject(OrderService);\n cartService = inject(CartService);\n product!: Product;\n variant!: ProductVariant;\n variantId = '';\n quantity = 1;\n constructor() {\n super();\n this.variantId = this.route.snapshot.params['variant-id'];\n }\n\n ngOnInit(): void {\n this.getProduct();\n }\n getProduct() {\n this.productService.get(this.id).subscribe({\n next: (res: any) => {\n this.product = res.data;\n this.variant = res.data.variants.find((item) => item.id === this.variantId);\n this.titleService.setTitle(`订单确认 - ${this.product.name}`);\n },\n });\n }\n createOrder() {\n this.orderService.create({ type: 'PRODUCT', variantId: this.variant.id }).subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n error: (error) => {\n this.snackBarService.open(error.message);\n },\n });\n }\n}\n","@if (variant) {\n <rolatech-container>\n <rolatech-toolbar title=\"订单确认\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div class=\"flex flex-col\">\n <div class=\"text-xl\">商品信息</div>\n <rolatech-cart-checkout-item\n [name]=\"variant.title ? variant.title : product.name\"\n [description]=\"variant.options | options\"\n [thumbnail]=\"variant.media ? variant.media[0].url + '!w200' : product.media[0].url + '!w200'\"\n [price]=\"variant.price\"\n [(quantity)]=\"quantity\"\n [max]=\"3\"\n ></rolatech-cart-checkout-item>\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary\n [total]=\"variant.price * quantity\"\n [deposit]=\"product.deposit\"\n ></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n </rolatech-container>\n}\n","import { Routes } from '@angular/router';\nimport { CartCheckoutIndexComponent } from './cart-checkout-index/cart-checkout-index.component';\nimport { CartCheckoutCourseComponent } from './cart-checkout-course/cart-checkout-course.component';\nimport { CartCheckoutProductComponent } from './cart-checkout-product/cart-checkout-product.component';\nimport { CartCheckoutVariantComponent } from './cart-checkout-variant/cart-checkout-variant.component';\n\nconst cartCheckoutRoutes: Routes = [\n {\n path: '',\n component: CartCheckoutIndexComponent,\n },\n {\n path: 'courses/:id',\n component: CartCheckoutCourseComponent,\n },\n {\n path: 'products/:id',\n component: CartCheckoutProductComponent,\n },\n {\n path: 'products/:id/variants/:variant-id',\n component: CartCheckoutVariantComponent,\n },\n];\nexport default cartCheckoutRoutes;\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-cart-rolatech-angular-cart-CYsylW_P.mjs","sources":["../../../../packages/angular-cart/src/lib/components/cart-checkout-item/cart-checkout-item.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-item/cart-checkout-item.component.html","../../../../packages/angular-cart/src/lib/components/cart-checkout-action/cart-checkout-action.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-action/cart-checkout-action.component.html","../../../../packages/angular-cart/src/lib/components/cart-checkout-summary/cart-checkout-summary.component.ts","../../../../packages/angular-cart/src/lib/components/cart-checkout-summary/cart-checkout-summary.component.html","../../../../packages/angular-cart/src/lib/pages/cart-index/cart-index.component.ts","../../../../packages/angular-cart/src/lib/pages/cart-index/cart-index.component.html","../../../../packages/angular-cart/src/lib/pages/cart.routes.ts","../../../../packages/angular-cart/src/lib/components/cart-side/cart-side.component.ts","../../../../packages/angular-cart/src/lib/components/cart-side/cart-side.component.html","../../../../packages/angular-cart/src/lib/state/cart.state.ts","../../../../packages/angular-cart/src/lib/components/cart-icon/cart-icon.component.ts","../../../../packages/angular-cart/src/lib/components/cart-icon/cart-icon.component.html","../../../../packages/angular-cart/src/rolatech-angular-cart.ts"],"sourcesContent":["import { Component, computed, input, model, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThumbnailComponent } from '@rolatech/angular-components';\nimport { Product, ProductMedia, ProductVariant } from '@rolatech/angular-product';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-cart-checkout-item',\n imports: [CommonModule, ThumbnailComponent, MatIcon, MatButtonModule],\n templateUrl: './cart-checkout-item.component.html',\n styleUrl: './cart-checkout-item.component.scss',\n})\nexport class CartCheckoutItemComponent {\n thumbnail = input<string>();\n name = input<string>();\n description = input<string>();\n quantity = model<number>(1);\n price = input.required<number>();\n priceDisplay = computed(() => {\n return (this.price() / 100).toFixed(2);\n });\n add = output();\n remove = output();\n delete = output();\n max = input<number>();\n onAdd() {\n this.quantity.update((item) => item + 1);\n this.add.emit();\n }\n onRemove() {\n this.quantity.update((item) => item - 1);\n this.remove.emit();\n }\n onDelete() {\n this.delete.emit();\n }\n}\n","<div class=\"flex justify-between py-3\">\n <div class=\"flex w-full\">\n <div class=\"w-1/4 aspect-video bg-[--rt-raised-background] rounded-lg h-fit\">\n <div class=\"object-cover aspect-video\">\n @defer (on viewport()) {\n <rolatech-thumbnail [src]=\"thumbnail()\" size=\"medium\" mode=\"full\"> </rolatech-thumbnail>\n } @placeholder {\n <div class=\"bg-[--rt-raised-background] h-full w-full object-cover aspect-video\"></div>\n }\n </div>\n </div>\n <div class=\"w-3/4 ml-3 flex flex-col justify-between\">\n <!-- info -->\n <div class=\"flex justify-between\">\n <div class=\"flex flex-col\">\n <span class=\"text-lg font-bold line-clamp-1\">{{ name() }}</span>\n <span class=\"text-sm text-[--rt-text-secondary] mt-2 line-clamp-2\">{{ description() }}</span>\n </div>\n <div class=\"p-1\">¥{{ priceDisplay() }}</div>\n </div>\n <!-- action -->\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex items-center text-sm\">\n <span class=\"mr-3\">数量</span>\n <button mat-icon-button (click)=\"onRemove()\" [disabled]=\"quantity() === 1\">\n <mat-icon>remove</mat-icon>\n </button>\n <span class=\"w-11 text-center\">{{ quantity() }}</span>\n <button mat-icon-button (click)=\"onAdd()\" [disabled]=\"quantity() === max()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n <button mat-icon-button (click)=\"onDelete()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rolatech-cart-checkout-action',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './cart-checkout-action.component.html',\n styleUrl: './cart-checkout-action.component.scss',\n})\nexport class CartCheckoutActionComponent {\n title = input<string>('提交订单');\n create = output();\n onCreate() {\n this.create.emit();\n }\n}\n","<a mat-flat-button class=\"w-full min-h-11 my-6\" (click)=\"onCreate()\">{{ title() }}</a>\n","import { Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'rolatech-cart-checkout-summary',\n imports: [CommonModule],\n templateUrl: './cart-checkout-summary.component.html',\n styleUrl: './cart-checkout-summary.component.scss',\n})\nexport class CartCheckoutSummaryComponent {\n deposit = input(0);\n total = input.required<number>();\n totalDisplay = computed(() => {\n return (this.total() / 100).toFixed(2);\n });\n depositDisplay = computed(() => {\n return (this.deposit() / 100).toFixed(2);\n });\n remainingDisplay = computed(() => {\n return ((this.total() - this.deposit()) / 100).toFixed(2);\n });\n}\n","<div class=\"text-2xl font-medium mb-2\">统计</div>\n<div class=\"divide-y\">\n @if (deposit()) {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span>定金</span>\n <span> ¥{{ depositDisplay() }} </span>\n </div>\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 尾款 </span>\n <span> ¥{{ remainingDisplay() }} </span>\n </div>\n } @else {\n <div class=\"flex justify-between py-2 pb-32 md:pb-3\">\n <span> 应付金额 </span>\n <span> ¥{{ totalDisplay() }} </span>\n </div>\n }\n\n <div class=\"py-3 bottom-0 left-0 right-0 md:static\">\n <div>\n <div class=\"flex justify-between\">\n <span class=\"text-lg font-medium\">总计</span>\n <span>¥{{ totalDisplay() }}</span>\n </div>\n </div>\n </div>\n</div>\n","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CartCheckoutItemComponent } from '../../components/cart-checkout-item/cart-checkout-item.component';\nimport { ContainerComponent, ToolbarComponent } from '@rolatech/angular-components';\nimport { CartService, TitleService } from '@rolatech/angular-services';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\nimport { CartCheckoutActionComponent } from '../../components/cart-checkout-action/cart-checkout-action.component';\nimport { CartCheckoutSummaryComponent } from '../../components/cart-checkout-summary/cart-checkout-summary.component';\nimport { sumBy, map, uniq } from 'lodash';\nimport { ProductService, OrderService } from '@rolatech/angular-services';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'rolatech-cart-index',\n imports: [\n CommonModule,\n ContainerComponent,\n ToolbarComponent,\n CartCheckoutItemComponent,\n CartCheckoutSummaryComponent,\n CartCheckoutActionComponent,\n OptionsFormatPipe,\n ],\n templateUrl: './cart-index.component.html',\n styleUrl: './cart-index.component.scss',\n})\nexport class CartIndexComponent implements OnInit {\n cartService = inject(CartService);\n productService = inject(ProductService);\n orderService = inject(OrderService);\n titleService = inject(TitleService);\n router = inject(Router);\n carts: any = [];\n totalPrice = 0;\n ngOnInit(): void {\n this.titleService.setTitle('购物车');\n this.findCarts();\n }\n findCarts() {\n this.cartService.findDetails({}).subscribe({\n next: (res: any) => {\n this.carts = res.data;\n this.calcPrice();\n },\n });\n }\n calcPrice(): any {\n this.totalPrice = sumBy(this.carts, (item: any) =>\n item.variant ? item.quantity * item.variant.price : item.quantity * item.product.price,\n );\n }\n onAdd(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onRemove(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onDelete(cart: any) {\n this.cartService.delete(cart.id).subscribe({\n next: (res) => {\n const index = this.carts.findIndex((item) => item.id === cart.id);\n this.carts.splice(index, 1);\n this.calcPrice();\n },\n });\n }\n createOrder() {\n const ids = uniq(map(this.carts, 'id')); // [12, 14, 16, 18]\n this.orderService.create({ type: 'PRODUCT', cartIds: ids }).subscribe({\n next: (res: any) => {\n this.router.navigateByUrl(`/orders/${res.data.id}`);\n },\n });\n }\n deleteAllCarts() {}\n}\n","<rolatech-container>\n <rolatech-toolbar title=\"购物车\" large></rolatech-toolbar>\n <div class=\"flex flex-col md:flex-row gap-3 mt-3\">\n <div class=\"md:w-2/3 md:pr-16\">\n <div>\n @for (item of carts; track $index) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n </div>\n </div>\n <div class=\"md:w-1/3\">\n <rolatech-cart-checkout-summary [total]=\"totalPrice\"></rolatech-cart-checkout-summary>\n <rolatech-cart-checkout-action (create)=\"createOrder()\"></rolatech-cart-checkout-action>\n </div>\n </div>\n</rolatech-container>\n","import { Routes } from '@angular/router';\nimport { CartIndexComponent } from './cart-index/cart-index.component';\n\nexport const cartRoutes: Routes = [\n {\n path: '',\n component: CartIndexComponent,\n },\n {\n path: 'checkout',\n loadChildren: () => import('./cart-checkout/cart-checkout.routes'),\n },\n];\n","import { Component, computed, effect, inject, input, model, OnDestroy, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatBadge } from '@angular/material/badge';\nimport { SpinnerComponent } from '@rolatech/angular-components';\nimport { CartEventType, CartService } from '@rolatech/angular-services';\nimport { filter, Subscription } from 'rxjs';\nimport { CartCheckoutItemComponent } from '../cart-checkout-item/cart-checkout-item.component';\nimport { RouterLink } from '@angular/router';\nimport { sumBy } from 'lodash';\nimport { MatDivider } from '@angular/material/divider';\nimport { OptionsFormatPipe } from '@rolatech/angular-common';\n\n@Component({\n selector: 'rolatech-cart-side',\n imports: [\n CommonModule,\n MatButtonModule,\n MatIcon,\n MatBadge,\n SpinnerComponent,\n CartCheckoutItemComponent,\n OptionsFormatPipe,\n RouterLink,\n MatDivider,\n ],\n templateUrl: './cart-side.component.html',\n styleUrl: './cart-side.component.scss',\n})\nexport class CartSideComponent implements OnInit, OnDestroy {\n router = input<string>('/cart');\n cartService = inject(CartService);\n carts: any;\n info = model(false);\n loading = false;\n count = 0;\n totalPrice = '';\n private countSubscription!: Subscription;\n toggle = effect(() => {\n if (this.info()) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = 'auto';\n }\n });\n ngOnInit(): void {\n this.cartService.cartEvent.pipe(filter((evt) => evt === CartEventType.CartAdd)).subscribe((res) => {\n this.show();\n });\n }\n ngOnDestroy() {\n if (this.countSubscription) this.countSubscription.unsubscribe();\n }\n calcPrice(): any {\n const price = sumBy(this.carts, (item: any) =>\n item.variant ? item.quantity * item.variant.price : item.quantity * item.product.price,\n );\n this.totalPrice = (price / 100).toFixed(2);\n }\n show() {\n this.info.set(true);\n this.loading = true;\n this.cartService.findDetails({}).subscribe({\n next: (res: any) => {\n this.carts = res.data;\n this.loading = false;\n this.calcPrice();\n },\n error: (error) => {\n this.loading = false;\n },\n });\n }\n dismiss() {\n this.info.set(false);\n }\n onAdd(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onRemove(cart: any) {\n this.cartService.update(cart.id, { quantity: cart.quantity }).subscribe({\n next: (res) => {\n this.calcPrice();\n },\n });\n }\n onDelete(cart: any) {\n this.cartService.delete(cart.id).subscribe({\n next: (res) => {\n const index = this.carts.findIndex((item) => item.id === cart.id);\n this.carts.splice(index, 1);\n this.calcPrice();\n },\n });\n }\n}\n","<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" (click)=\"show()\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<div\n [ngClass]=\"{ 'translate-none': info(), 'translate-y-full md:translate-x-full md:translate-y-0': !info() }\"\n class=\"fixed top-0 right-0 z-[1001] h-screen p-4 overflow-y-auto transition-transform bg-[--rt-raised-background] w-full md:w-[600px] shadow-xl\"\n>\n <div class=\"flex justify-between items-center sm:p-4\">\n <div class=\"text-2xl font-bold\">购物车</div>\n <button mat-icon-button (click)=\"dismiss()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n @if (!loading) {\n <div class=\"mt-3 p-1 sm:p-4\">\n @for (item of carts; track item) {\n @if (item.variant) {\n <rolatech-cart-checkout-item\n [name]=\"item.variant.title ? item.variant.title : item.product.name\"\n [description]=\"item.variant.options | options\"\n [thumbnail]=\"item.variant.media ? item.variant.media[0].url + '!w400' : item.product.media[0].url + '!w400'\"\n [price]=\"item.variant ? item.variant.price * item.quantity : item.product.price\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n } @else {\n <rolatech-cart-checkout-item\n [name]=\"item.product.name\"\n [description]=\"item.product.description\"\n [thumbnail]=\"item.product.media[0].url + '!w400'\"\n [price]=\"item.product.price * item.quantity\"\n [(quantity)]=\"item.quantity\"\n [max]=\"3\"\n (add)=\"onAdd(item)\"\n (remove)=\"onRemove(item)\"\n (delete)=\"onDelete(item)\"\n ></rolatech-cart-checkout-item>\n }\n }\n <mat-divider></mat-divider>\n <div class=\"h-14 flex justify-between items-center\">\n <div class=\"text-lg font-bold\">总计</div>\n <div>¥{{ totalPrice }}</div>\n </div>\n <div class=\"flex flex-row gap-3 w-full items-center justify-center mt-3\">\n <button mat-flat-button [routerLink]=\"router()\" (click)=\"dismiss()\" class=\"w-8/12\">\n <a>去购物车结算</a>\n </button>\n <button mat-stroked-button (click)=\"dismiss()\" class=\"w-4/12\">\n <a>继续购物</a>\n </button>\n </div>\n </div>\n }\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n</div>\n<div\n (click)=\"dismiss()\"\n [ngClass]=\"info() ? 'visible' : 'invisible'\"\n class=\"bg-[--rt-10-percent-layer] fixed h-screen inset-0 z-[1000]\"\n></div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CartState {\n $count = new BehaviorSubject(0);\n getCount() {\n return this.$count.asObservable();\n }\n}\n","import { Component, inject, input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { CartService } from '@rolatech/angular-services';\nimport { CartState } from '../../state';\n\n@Component({\n selector: 'rolatech-cart-icon',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './cart-icon.component.html',\n styleUrl: './cart-icon.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class CartIconComponent implements OnInit, OnDestroy {\n router = input<string>('/cart');\n carts: any = [];\n cartService = inject(CartService);\n cartState = inject(CartState);\n\n count = 0;\n private countSubscription!: Subscription;\n ngOnInit(): void {\n this.cartState.$count.subscribe((data) => {\n this.count = data;\n });\n this.loadCarts();\n }\n ngOnDestroy() {\n if (this.countSubscription) this.countSubscription.unsubscribe();\n }\n\n loadCarts() {\n const options = {};\n this.cartService.find(options).subscribe({\n next: (res: any) => {\n this.carts = res.data;\n },\n });\n }\n deleteAll() {\n this.cartService.deleteAll().subscribe({\n next: (res) => {\n this.carts = [];\n },\n });\n }\n}\n","<div class=\"px-2\">\n <button mat-icon-button class=\"flex\" onclick=\"this.blur()\" [matMenuTriggerFor]=\"notificationsMenu\">\n <mat-icon aria-hidden=\"false\" [matBadge]=\"count\" [matBadgeHidden]=\"count === 0\">shopping_bag</mat-icon>\n </button>\n</div>\n<mat-menu #notificationsMenu=\"matMenu\" class=\"custom-menu\">\n <div class=\"flex flex-col divide-y min-w-[320px]\">\n <div class=\"h-11 px-3 flex justify-between items-center\">\n <span class=\"font-medium\">购物车</span>\n @if (count) {\n <span class=\"text-sm font-medium cursor-pointer hover:underline\" (click)=\"deleteAll()\">删除全部</span>\n }\n </div>\n <div>\n @if (carts && carts.length > 0) {\n <div class=\"divide-y\">\n @for (item of carts; track item) {\n <div class=\"p-2 cursor-pointer hover:bg-[--rt-raised-background]\" [routerLink]=\"[router(), item.id]\">\n <div>\n {{ item.title }}\n </div>\n <div class=\"text-sm\">\n {{ item.content }}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"h-32 flex justify-center items-center\">暂无</div>\n }\n </div>\n <div class=\"h-11 flex justify-center items-center cursor-pointer hover:bg-[--rt-raised-background]\" [routerLink]=\"router()\">\n <a class=\"flex justify-center items-center\">\n <span class=\"text-sm text-[--rt-brand-color]\"> 前往购物车 </span>\n </a>\n </div>\n </div>\n</mat-menu>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3"],"mappings":"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"}