@liquidcommerce/elements-sdk 2.6.0-beta.43 → 2.6.0-beta.45

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.
@@ -182,6 +182,8 @@ const COMPONENT_TYPE = {
182
182
  PRODUCT_LIST_RETAILERS: 'product-list-retailers',
183
183
  PRODUCT_LIST_ENGRAVING_FORM: 'product-list-engraving-form',
184
184
  PRODUCT_LIST_PRODUCT_PRE_CART: 'product-list-product-pre-cart',
185
+ PRODUCT_LIST_RETAILERS_CONTENT: 'product-list-retailers-content',
186
+ PRODUCT_LIST_PRODUCT_ENGRAVING_LINES: 'product-list-product-engraving-lines',
185
187
  CART: 'cart',
186
188
  CART_RETAILER: 'cart-retailer',
187
189
  CART_ITEM: 'cart-item',
@@ -35,8 +35,8 @@ export declare abstract class ElementsBaseClient {
35
35
  protected readonly logger: ReturnType<typeof LoggerFactory.get>;
36
36
  protected clientPrepared: boolean;
37
37
  protected componentFactoryInitialized: boolean;
38
- protected cartDrawerCreated: boolean;
39
- protected modalCreated: boolean;
38
+ protected cartDrawerElement: HTMLElement | null;
39
+ protected modalElement: HTMLElement | null;
40
40
  protected injectedComponents: Map<string, IInjectedComponent>;
41
41
  constructor(clientConfigs: IClientConfigs);
42
42
  prepare(): Promise<void>;
@@ -22,6 +22,15 @@ export interface IProductList extends IProduct {
22
22
  export interface IProductListProduct extends Omit<IProduct, 'sizes'> {
23
23
  sizes: Record<string, IProductSizeStore>;
24
24
  }
25
+ export interface IUserProducts {
26
+ [productId: string]: {
27
+ selectedSizeId: string;
28
+ selectedFulfillmentType: FulfillmentType;
29
+ selectedFulfillment: IProductFulfillmentStore | null;
30
+ selectedQuantity: number;
31
+ engravingLines?: string[];
32
+ };
33
+ }
25
34
  export interface IProductListStore {
26
35
  products: IProductListProduct[];
27
36
  retailers: Record<string, IRetailer>;
@@ -33,13 +42,6 @@ export interface IProductListStore {
33
42
  rows: number;
34
43
  columns: number;
35
44
  };
36
- userProducts: {
37
- [productId: string]: {
38
- selectedSizeId: string;
39
- selectedFulfillmentType: FulfillmentType;
40
- selectedFulfillment: IProductFulfillmentStore | null;
41
- selectedQuantity: number;
42
- };
43
- };
45
+ userProducts: IUserProducts;
44
46
  loading: boolean;
45
47
  }
@@ -101,6 +101,8 @@ export declare const COMPONENT_TYPE: {
101
101
  readonly PRODUCT_LIST_RETAILERS: "product-list-retailers";
102
102
  readonly PRODUCT_LIST_ENGRAVING_FORM: "product-list-engraving-form";
103
103
  readonly PRODUCT_LIST_PRODUCT_PRE_CART: "product-list-product-pre-cart";
104
+ readonly PRODUCT_LIST_RETAILERS_CONTENT: "product-list-retailers-content";
105
+ readonly PRODUCT_LIST_PRODUCT_ENGRAVING_LINES: "product-list-product-engraving-lines";
104
106
  readonly CART: "cart";
105
107
  readonly CART_RETAILER: "cart-retailer";
106
108
  readonly CART_ITEM: "cart-item";
@@ -1,7 +1,3 @@
1
- import type { IProductListProduct } from 'core/store/interfaces/product-list.interface';
2
- import { type NavigationSourceType } from 'enums';
3
- import type { IFulfillment } from 'interfaces/api/product.interface';
4
- import type { IProductListComponent } from 'interfaces/configs';
5
1
  import { BaseComponent } from '@/core/base-component.service';
6
2
  import type { IAddressComponent } from '@/interfaces/configs';
7
3
  import type { IAddressOptions } from './address.interface';
@@ -9,12 +5,6 @@ export interface IAddressInputComponentParams {
9
5
  productId?: string;
10
6
  isIndependentComponent?: boolean;
11
7
  options?: IAddressOptions;
12
- navigationSource?: NavigationSourceType;
13
- product?: IProductListProduct;
14
- shippingFulfillment?: IFulfillment | null;
15
- onDemandFulfillment?: IFulfillment | null;
16
- showCollections?: boolean;
17
- config?: IProductListComponent;
18
8
  }
19
9
  export declare class AddressInputComponent extends BaseComponent<IAddressInputComponentParams, IAddressComponent> {
20
10
  private suggestions;
@@ -34,7 +24,6 @@ export declare class AddressInputComponent extends BaseComponent<IAddressInputCo
34
24
  private closeDrawer;
35
25
  private handleCancel;
36
26
  private handleCheckAvailability;
37
- private reopenAddToCartDrawer;
38
27
  private handleSuggestionClick;
39
28
  private handleDocumentClick;
40
29
  private searchAddresses;
@@ -4,6 +4,8 @@ export * from './filter-components/product-list-apply-filter-button';
4
4
  export * from './product-list-card-loading.component';
5
5
  export * from './product-list-engraving.component';
6
6
  export * from './product-list-filters.component';
7
+ export * from './product-list-product-engraving-lines.component';
7
8
  export * from './product-list-product-pre-cart.component';
8
9
  export * from './product-list-retailers.component';
10
+ export * from './product-list-retailers-content.component';
9
11
  export * from './product-list-search.component';
@@ -1,10 +1,12 @@
1
1
  import { BaseComponent } from 'core/base-component.service';
2
+ import type { IProductListComponent } from 'interfaces/configs';
2
3
  import type { IEngravingFormComponentParams } from 'modules/ui-components/engraving';
3
- export declare class ProductListEngravingComponent extends BaseComponent<IEngravingFormComponentParams> {
4
+ export declare class ProductListEngravingComponent extends BaseComponent<IEngravingFormComponentParams, IProductListComponent> {
5
+ private resizeHandler;
6
+ protected afterRender?(): void;
7
+ private handleResize;
8
+ protected disconnected?(): void;
4
9
  protected template(): HTMLElement[];
5
10
  private createHeader;
6
11
  private handleClose;
7
- private handleEngravingComplete;
8
- private handleEngravingCancel;
9
- private reopenAddToCartDrawer;
10
12
  }
@@ -0,0 +1,21 @@
1
+ import { BaseComponent } from 'core/base-component.service';
2
+ import type { IProductListComponent } from 'interfaces/configs';
3
+ export interface IProductListProductEngravingLinesComponentParams {
4
+ identifier: string;
5
+ lines: string[];
6
+ maxLines: number;
7
+ maxCharsPerLine: number;
8
+ location?: string;
9
+ fee: number;
10
+ }
11
+ export declare class ProductListProductEngravingLinesComponent extends BaseComponent<IProductListProductEngravingLinesComponentParams, IProductListComponent> {
12
+ private engravingLines;
13
+ private addEngravingButton;
14
+ constructor();
15
+ protected disconnected?(): void;
16
+ template(): HTMLElement;
17
+ private engravingLinesSection;
18
+ private actionButtonsSection;
19
+ private calculateTotalPrice;
20
+ private addToCartButtonText;
21
+ }
@@ -1,25 +1,41 @@
1
1
  import { BaseComponent } from 'core/base-component.service';
2
2
  import type { IProductListProduct } from 'core/store/interfaces/product-list.interface';
3
- import { type DisplayModeType } from 'enums';
4
3
  import type { IFulfillment } from 'interfaces/api/product.interface';
5
4
  import type { IProductListComponent } from 'interfaces/configs';
6
5
  export interface IProductListProductPreCartComponentParams {
7
- displayMode: DisplayModeType;
8
6
  product: IProductListProduct;
9
7
  shippingFulfillment: IFulfillment | null;
10
8
  onDemandFulfillment: IFulfillment | null;
11
- config: IProductListComponent;
12
9
  }
13
10
  export declare class ProductListProductPreCartComponent extends BaseComponent<IProductListProductPreCartComponentParams, IProductListComponent> {
14
11
  private selectedSize;
12
+ private showRetailersContent;
13
+ private showEngravingForm;
14
+ private isInitialRender;
15
+ private priceElement;
16
+ private resizeHandler;
15
17
  constructor();
18
+ protected afterRender?(): void;
19
+ private handleRetailersBack;
20
+ private handleEngravingBack;
21
+ private handleEngravingEdit;
22
+ private handleResize;
23
+ protected disconnected?(): void;
24
+ onStoreWatch(): void;
25
+ private updatePriceDisplay;
26
+ private getEngravingFee;
27
+ private formatPrice;
16
28
  protected template(): HTMLElement[];
29
+ private createRetailersContent;
30
+ private createEngravingFormContent;
31
+ private renderPreCartContent;
32
+ private createDeliversToSectionWrapper;
33
+ private createShippingFromSectionWrapper;
17
34
  private createCartHeader;
18
35
  private createImageSection;
19
36
  private createPricePersonalizationSection;
20
37
  private createDeliversToSection;
21
38
  private createSizesSection;
22
- private handleDeliveryOptionsClick;
23
39
  private createFulfillmentSectionWrapper;
24
40
  createFulfillmentTextSection(selectedFulfillmentType: string, selectedFulfillmentRetailerName: string): HTMLElement;
25
41
  private createAddToCartSection;
@@ -0,0 +1,22 @@
1
+ import type { IProductListProduct } from 'core/store/interfaces/product-list.interface';
2
+ import { type NavigationSourceType } from 'enums';
3
+ import type { IFulfillment } from 'interfaces/api/product.interface';
4
+ import type { IProductListComponent } from 'interfaces/configs';
5
+ import { BaseComponent } from '@/core/base-component.service';
6
+ export interface IProductListRetailersContentParams {
7
+ product?: IProductListProduct;
8
+ productId: string;
9
+ navigationSource?: NavigationSourceType;
10
+ shippingFulfillment?: IFulfillment | null;
11
+ onDemandFulfillment?: IFulfillment | null;
12
+ }
13
+ export declare class ProductListRetailersContentComponent extends BaseComponent<IProductListRetailersContentParams, IProductListComponent> {
14
+ get hostClasses(): string[];
15
+ constructor();
16
+ private getProductId;
17
+ protected template(): HTMLElement[];
18
+ private extractFulfillments;
19
+ private onFulfillmentTabClick;
20
+ private onRetailerCardClick;
21
+ private createNoAvailabilityMessage;
22
+ }
@@ -1,26 +1,22 @@
1
1
  import type { IProductListProduct } from 'core/store/interfaces/product-list.interface';
2
- import { type DisplayModeType, type NavigationSourceType } from 'enums';
2
+ import { type NavigationSourceType } from 'enums';
3
3
  import type { IFulfillment } from 'interfaces/api/product.interface';
4
4
  import type { IProductListComponent } from 'interfaces/configs';
5
5
  import { BaseComponent } from '@/core/base-component.service';
6
6
  export interface IProductListRetailersParams {
7
7
  product?: IProductListProduct;
8
8
  productId: string;
9
- config?: IProductListComponent;
10
- displayMode?: DisplayModeType;
11
9
  navigationSource?: NavigationSourceType;
12
10
  shippingFulfillment?: IFulfillment | null;
13
11
  onDemandFulfillment?: IFulfillment | null;
14
12
  }
15
13
  export declare class ProductListRetailersComponent extends BaseComponent<IProductListRetailersParams, IProductListComponent> {
14
+ private resizeHandler;
16
15
  get hostClasses(): string[];
17
16
  constructor();
18
- private getProductId;
17
+ protected afterRender?(): void;
18
+ private handleResize;
19
+ protected disconnected?(): void;
19
20
  protected template(): HTMLElement[];
20
- private extractFulfillments;
21
- private onFulfillmentTabClick;
22
- private onRetailerCardClick;
23
- private reopenAddToCartDrawer;
24
21
  private createHeader;
25
- private createNoAvailabilityMessage;
26
22
  }
@@ -72,5 +72,6 @@ export declare class ProductListCommands extends BaseCommand {
72
72
  state?: string;
73
73
  }): IProductAvailabilityData;
74
74
  isPresaleActive(sizeAttributes: IProductSizeAttributes): boolean;
75
+ saveEngravingLines: (productId: string, engravingLines: string[]) => void;
75
76
  }
76
77
  export {};
@@ -1,8 +1,5 @@
1
- import type { IProductListProduct } from 'core/store/interfaces/product-list.interface';
2
- import type { IFulfillment } from 'interfaces/api/product.interface';
3
1
  import { BaseComponent } from '@/core/base-component.service';
4
- import { type DisplayModeType, type NavigationSourceType } from '@/enums';
5
- import type { IProductListComponent } from '@/interfaces/configs';
2
+ import { type DisplayModeType } from '@/enums';
6
3
  export interface IEngravingFormComponentParams {
7
4
  identifier: string;
8
5
  context: 'product' | 'cart' | 'product-list';
@@ -12,12 +9,6 @@ export interface IEngravingFormComponentParams {
12
9
  fee: number;
13
10
  location?: string;
14
11
  displayMode?: DisplayModeType;
15
- navigationSource?: NavigationSourceType;
16
- product?: IProductListProduct;
17
- shippingFulfillment?: IFulfillment | null;
18
- onDemandFulfillment?: IFulfillment | null;
19
- showCollections?: boolean;
20
- config?: IProductListComponent;
21
12
  }
22
13
  export declare class EngravingFormComponent extends BaseComponent<IEngravingFormComponentParams, null> {
23
14
  get hostClasses(): string[];
@@ -1,8 +1,13 @@
1
+ import type { IUserProducts } from 'core/store/interfaces/product-list.interface';
1
2
  import { BaseComponent } from '@/core/base-component.service';
2
3
  import type { IProductComponent } from '@/interfaces/configs';
3
4
  export interface IEngravingViewComponentParams {
4
5
  identifier: string;
5
- context: 'cart' | 'checkout';
6
+ context: 'cart' | 'checkout' | 'product-list';
7
+ configs?: IUserProducts;
8
+ productListMaxLines?: number;
9
+ productListMaxCharsPerLine?: number;
10
+ productListLocation?: string;
6
11
  }
7
12
  export declare class EngravingViewComponent extends BaseComponent<IEngravingViewComponentParams, IProductComponent> {
8
13
  get hostClasses(): string[];
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "LiquidCommerce Elements SDK",
4
4
  "license": "UNLICENSED",
5
5
  "author": "LiquidCommerce Team",
6
- "version": "2.6.0-beta.43",
6
+ "version": "2.6.0-beta.45",
7
7
  "homepage": "https://docs.liquidcommerce.co/elements-sdk",
8
8
  "repository": {
9
9
  "type": "git",