@liquidcommerce/elements-sdk 2.6.0-beta.5 → 2.6.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +83 -2519
  2. package/dist/index.checkout.esm.js +15975 -0
  3. package/dist/index.esm.js +18539 -16594
  4. package/dist/ssr-stub.checkout.esm.js +18 -0
  5. package/dist/ssr-stub.esm.js +270 -0
  6. package/dist/types/auto-initialize/checkout.d.ts +2 -0
  7. package/dist/types/auto-initialize/shared-utils.d.ts +29 -0
  8. package/dist/types/{elements-base-client.d.ts → clients/base.d.ts} +15 -2
  9. package/dist/types/clients/builder.d.ts +3 -0
  10. package/dist/types/clients/checkout.d.ts +5 -0
  11. package/dist/types/{elements-client-helper.d.ts → clients/helpers.d.ts} +1 -1
  12. package/dist/types/clients/main.d.ts +3 -0
  13. package/dist/types/constants/core.constant.d.ts +2 -6
  14. package/dist/types/core/api/api-client.service.d.ts +19 -20
  15. package/dist/types/core/api/api-result.d.ts +19 -0
  16. package/dist/types/core/api/auth-client.service.d.ts +40 -13
  17. package/dist/types/core/api/http-client.service.d.ts +0 -1
  18. package/dist/types/core/base-component.service.d.ts +2 -1
  19. package/dist/types/core/client/actions/base-action.service.d.ts +15 -0
  20. package/dist/types/core/client/actions/client-address-action.service.d.ts +18 -0
  21. package/dist/types/core/client/actions/client-cart-action.service.d.ts +37 -0
  22. package/dist/types/core/client/actions/client-checkout-action.service.d.ts +50 -0
  23. package/dist/types/core/client/actions/client-product-action.service.d.ts +12 -0
  24. package/dist/types/core/client/client-action.service.d.ts +6 -70
  25. package/dist/types/core/client/client-config.service.d.ts +5 -2
  26. package/dist/types/core/command/common-command.service.d.ts +2 -1
  27. package/dist/types/core/google-tag-manager.service.d.ts +4 -1
  28. package/dist/types/core/logger/logger.service.d.ts +1 -1
  29. package/dist/types/core/pubsub/interfaces/cart.interface.d.ts +27 -64
  30. package/dist/types/core/pubsub/interfaces/checkout.interface.d.ts +45 -50
  31. package/dist/types/core/pubsub/interfaces/core.interface.d.ts +9 -4
  32. package/dist/types/core/pubsub/interfaces/product.interface.d.ts +16 -75
  33. package/dist/types/core/pubsub/pubsub.service.d.ts +1 -2
  34. package/dist/types/core/singleton-manager.service.d.ts +12 -8
  35. package/dist/types/core/store/interfaces/cart.interface.d.ts +16 -56
  36. package/dist/types/core/store/interfaces/checkout.interface.d.ts +17 -108
  37. package/dist/types/core/store/interfaces/core.interface.d.ts +14 -3
  38. package/dist/types/core/store/interfaces/metadata.interface.d.ts +11 -0
  39. package/dist/types/core/store/interfaces/product-list.interface.d.ts +29 -0
  40. package/dist/types/core/store/interfaces/product.interface.d.ts +1 -0
  41. package/dist/types/core/store/store.constant.d.ts +5 -0
  42. package/dist/types/core/store/store.service.d.ts +1 -0
  43. package/dist/types/core/telemetry/telemetry.service.d.ts +1 -0
  44. package/dist/types/enums/core.enum.d.ts +39 -1
  45. package/dist/types/enums/index.d.ts +0 -1
  46. package/dist/types/index.checkout.d.ts +8 -0
  47. package/dist/types/index.checkout.umd.d.ts +4 -0
  48. package/dist/types/index.d.ts +6 -3
  49. package/dist/types/interfaces/api/cart.interface.d.ts +95 -0
  50. package/dist/types/interfaces/api/checkout.interface.d.ts +217 -0
  51. package/dist/types/interfaces/api/product-list.interface.d.ts +39 -0
  52. package/dist/types/interfaces/api/product.interface.d.ts +2 -3
  53. package/dist/types/interfaces/client.interface.d.ts +72 -0
  54. package/dist/types/interfaces/component.interface.d.ts +7 -0
  55. package/dist/types/interfaces/config.interface.d.ts +41 -0
  56. package/dist/types/interfaces/configs/address.interface.d.ts +1 -1
  57. package/dist/types/interfaces/configs/cart.interface.d.ts +1 -1
  58. package/dist/types/interfaces/configs/checkout.interface.d.ts +2 -1
  59. package/dist/types/interfaces/configs/global.interface.d.ts +5 -3
  60. package/dist/types/interfaces/configs/index.d.ts +1 -0
  61. package/dist/types/interfaces/configs/product-list.interface.d.ts +42 -0
  62. package/dist/types/interfaces/configs/product.interface.d.ts +2 -1
  63. package/dist/types/interfaces/injection.interface.d.ts +47 -0
  64. package/dist/types/modules/address/address.command.d.ts +2 -1
  65. package/dist/types/modules/address/styles/register-styles.d.ts +1 -0
  66. package/dist/types/modules/cart/cart.commands.d.ts +4 -5
  67. package/dist/types/modules/cart/components/cart-body.component.d.ts +2 -1
  68. package/dist/types/modules/cart/components/cart-footer.component.d.ts +0 -1
  69. package/dist/types/modules/cart/components/cart-fulfillment.component.d.ts +0 -2
  70. package/dist/types/modules/cart/styles/register-styles.d.ts +1 -0
  71. package/dist/types/modules/checkout/checkout.commands.d.ts +22 -9
  72. package/dist/types/modules/checkout/checkout.component.d.ts +2 -0
  73. package/dist/types/modules/checkout/components/checkout-billing.component.d.ts +2 -2
  74. package/dist/types/modules/checkout/components/checkout-completed.component.d.ts +3 -0
  75. package/dist/types/modules/checkout/components/checkout-header.component.d.ts +1 -0
  76. package/dist/types/modules/checkout/components/checkout-items.component.d.ts +4 -3
  77. package/dist/types/modules/checkout/components/checkout-presale-countdown.component.d.ts +14 -1
  78. package/dist/types/modules/checkout/components/checkout-presale-expired.component.d.ts +7 -1
  79. package/dist/types/modules/checkout/components/checkout-stripe-form.component.d.ts +2 -1
  80. package/dist/types/modules/checkout/components/checkout-tips.component.d.ts +2 -2
  81. package/dist/types/modules/checkout/components/promo-pc-gc.component.d.ts +0 -2
  82. package/dist/types/modules/checkout/constant.d.ts +3 -0
  83. package/dist/types/modules/checkout/styles/register-styles.d.ts +1 -0
  84. package/dist/types/modules/product/components/product-image-carousel.component.d.ts +3 -0
  85. package/dist/types/modules/product/components/product-retailers-carousel.component.d.ts +3 -0
  86. package/dist/types/modules/product/components/product-retailers-popup-list.component.d.ts +5 -2
  87. package/dist/types/modules/product/product.commands.d.ts +2 -3
  88. package/dist/types/modules/product/styles/register-styles.d.ts +1 -0
  89. package/dist/types/modules/product-list/components/card-components/index.d.ts +5 -0
  90. package/dist/types/modules/product-list/components/card-components/product-badge.d.ts +9 -0
  91. package/dist/types/modules/product-list/components/card-components/product-button.d.ts +9 -0
  92. package/dist/types/modules/product-list/components/card-components/product-price-and-personalization.d.ts +13 -0
  93. package/dist/types/modules/product-list/components/card-components/product-quantity-selector.d.ts +9 -0
  94. package/dist/types/modules/product-list/components/card-components/product-sizes-list.d.ts +13 -0
  95. package/dist/types/modules/product-list/components/filter-components/index.d.ts +7 -0
  96. package/dist/types/modules/product-list/components/filter-components/product-list-apply-filter-button.d.ts +1 -0
  97. package/dist/types/modules/product-list/components/filter-components/product-list-chip.d.ts +5 -0
  98. package/dist/types/modules/product-list/components/filter-components/product-list-filters-chips.d.ts +13 -0
  99. package/dist/types/modules/product-list/components/filter-components/product-list-fulfillment-filter.d.ts +14 -0
  100. package/dist/types/modules/product-list/components/{product-list-filters-subcomponents/product-list-price-filter.components.d.ts → filter-components/product-list-price-filter.d.ts} +1 -1
  101. package/dist/types/modules/product-list/components/filter-components/product-list-toggle-filters.d.ts +7 -0
  102. package/dist/types/modules/product-list/components/index.d.ts +7 -3
  103. package/dist/types/modules/product-list/components/product-list-card-loading.component.d.ts +2 -1
  104. package/dist/types/modules/product-list/components/product-list-engraving.component.d.ts +12 -0
  105. package/dist/types/modules/product-list/components/product-list-filters.component.d.ts +57 -37
  106. package/dist/types/modules/product-list/components/product-list-product-engraving-lines.component.d.ts +22 -0
  107. package/dist/types/modules/product-list/components/product-list-product-pre-cart.component.d.ts +46 -0
  108. package/dist/types/modules/product-list/components/{product-list-filters-subcomponents/product-list-search.component.d.ts → product-list-search.component.d.ts} +11 -4
  109. package/dist/types/modules/product-list/product-list-card.component.d.ts +34 -0
  110. package/dist/types/modules/product-list/product-list-filter.utils.d.ts +8 -0
  111. package/dist/types/modules/product-list/product-list.commands.d.ts +22 -8
  112. package/dist/types/modules/product-list/product-list.component.d.ts +10 -46
  113. package/dist/types/modules/product-list/product-list.constants.d.ts +38 -0
  114. package/dist/types/modules/product-list/product-list.interface.d.ts +12 -36
  115. package/dist/types/modules/product-list/styles/product-list-card.style.d.ts +1 -0
  116. package/dist/types/modules/product-list/styles/product-list-filters.style.d.ts +1 -0
  117. package/dist/types/modules/product-list/styles/register-styles.d.ts +1 -0
  118. package/dist/types/modules/theme-provider/constants/component-groupings.d.ts +1 -0
  119. package/dist/types/modules/theme-provider/constants/css-variable-mappings.d.ts +1 -1
  120. package/dist/types/modules/theme-provider/services/style-registry.service.d.ts +16 -0
  121. package/dist/types/modules/theme-provider/services/stylesheet-generator.service.d.ts +0 -1
  122. package/dist/types/modules/theme-provider/styles/register-styles.d.ts +1 -0
  123. package/dist/types/modules/theme-provider/theme-provider.service.d.ts +2 -1
  124. package/dist/types/modules/ui-components/drawer/drawer.component.d.ts +1 -0
  125. package/dist/types/modules/ui-components/engraving/engraving-form.component.d.ts +6 -1
  126. package/dist/types/modules/ui-components/engraving/engraving-view.component.d.ts +5 -1
  127. package/dist/types/modules/ui-components/input/index.d.ts +0 -1
  128. package/dist/types/modules/ui-components/input/input.component.d.ts +8 -1
  129. package/dist/types/modules/ui-components/lce-element/lce-element.component.d.ts +2 -1
  130. package/dist/types/modules/ui-components/promo-code-ticker/promo-code-ticker.component.d.ts +1 -1
  131. package/dist/types/modules/ui-components/purchase-min-alert/index.d.ts +0 -1
  132. package/dist/types/modules/ui-components/ui.commands.d.ts +5 -1
  133. package/dist/types/ssr/stub.checkout.d.ts +6 -0
  134. package/dist/types/ssr/stub.d.ts +10 -0
  135. package/dist/types/static/icon/check.icon.d.ts +2 -0
  136. package/dist/types/static/icon/index.d.ts +1 -0
  137. package/dist/types/utils/dom-compat.d.ts +2 -0
  138. package/dist/types/utils/format.d.ts +0 -14
  139. package/dist/types/utils/product-selection.d.ts +16 -0
  140. package/dist/types/utils/product.d.ts +10 -0
  141. package/docs/v1/README.md +210 -0
  142. package/docs/v1/api/actions/address-actions.md +281 -0
  143. package/docs/v1/api/actions/cart-actions.md +337 -0
  144. package/docs/v1/api/actions/checkout-actions.md +387 -0
  145. package/docs/v1/api/actions/product-actions.md +115 -0
  146. package/docs/v1/api/client.md +482 -0
  147. package/docs/v1/api/configuration.md +1 -0
  148. package/docs/v1/api/injection-methods.md +247 -0
  149. package/docs/v1/api/typescript-types.md +1 -0
  150. package/docs/v1/api/ui-helpers.md +200 -0
  151. package/docs/v1/examples/advanced-patterns.md +96 -0
  152. package/docs/v1/examples/checkout-flow.md +91 -0
  153. package/docs/v1/examples/custom-theming.md +63 -0
  154. package/docs/v1/examples/multi-product-page.md +90 -0
  155. package/docs/v1/examples/simple-product-page.md +89 -0
  156. package/docs/v1/getting-started/concepts.md +507 -0
  157. package/docs/v1/getting-started/installation.md +328 -0
  158. package/docs/v1/getting-started/quick-start.md +405 -0
  159. package/docs/v1/guides/address-component.md +431 -0
  160. package/docs/v1/guides/best-practices.md +324 -0
  161. package/docs/v1/guides/cart-component.md +737 -0
  162. package/docs/v1/guides/checkout-component.md +672 -0
  163. package/docs/v1/guides/events.md +926 -0
  164. package/docs/v1/guides/product-component.md +686 -0
  165. package/docs/v1/guides/product-list-component.md +598 -0
  166. package/docs/v1/guides/theming.md +216 -0
  167. package/docs/v1/integration/angular.md +39 -0
  168. package/docs/v1/integration/laravel.md +41 -0
  169. package/docs/v1/integration/nextjs.md +69 -0
  170. package/docs/v1/integration/proxy-setup.md +89 -0
  171. package/docs/v1/integration/react.md +64 -0
  172. package/docs/v1/integration/vanilla-js.md +84 -0
  173. package/docs/v1/integration/vue.md +58 -0
  174. package/docs/v1/reference/browser-support.md +44 -0
  175. package/docs/v1/reference/error-handling.md +70 -0
  176. package/docs/v1/reference/performance.md +54 -0
  177. package/docs/v1/reference/troubleshooting.md +72 -0
  178. package/package.json +28 -17
  179. package/dist/types/elements-builder-client.d.ts +0 -2
  180. package/dist/types/elements-client.d.ts +0 -2
  181. package/dist/types/enums/cloud.enum.d.ts +0 -403
  182. package/dist/types/interfaces/cloud/cart.interface.d.ts +0 -132
  183. package/dist/types/interfaces/cloud/catalog.interface.d.ts +0 -43
  184. package/dist/types/interfaces/cloud/checkout.interface.d.ts +0 -211
  185. package/dist/types/interfaces/cloud/core.interface.d.ts +0 -22
  186. package/dist/types/interfaces/cloud/index.d.ts +0 -5
  187. package/dist/types/interfaces/cloud/retailer.interface.d.ts +0 -67
  188. package/dist/types/interfaces/cloud/user.interface.d.ts +0 -100
  189. package/dist/types/interfaces/core.interface.d.ts +0 -111
  190. package/dist/types/modules/cart/cart.commands.helper.d.ts +0 -9
  191. package/dist/types/modules/checkout/components/checkout.type.d.ts +0 -4
  192. package/dist/types/modules/product-list/components/product-list-card.component.d.ts +0 -37
  193. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/index.d.ts +0 -6
  194. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/product-list-apply-filter-button.component.d.ts +0 -1
  195. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/product-list-delivery-options-filter.components.d.ts +0 -16
  196. package/dist/types/modules/product-list/components/product-list-filters-subcomponents/product-list-toggle-filters.components.d.ts +0 -18
  197. package/dist/types/modules/theme-provider/styles/address/index.d.ts +0 -1
  198. package/dist/types/modules/theme-provider/styles/cart/index.d.ts +0 -1
  199. package/dist/types/modules/theme-provider/styles/checkout/index.d.ts +0 -1
  200. package/dist/types/modules/theme-provider/styles/product/index.d.ts +0 -3
  201. package/dist/types/modules/theme-provider/styles/product-list/index.d.ts +0 -1
  202. package/dist/types/modules/theme-provider/styles/ui/index.d.ts +0 -3
  203. package/dist/types/modules/ui-components/input/birthdate-input.component.d.ts +0 -53
  204. package/dist/types/modules/ui-components/purchase-min-alert/helpers.d.ts +0 -7
  205. package/dist/types/utils/helper.d.ts +0 -27
  206. package/docs/ACTIONS.md +0 -1300
  207. package/docs/BROWSER_SUPPORT.md +0 -279
  208. package/docs/CONFIGURATION.md +0 -853
  209. package/docs/DOCUMENTATION_INDEX.md +0 -311
  210. package/docs/EVENTS.md +0 -798
  211. package/docs/PROXY.md +0 -228
  212. package/docs/THEMING.md +0 -592
  213. package/docs/TROUBLESHOOTING.md +0 -793
  214. package/umd/elements.js +0 -1
  215. /package/dist/types/{auto-initialize.d.ts → auto-initialize/main.d.ts} +0 -0
  216. /package/dist/types/modules/{theme-provider/styles/address → address/styles}/address.style.d.ts +0 -0
  217. /package/dist/types/modules/{theme-provider/styles/cart → cart/styles}/cart.style.d.ts +0 -0
  218. /package/dist/types/modules/{theme-provider/styles/checkout → checkout/styles}/checkout.style.d.ts +0 -0
  219. /package/dist/types/modules/{theme-provider/styles/product → product/styles}/image-carousel.style.d.ts +0 -0
  220. /package/dist/types/modules/{theme-provider/styles/product → product/styles}/product.style.d.ts +0 -0
  221. /package/dist/types/modules/{theme-provider/styles/product → product/styles}/retailers.style.d.ts +0 -0
  222. /package/dist/types/modules/product-list/components/{product-list-filters-subcomponents/product-list-checkbox-filter.components.d.ts → filter-components/product-list-checkbox-filter.d.ts} +0 -0
  223. /package/dist/types/modules/{theme-provider/styles/product-list → product-list/styles}/product-list.style.d.ts +0 -0
  224. /package/dist/types/modules/{theme-provider/styles/ui → ui-components/styles}/drawer.style.d.ts +0 -0
  225. /package/dist/types/modules/{theme-provider/styles/ui → ui-components/styles}/loading.style.d.ts +0 -0
  226. /package/dist/types/modules/{theme-provider/styles/ui → ui-components/styles}/promo-code-ticker.style.d.ts +0 -0
@@ -1,43 +1,63 @@
1
- import { BaseComponent } from '@/core/base-component.service';
2
- import type { ICurrentFilters, IExtendedFilterSchema, IPriceConfig } from '../product-list.interface';
1
+ import { BaseComponent } from 'core/base-component.service';
2
+ import type { ProductListFilterType } from 'interfaces/injection.interface';
3
3
  export interface IProductListFiltersParams {
4
- enablePersonalized: boolean;
5
- enablePreOrder: boolean;
6
- enableDeliveryOptions: boolean;
7
- sanitizedFilters?: IExtendedFilterSchema[];
8
- currentFilters?: ICurrentFilters;
9
- priceConfig?: IPriceConfig;
10
- isDrawerMode?: boolean;
11
- onPersonalizedChange?: (enabled: boolean) => void;
12
- onPreOrderChange?: (enabled: boolean) => void;
13
- onDeliveryOptionsChange?: (value: 'all' | 'shipping' | 'onDemand') => void;
14
- onPriceChange?: (min: string, max: string) => void;
15
- onCheckboxFilterChange?: (bucket: string, selectedValues: string[]) => void;
16
- onApplyFilters?: () => void;
4
+ slug: string;
5
+ filters: ProductListFilterType[];
17
6
  }
18
7
  export declare class ProductListFiltersComponent extends BaseComponent<IProductListFiltersParams> {
19
- private priceCollapsed;
20
- private deliveryCollapsed;
21
- private checkboxFilterStates;
22
- private readonly DEFAULT_MIN;
23
- private readonly DEFAULT_MAX;
24
- private priceChevronContainer?;
25
- private priceSliderContainer?;
26
- private deliveryChevronContainer?;
27
- private deliveryOptionsList?;
8
+ private readonly DEFAULT_MIN_PRICE;
9
+ private readonly DEFAULT_MAX_PRICE;
10
+ private readonly FILTER_DEBOUNCE_DELAY_MS;
11
+ private isRenderedInDrawerMode;
12
+ private permanentFilters;
13
+ private availableDynamicFilters;
14
+ private checkboxFilterStateMap;
15
+ private isPriceFilterCollapsed;
16
+ private isFulfillmentFilterCollapsed;
17
+ private appliedFiltersChipsContainer;
18
+ private engravingFiltersContainer?;
19
+ private fulfillmentFilterContainer?;
20
+ private priceFiltersContainer?;
21
+ private dynamicFiltersContainer?;
22
+ private filterButtonContainer?;
23
+ private fulfillmentOptionsList?;
24
+ private priceFilterChevronIcon?;
25
+ private fulfillmentFilterChevronIcon?;
26
+ private priceSliderWrapper?;
27
+ private boundDrawerClosedHandler;
28
+ private priceFilterDebounceTimer;
29
+ constructor();
28
30
  get hostClasses(): string[];
29
- private isSameDayDeliveryDisabled;
30
- private isPersonalizationDisabled;
31
- private isPreOrderDisabled;
32
- private createPersonalizedFilterWrapper;
33
- private createPreOrderFilterWrapper;
34
- private createDeliveryOptionsFilterWrapper;
35
- private toggleDeliveryCollapse;
36
- private createPriceFilterWrapper;
37
- private togglePriceCollapse;
38
- private createCheckboxFilter;
39
- private renderCheckboxItemsWrapper;
40
- private handleCheckboxChange;
41
- private toggleCheckboxFilter;
31
+ protected connected(): Promise<void>;
32
+ private setupDrawerCloseListener;
33
+ protected disconnected(): void;
34
+ private detectIfRenderedInDrawer;
35
+ onStoreWatch(): void;
36
+ private syncFiltersFromStore;
37
+ private refreshUIStates;
38
+ private transformFilterValue;
39
+ private fetchFilters;
40
+ private applyFiltersAndCloseDrawer;
42
41
  protected template(): HTMLElement[];
42
+ private buildFilterButton;
43
+ private openFilterDrawer;
44
+ private buildFilterHeader;
45
+ private clearAllActiveFilters;
46
+ private removeSingleFilter;
47
+ private getFilteredAndSanitizedFilters;
48
+ private buildAppliedFiltersChipsContainer;
49
+ private handleFilterChange;
50
+ private isEngravingCurrentlyDisabled;
51
+ private buildEngravingFilterElements;
52
+ private isSameDayDeliveryCurrentlyDisabled;
53
+ private toggleFulfillmentFilterCollapse;
54
+ private buildFulfillmentFilterElements;
55
+ private togglePriceFilterCollapse;
56
+ private buildPriceFilterElements;
57
+ private buildDynamicFiltersElements;
58
+ private getFilterElements;
59
+ private buildCheckboxFilterElements;
60
+ private toggleCheckboxFilterExpansion;
61
+ private renderCheckboxItemsForFilter;
62
+ private handleCheckboxSelectionChange;
43
63
  }
@@ -0,0 +1,22 @@
1
+ import { BaseComponent } from 'core/base-component.service';
2
+ import type { IProductListComponent } from 'interfaces/configs';
3
+ export interface IProductListProductEngravingLinesComponentParams {
4
+ slug: string;
5
+ identifier: string;
6
+ lines: string[];
7
+ maxLines: number;
8
+ maxCharsPerLine: number;
9
+ location?: string;
10
+ fee: number;
11
+ }
12
+ export declare class ProductListProductEngravingLinesComponent extends BaseComponent<IProductListProductEngravingLinesComponentParams, IProductListComponent> {
13
+ private engravingLines;
14
+ private addEngravingButton;
15
+ constructor();
16
+ protected disconnected?(): void;
17
+ template(): HTMLElement;
18
+ private engravingLinesSection;
19
+ private actionButtonsSection;
20
+ private calculateTotalPrice;
21
+ private addToCartButtonText;
22
+ }
@@ -0,0 +1,46 @@
1
+ import { BaseComponent, type IOnStoreChanged } from 'core/base-component.service';
2
+ import type { IProductListComponent } from 'interfaces/configs';
3
+ export interface IProductListProductPreCartComponentParams {
4
+ slug: string;
5
+ productId: string;
6
+ }
7
+ export declare class ProductListProductPreCartComponent extends BaseComponent<IProductListProductPreCartComponentParams, IProductListComponent> {
8
+ private showRetailersContent;
9
+ private showEngravingForm;
10
+ private isInitialRender;
11
+ private priceElement;
12
+ private imageElement;
13
+ private fulfillmentTextElement;
14
+ private addToCartButton;
15
+ private personalizeElement;
16
+ private previousSelectedSizeId;
17
+ private previousSelectedFulfillmentId;
18
+ constructor();
19
+ private getListConfig;
20
+ protected afterRender?(): void;
21
+ private handleRetailersBack;
22
+ private handleEngravingBack;
23
+ private handleEngravingEdit;
24
+ protected disconnected?(): void;
25
+ private getSelectedSize;
26
+ onStoreWatch(changes: IOnStoreChanged[]): void;
27
+ private updatePriceDisplay;
28
+ private updateFulfillmentText;
29
+ private updateImage;
30
+ private updatePersonalizeVisibility;
31
+ private updateAddToCartButton;
32
+ private getEngravingFee;
33
+ protected template(): HTMLElement[];
34
+ private createEngravingFormContent;
35
+ private renderPreCartContent;
36
+ private createDeliversToSectionWrapper;
37
+ private createShippingFromSectionWrapper;
38
+ private createCartHeader;
39
+ private createImageSection;
40
+ private createPricePersonalizationSection;
41
+ private createDeliversToSection;
42
+ private createFulfillmentSectionWrapper;
43
+ private createFulfillmentTextSection;
44
+ private createAddToCartSection;
45
+ private handleAddToCart;
46
+ }
@@ -1,16 +1,23 @@
1
1
  import { BaseComponent } from '@/core/base-component.service';
2
2
  export interface IProductListSearchParams {
3
- searchTerm?: string;
4
- handleInputChange?: (search: string) => void;
5
- clearSearch?: VoidFunction;
3
+ slug: string;
6
4
  }
7
5
  export declare class ProductListSearchComponent extends BaseComponent<IProductListSearchParams> {
8
6
  private searchInput?;
9
7
  private clearButton?;
8
+ private debounceTimer;
9
+ private currentSearchTerm;
10
10
  private readonly ALLOWED_CHARACTERS;
11
11
  private readonly MAX_LENGTH;
12
+ private readonly DEFAULT_DEBOUNCE_MS;
12
13
  get hostClasses(): string[];
14
+ disconnectedCallback(): void;
15
+ private fetchProducts;
13
16
  protected template(): HTMLElement[];
14
- private sanitizeInput;
17
+ private handleDebouncedSearch;
18
+ private handleClearSearch;
19
+ private cleanInput;
20
+ private normalizeForSearch;
15
21
  private updateClearButtonVisibility;
22
+ private cleanupDebounceTimer;
16
23
  }
@@ -0,0 +1,34 @@
1
+ import type { IProductListComponent } from 'interfaces/configs';
2
+ import { BaseComponent, type IOnStoreChanged } from '@/core/base-component.service';
3
+ export interface IProductListCardParams {
4
+ slug: string;
5
+ productId: string;
6
+ productUrl?: string;
7
+ }
8
+ export declare class ProductListCardComponent extends BaseComponent<IProductListCardParams, IProductListComponent> {
9
+ private imageElement;
10
+ private priceElement;
11
+ private personalizeElement;
12
+ private fulfillmentTextElement;
13
+ private addToCartButton;
14
+ private previousSelectedSizeId;
15
+ private previousSelectedFulfillmentId;
16
+ constructor();
17
+ private getListConfig;
18
+ get hostClasses(): string[];
19
+ protected disconnected?(): void;
20
+ onStoreWatch(changes: IOnStoreChanged[]): void;
21
+ private getSelectedSize;
22
+ protected template(): HTMLElement[];
23
+ private updatePriceDisplay;
24
+ private updateFulfillmentText;
25
+ private updateImage;
26
+ private updatePersonalizeVisibility;
27
+ private updateAddToCartButton;
28
+ private generateProductUrl;
29
+ private createImageSection;
30
+ private createContentSection;
31
+ private createFulfillmentSectionWrapper;
32
+ private createFulfillmentTextSection;
33
+ private createAddToCartSection;
34
+ }
@@ -0,0 +1,8 @@
1
+ import type { IFilterSchema, IProductSearchParams } from '@/interfaces/api/product-list.interface';
2
+ import type { ProductListFilterType } from '@/interfaces/injection.interface';
3
+ import type { IExtendedFilterSchema, IProductListFilters } from './product-list.interface';
4
+ export declare const FILTER_TYPE_MAP: Record<string, string>;
5
+ export declare function getSanitizedFilters(filters: IFilterSchema[], configuredFilters: ProductListFilterType[]): IExtendedFilterSchema[];
6
+ export declare function syncFiltersToAppliedFormat(filters: IProductListFilters): Record<string, string[]>;
7
+ export declare function buildSearchParams(slug: string, page: number, perPage: number, searchTerm: string, currentFilters: IProductListFilters, configuredFilters: ProductListFilterType[]): IProductSearchParams;
8
+ export declare function buildCurrentFiltersFromState(stateFilters: Record<string, string[]>): IProductListFilters;
@@ -1,16 +1,30 @@
1
1
  import { BaseCommand } from '@/core/command/base-command.service';
2
- import type { IProduct } from '@/interfaces/api/product.interface';
3
- import type { ICatalog, ICatalogParams } from '@/interfaces/cloud';
2
+ import { type FulfillmentType } from '@/enums';
3
+ import type { IFilterSchema, INavigationResponse, IProductSearchParams, IProductSearchResponse } from '@/interfaces/api/product-list.interface';
4
+ import type { ProductListFilterType } from '@/interfaces/injection.interface';
4
5
  import { type AddItemParams } from '@/modules/cart/cart.commands';
6
+ import type { IExtendedFilterSchema, IPagination, IProductListFilters } from './product-list.interface';
5
7
  export declare class ProductListCommands extends BaseCommand {
6
8
  private readonly uiCommands;
7
9
  private readonly cartCommands;
8
10
  constructor();
9
11
  static getInstance(): ProductListCommands;
10
- getProductList(params: ICatalogParams): Promise<ICatalog>;
11
- addToCart(params: AddItemParams): Promise<void>;
12
- addPresaleToCart(params: AddItemParams): Promise<void>;
13
- trackViewItemList(products: IProduct[]): void;
14
- trackSelectItem(product: IProduct): void;
15
- private convertProductToBaseItem;
12
+ initializeListStore(slug: string): void;
13
+ updateSearchTerm(slug: string, searchTerm: string): void;
14
+ setLoading(slug: string, isLoading: boolean): void;
15
+ loadInitialProducts(slug: string, page: number, perPage: number, searchTerm: string, currentFilters: IProductListFilters, configuredFilters: ProductListFilterType[]): Promise<void>;
16
+ loadMoreProducts(slug: string, perPage: number, searchTerm: string, currentFilters: IProductListFilters, configuredFilters: ProductListFilterType[]): Promise<void>;
17
+ getProductList(params: IProductSearchParams): Promise<IProductSearchResponse>;
18
+ syncFiltersFromComponent(slug: string, filters: IProductListFilters): void;
19
+ getSanitizedFilters(filters: IFilterSchema[], configuredFilters: ProductListFilterType[]): IExtendedFilterSchema[];
20
+ setGridConfig(slug: string, rows: number, columns: number): void;
21
+ getItemsPerPage(slug: string): number;
22
+ updatePagination(navigation: INavigationResponse | undefined): IPagination;
23
+ createInitialPagination(): IPagination;
24
+ addToCart(slug: string, productId: string, params: AddItemParams): Promise<void>;
25
+ selectSize(slug: string, productId: string, sizeId: string): Promise<void>;
26
+ changeFulfillmentType: (slug: string, productId: string, newFulfillmentType: FulfillmentType) => Promise<void>;
27
+ selectFulfillment: (slug: string, productId: string, selectedFulfillmentId: string) => Promise<void>;
28
+ updateQuantity: (slug: string, productId: string, quantity: number) => void;
29
+ saveEngravingLines(slug: string, productId: string, engravingLines: string[]): void;
16
30
  }
@@ -1,74 +1,37 @@
1
+ import type { IProductListComponent } from 'interfaces/configs';
1
2
  import { BaseComponent, type IOnStoreChanged } from '@/core/base-component.service';
2
- import type { ProductListCardVariantType, ProductListFilterType } from '@/interfaces/core.interface';
3
+ import type { ProductListFilterType } from '@/interfaces/injection.interface';
3
4
  export interface IProductListComponentParams {
4
- cardVariant: ProductListCardVariantType;
5
+ slug: string;
5
6
  rows: number;
6
7
  columns: number;
7
- fillCard: boolean;
8
8
  filters: ProductListFilterType[];
9
9
  productUrl?: string;
10
10
  }
11
- export declare class ProductListComponent extends BaseComponent<IProductListComponentParams> {
11
+ export declare class ProductListComponent extends BaseComponent<IProductListComponentParams, IProductListComponent> {
12
12
  private products;
13
- private retailers;
14
13
  private pagination;
15
- private sanitizedFilters;
16
- private searchFilter;
17
- private currentFilters;
18
14
  private cardsContainer;
19
- private filtersContainer;
20
- private searchContainer;
21
15
  private sentinelElement;
22
- private personalizedSwitch;
23
- private preOrderSwitch;
24
- private deliveryRadios;
25
- private deliveryRadioLabels;
26
16
  private loadingState;
27
17
  private scrollObserver;
28
18
  private initializationPromise;
29
- private filterDebounceTimer;
30
- private readonly FILTER_DEBOUNCE_MS;
31
- private filterButton;
19
+ private unsubscribeFromState?;
32
20
  get hostClasses(): string[];
33
21
  constructor();
34
22
  protected connected(): Promise<void>;
35
- disconnectedCallback(): void;
23
+ disconnected(): void;
36
24
  private initializeComponent;
37
- protected template(): HTMLElement[];
25
+ private toProductArray;
38
26
  private setLoadingState;
39
27
  private renderCurrentState;
40
- private sanitizeFilterValues;
41
- private processResponseFilters;
42
28
  private loadInitialProducts;
43
- private updateFiltersComponent;
44
29
  private loadMoreProducts;
45
- private mergeRetailers;
46
- private updatePagination;
47
- private buildApiParams;
48
- private buildFiltersFromState;
49
- private syncFiltersFromResponse;
50
- private onFilterChange;
51
- private resetPagination;
52
- private updateFiltersUI;
53
- private updatePersonalizedSwitch;
54
- private updatePreOrderSwitch;
55
- private updateDeliveryOptions;
56
- private updateRadioLabel;
57
- private isPersonalizationDisabled;
58
- private isPreOrderDisabled;
59
- private isSameDayDeliveryDisabled;
60
30
  private createCardsContainer;
61
31
  private renderLoadingState;
62
32
  private renderProducts;
63
33
  private appendNewProducts;
64
- private createProductCard;
65
- private filterSanitizedFilters;
66
- private buildFiltersParams;
67
- private createSearchContainer;
68
- private createFiltersContainer;
69
- private storeFilterElementReferences;
70
- private openFiltersDrawer;
71
- private createFilterButton;
34
+ private getResponsiveColumns;
72
35
  private setupInfiniteScroll;
73
36
  private createScrollSentinel;
74
37
  private updateSentinel;
@@ -80,6 +43,7 @@ export declare class ProductListComponent extends BaseComponent<IProductListComp
80
43
  private showErrorState;
81
44
  private clearCardsContainer;
82
45
  private cleanupScrollObserver;
83
- onStoreWatch(changes: IOnStoreChanged[]): Promise<void>;
84
46
  private doCleanup;
47
+ onStoreWatch(changes: IOnStoreChanged[]): Promise<void>;
48
+ protected template(): HTMLElement[];
85
49
  }
@@ -0,0 +1,38 @@
1
+ export declare const FILTER_KEYS: {
2
+ readonly BRANDS: "brands";
3
+ readonly FLAVOR: "flavor";
4
+ readonly FULFILLMENT: "fulfillment";
5
+ readonly TAGS: "tags";
6
+ readonly REGION: "region";
7
+ readonly VARIETY: "variety";
8
+ readonly ENGRAVING: "engraving";
9
+ readonly PRICE: "price";
10
+ readonly AVAILABILITY: "availability";
11
+ readonly CATEGORIES: "categories";
12
+ readonly SIZES: "sizes";
13
+ readonly COLORS: "colors";
14
+ readonly APPELLATION: "appellation";
15
+ readonly COUNTRY: "country";
16
+ readonly VINTAGE: "vintage";
17
+ readonly MATERIALS: "materials";
18
+ readonly COLLECTION_TAGS: "collectionTags";
19
+ };
20
+ export declare const FULFILLMENT_OPTIONS: {
21
+ readonly ALL: "all";
22
+ readonly SHIPPING: "shipping";
23
+ readonly ON_DEMAND: "onDemand";
24
+ };
25
+ export declare const PRICE_OPTIONS: {
26
+ readonly MIN: "0";
27
+ readonly MAX: "1000";
28
+ };
29
+ export declare const FILTER_VALUE_OPTIONS: {
30
+ readonly YES: "YES";
31
+ readonly NO: "NO";
32
+ };
33
+ export declare const FILTER_LOADING_STATE: {
34
+ readonly IDLE: "idle";
35
+ readonly LOADING_INITIAL: "loading_initial";
36
+ readonly LOADING_MORE: "loading_more";
37
+ readonly ERROR: "error";
38
+ };
@@ -1,27 +1,20 @@
1
- import type { IFilterValue } from 'enums';
2
- export interface IProductListFilters {
3
- personalized: boolean;
4
- preOrder: boolean;
5
- deliveryOptions: 'all' | 'shipping' | 'onDemand';
6
- price?: {
7
- min?: string;
8
- max?: string;
9
- };
10
- [key: string]: any;
1
+ import type { IFilterValue } from '@/interfaces/api/product-list.interface';
2
+ export interface IPriceConfig {
3
+ min?: string;
4
+ max?: string;
11
5
  }
12
- export interface IExtendedFilterValue extends IFilterValue {
13
- formattedValue?: string;
6
+ export interface IProductListFilters {
7
+ price?: IPriceConfig;
8
+ [key: string]: boolean | string | string[] | IPriceConfig | undefined;
14
9
  }
15
10
  export interface IExtendedFilterSchema {
16
- bucket: string;
17
- values: IExtendedFilterValue[];
18
- }
19
- export interface IProductListSearch {
20
- searchTerm?: string;
11
+ type: string;
12
+ values: IFilterValue[];
21
13
  }
22
14
  export interface IPagination {
23
15
  currentPage: number;
24
16
  totalPages: number;
17
+ totalCount: number;
25
18
  hasMorePages: boolean;
26
19
  }
27
20
  export interface ICheckboxLabelStates {
@@ -29,29 +22,15 @@ export interface ICheckboxLabelStates {
29
22
  selectedValues: Set<string>;
30
23
  searchInput: HTMLInputElement | null;
31
24
  checkboxList: HTMLElement | null;
32
- filteredItems: IExtendedFilterValue[];
25
+ filteredItems: IFilterValue[];
33
26
  contentElement: HTMLElement | null;
34
27
  iconElement: HTMLElement | null;
35
28
  hasUserInteraction: boolean;
36
29
  }
37
- export interface ICurrentFilters {
38
- personalized: boolean;
39
- preOrder: boolean;
40
- deliveryOptions: 'all' | 'shipping' | 'onDemand';
41
- price?: {
42
- min?: string;
43
- max?: string;
44
- };
45
- [key: string]: any;
46
- }
47
- export interface IPriceConfig {
48
- min: string;
49
- max: string;
50
- }
51
30
  export interface ICreateCheckboxItemParams {
52
31
  filter: IExtendedFilterSchema;
53
32
  state: ICheckboxLabelStates;
54
- item: IExtendedFilterValue;
33
+ item: IFilterValue;
55
34
  onChange: VoidFunction;
56
35
  }
57
36
  export interface IHandleCheckboxFilterSearchParams {
@@ -75,6 +54,3 @@ export interface IRenderCheckboxItemsParams {
75
54
  state: ICheckboxLabelStates;
76
55
  onCheckboxChange: (value: string, checked: boolean) => void;
77
56
  }
78
- export interface ICreateFiltersContainerParams {
79
- isDrawerMode?: boolean;
80
- }
@@ -0,0 +1 @@
1
+ export declare const getProductListCardStyles: () => string;
@@ -0,0 +1 @@
1
+ export declare const getProductListFiltersStyles: () => string;
@@ -3,3 +3,4 @@ export declare const productGroupComponents: ComponentType[];
3
3
  export declare const addressGroupComponents: ComponentType[];
4
4
  export declare const cartGroupComponents: ComponentType[];
5
5
  export declare const checkoutGroupComponents: ComponentType[];
6
+ export declare const productListGroupComponent: ComponentType[];
@@ -1,2 +1,2 @@
1
- export type StylesheetType = 'global' | 'ui' | 'product' | 'address' | 'cart' | 'checkout';
1
+ export type StylesheetType = 'global' | 'ui' | 'product' | 'address' | 'cart' | 'checkout' | 'product-list';
2
2
  export declare function getCSSVariableMapping(componentPrefix: string): Record<string, string>;
@@ -0,0 +1,16 @@
1
+ import type { StylesheetType } from '../constants/css-variable-mappings';
2
+ export type StyleGetter = () => string;
3
+ declare class StyleRegistryService {
4
+ private static instance;
5
+ private registry;
6
+ private constructor();
7
+ static getInstance(): StyleRegistryService;
8
+ register(type: StylesheetType, getter: StyleGetter, priority?: number): void;
9
+ getStyleGetters(type: StylesheetType): StyleGetter[];
10
+ getStyles(type: StylesheetType): string[];
11
+ hasStyles(type: StylesheetType): boolean;
12
+ getRegisteredTypes(): StylesheetType[];
13
+ clear(): void;
14
+ }
15
+ export declare const styleRegistry: StyleRegistryService;
16
+ export { StyleRegistryService };
@@ -9,5 +9,4 @@ export declare class StylesheetGeneratorService {
9
9
  private createStylesheet;
10
10
  private isCSSStyleSheetSupported;
11
11
  updateVariablesInStylesheet(type: StylesheetType, themeConfig: any, prefix: string): void;
12
- private getStylesheetStyles;
13
12
  }
@@ -1,5 +1,5 @@
1
1
  import { type ComponentType } from '@/enums';
2
- import type { ConfigsKeyType, ConfigsType, IAllConfigs, UpdateAddressComponent, UpdateCartComponent, UpdateCheckoutComponent, UpdateComponentGlobalConfigs, UpdateProductComponent } from '@/interfaces/configs';
2
+ import type { ConfigsKeyType, ConfigsType, IAllConfigs, UpdateAddressComponent, UpdateCartComponent, UpdateCheckoutComponent, UpdateComponentGlobalConfigs, UpdateProductComponent, UpdateProductListComponent } from '@/interfaces/configs';
3
3
  import { type GeneratedStylesheet } from './services/stylesheet-generator.service';
4
4
  export declare class ThemeProviderService {
5
5
  private data;
@@ -14,6 +14,7 @@ export declare class ThemeProviderService {
14
14
  updateAddressComponent(data: UpdateAddressComponent): void;
15
15
  updateCartComponent(data: UpdateCartComponent): void;
16
16
  updateCheckoutComponent(data: UpdateCheckoutComponent): void;
17
+ updateProductListComponent(data: UpdateProductListComponent): void;
17
18
  getConfigs<T = any>(type: ConfigsKeyType): T;
18
19
  getComponentConfig(componentType: ComponentType): ConfigsType | undefined;
19
20
  getStylesheet(componentType: ComponentType): GeneratedStylesheet[];
@@ -6,6 +6,7 @@ export declare class DrawerComponent extends BaseComponent {
6
6
  private backdropElement;
7
7
  private contentContainer;
8
8
  private currentContentType;
9
+ private mode;
9
10
  private isTransitioning;
10
11
  private readonly boundHandleKeydown;
11
12
  constructor();
@@ -1,12 +1,15 @@
1
1
  import { BaseComponent } from '@/core/base-component.service';
2
+ import { type DisplayModeType } from '@/enums';
2
3
  export interface IEngravingFormComponentParams {
3
4
  identifier: string;
4
- context: 'product' | 'cart';
5
+ context: 'product' | 'cart' | 'product-list';
6
+ slug?: string;
5
7
  lines: string[];
6
8
  maxLines: number;
7
9
  maxCharsPerLine: number;
8
10
  fee: number;
9
11
  location?: string;
12
+ displayMode?: DisplayModeType;
10
13
  }
11
14
  export declare class EngravingFormComponent extends BaseComponent<IEngravingFormComponentParams, null> {
12
15
  get hostClasses(): string[];
@@ -15,10 +18,12 @@ export declare class EngravingFormComponent extends BaseComponent<IEngravingForm
15
18
  private addToCartButton;
16
19
  private fulfillmentId;
17
20
  private partNumber;
21
+ private isPresale;
18
22
  beforeConnected(): void;
19
23
  private calculateTotalPrice;
20
24
  private productInformationSection;
21
25
  private addToCartButtonText;
26
+ private getFulfillmentData;
22
27
  private retailersSection;
23
28
  private engravingLinesSection;
24
29
  private actionButtonsSection;
@@ -2,7 +2,11 @@ import { BaseComponent } from '@/core/base-component.service';
2
2
  import type { IProductComponent } from '@/interfaces/configs';
3
3
  export interface IEngravingViewComponentParams {
4
4
  identifier: string;
5
- context: 'cart' | 'checkout';
5
+ context: 'cart' | 'checkout' | 'product-list';
6
+ slug?: string;
7
+ productListMaxLines?: number;
8
+ productListMaxCharsPerLine?: number;
9
+ productListLocation?: string;
6
10
  }
7
11
  export declare class EngravingViewComponent extends BaseComponent<IEngravingViewComponentParams, IProductComponent> {
8
12
  get hostClasses(): string[];
@@ -1,2 +1 @@
1
- export * from './birthdate-input.component';
2
1
  export * from './input.component';
@@ -5,9 +5,13 @@ export interface IInputValidation {
5
5
  max?: number;
6
6
  pattern?: string;
7
7
  customValidator?: (value: string) => string | null;
8
+ minYear?: number;
9
+ maxYear?: number;
10
+ minAge?: number;
11
+ maxAge?: number;
8
12
  }
9
13
  export interface IInputComponentParams {
10
- inputType: 'text' | 'number' | 'email' | 'tel' | 'date';
14
+ inputType: 'text' | 'number' | 'email' | 'tel' | 'date' | 'birthdate';
11
15
  value?: string | null;
12
16
  placeholder?: string;
13
17
  className?: string;
@@ -31,6 +35,9 @@ export declare class InputComponent extends BaseComponent<IInputComponentParams,
31
35
  private validateEmail;
32
36
  private validateTel;
33
37
  private validateDate;
38
+ private parseDateString;
39
+ private calculateAge;
40
+ private validateDateConstraints;
34
41
  private isFieldComplete;
35
42
  private validateInput;
36
43
  private scheduleValidation;
@@ -1,5 +1,6 @@
1
1
  import type { ComponentType } from '@/enums';
2
- export declare class LceElementComponent extends HTMLElement {
2
+ import { SafeHTMLElement } from '@/utils/dom-compat';
3
+ export declare class LceElementComponent extends SafeHTMLElement {
3
4
  private _initialized;
4
5
  protected _container: ShadowRoot | null;
5
6
  private _wrappedComponentRerender;