@constructor-io/constructorio-ui-plp 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/constructorio-ui-plp-bundled.js +12 -12
  2. package/lib/cjs/components/CioPlp/CioPlp.js +2 -2
  3. package/lib/cjs/components/ProductCard/ProductCard.js +24 -21
  4. package/lib/cjs/components/ProductCard/index.js +0 -1
  5. package/lib/cjs/components/RenderPropsWrapper/CustomHtmlRender.js +24 -0
  6. package/lib/cjs/components/RenderPropsWrapper/RenderPropsWrapper.js +15 -0
  7. package/lib/cjs/hooks/useCioPlpProvider.js +3 -1
  8. package/lib/cjs/hooks/useGroups.js +7 -1
  9. package/lib/cjs/hooks/useOptionsList.js +7 -5
  10. package/lib/cjs/utils/itemFieldGetters.js +6 -1
  11. package/lib/cjs/version.js +1 -1
  12. package/lib/mjs/components/CioPlp/CioPlp.js +2 -2
  13. package/lib/mjs/components/ProductCard/ProductCard.js +23 -21
  14. package/lib/mjs/components/ProductCard/index.js +0 -1
  15. package/lib/mjs/components/RenderPropsWrapper/CustomHtmlRender.js +20 -0
  16. package/lib/mjs/components/RenderPropsWrapper/RenderPropsWrapper.js +11 -0
  17. package/lib/mjs/hooks/useCioPlpProvider.js +3 -1
  18. package/lib/mjs/hooks/useGroups.js +8 -2
  19. package/lib/mjs/hooks/useOptionsList.js +8 -6
  20. package/lib/mjs/utils/itemFieldGetters.js +3 -0
  21. package/lib/mjs/version.js +1 -1
  22. package/lib/types/components/ProductCard/ProductCard.d.ts +1 -51
  23. package/lib/types/components/ProductCard/index.d.ts +0 -1
  24. package/lib/types/components/RenderPropsWrapper/CustomHtmlRender.d.ts +7 -0
  25. package/lib/types/components/RenderPropsWrapper/RenderPropsWrapper.d.ts +25 -0
  26. package/lib/types/hooks/useGroups.d.ts +6 -1
  27. package/lib/types/hooks/useOptionsList.d.ts +5 -0
  28. package/lib/types/hooks/usePagination.d.ts +10 -0
  29. package/lib/types/index.d.ts +0 -1
  30. package/lib/types/types.d.ts +59 -1
  31. package/lib/types/utils/itemFieldGetters.d.ts +2 -1
  32. package/lib/types/version.d.ts +1 -1
  33. package/package.json +1 -1
@@ -16,6 +16,7 @@ export interface ItemFieldGetters {
16
16
  getRolloverImage: (item: Item | Variation) => string | undefined;
17
17
  getSwatchPreview: (variation: Variation) => string;
18
18
  getSwatches: (item: Item, retrievePrice: ItemFieldGetters['getPrice'], retrieveSwatchPreview: ItemFieldGetters['getSwatchPreview'], retrieveSalePrice: ItemFieldGetters['getSalePrice'], retrieveRolloverImage: ItemFieldGetters['getRolloverImage']) => SwatchItem[] | undefined;
19
+ getIsHiddenGroupField: (group: PlpItemGroup) => boolean | undefined;
19
20
  }
20
21
  export interface Formatters {
21
22
  formatPrice: (price?: number) => string;
@@ -28,6 +29,60 @@ export interface Callbacks {
28
29
  onSwatchClick?: (event: React.MouseEvent, swatch: SwatchItem) => void;
29
30
  onRedirect?: (url: string) => void;
30
31
  }
32
+ interface ProductCardBaseProps {
33
+ /**
34
+ * Constructor's Transformed API Item Object.
35
+ */
36
+ item: Item;
37
+ }
38
+ /**
39
+ * Props that will be passed to the renderProps function
40
+ */
41
+ export interface ProductCardRenderProps extends ProductCardProps {
42
+ /**
43
+ * Function to format the price. Defaults to "$0.00".
44
+ * Set globally at the CioPlp provider level.
45
+ */
46
+ formatPrice: (price: number) => string;
47
+ /**
48
+ * Object containing information about the current product, variation
49
+ */
50
+ productInfo: ProductInfoObject;
51
+ /**
52
+ * Callback to run on add-to-cart event.
53
+ * Set globally at the CioPlp provider level.
54
+ */
55
+ onAddToCart: (event: React.MouseEvent, item: Item, revenue: number, selectedVariation: string) => void;
56
+ /**
57
+ * Callback to run on Product Card Click.
58
+ * Set globally at the CioPlp provider level.
59
+ */
60
+ onClick: (event: React.MouseEvent, item: Item) => void;
61
+ /**
62
+ * Callback to run on Product Card Mouse Enter.
63
+ * Set globally at the CioPlp provider level.
64
+ */
65
+ onMouseEnter: (event: React.MouseEvent, item: Item) => void;
66
+ /**
67
+ * Callback to run on Product Card Mouse Leave.
68
+ * Set globally at the CioPlp provider level.
69
+ */
70
+ onMouseLeave: (event: React.MouseEvent, item: Item) => void;
71
+ /**
72
+ * Boolean to show/hide the rollover image.
73
+ */
74
+ isRolloverImageShown: boolean;
75
+ /**
76
+ * Data Attributes to surface on parent div of product card.
77
+ */
78
+ productCardCnstrcDataAttributes: CnstrcData;
79
+ }
80
+ export type ProductCardProps = IncludeRenderProps<ProductCardBaseProps, ProductCardRenderProps>;
81
+ export interface RenderOverrides {
82
+ productCard?: {
83
+ renderHtml?: (props: ProductCardRenderProps) => HTMLElement | ReactNode;
84
+ };
85
+ }
31
86
  export type PlpSearchData = PlpSearchDataResults | PlpSearchDataRedirect;
32
87
  export interface PlpSearchDataResults {
33
88
  resultId: string;
@@ -96,6 +151,7 @@ export interface PlpContextValue {
96
151
  formatters: Formatters;
97
152
  callbacks: Callbacks;
98
153
  urlHelpers: UrlHelpers;
154
+ renderOverrides: RenderOverrides;
99
155
  }
100
156
  export interface PrimaryColorStyles {
101
157
  '--primary-color-h': string;
@@ -154,6 +210,7 @@ export interface CioPlpProviderProps {
154
210
  formatters?: Partial<Formatters>;
155
211
  callbacks?: Partial<Callbacks>;
156
212
  itemFieldGetters?: Partial<ItemFieldGetters>;
213
+ renderOverrides?: Partial<RenderOverrides>;
157
214
  urlHelpers?: Partial<UrlHelpers>;
158
215
  initialSearchResponse?: SearchResponse;
159
216
  initialBrowseResponse?: GetBrowseResultsResponse;
@@ -234,7 +291,7 @@ export interface PlpItemGroup {
234
291
  groupId: string;
235
292
  displayName: string;
236
293
  count: number;
237
- data: object | null;
294
+ data: Record<string, any> | null;
238
295
  children: Array<PlpItemGroup>;
239
296
  parents: Pick<PlpItemGroup, 'groupId' | 'displayName'>[];
240
297
  }
@@ -242,6 +299,7 @@ export type CnstrcData = Record<`data-cnstrc-${string}`, string | number | boole
242
299
  export type PropsWithChildren<P> = P & {
243
300
  children?: ReactNode;
244
301
  };
302
+ export type RenderPropsChildren<RenderProps> = ((props: RenderProps) => ReactNode) | ReactNode;
245
303
  /**
246
304
  * Composes a type for a Component that accepts
247
305
  * - Props P,
@@ -1,6 +1,7 @@
1
- import { ItemFieldGetters, Item, SwatchItem, Variation } from '../types';
1
+ import { ItemFieldGetters, Item, SwatchItem, Variation, PlpItemGroup } from '../types';
2
2
  export declare function getPrice(item: Item | Variation): number;
3
3
  export declare function getSalePrice(item: Item | Variation): number | undefined;
4
4
  export declare function getRolloverImage(item: Item | Variation): string | undefined;
5
5
  export declare function getSwatches(item: Item, retrievePrice: ItemFieldGetters['getPrice'], retrieveSwatchPreview: ItemFieldGetters['getSwatchPreview'], retrieveSalePrice: ItemFieldGetters['getSalePrice'], retrieveRolloverImage: ItemFieldGetters['getRolloverImage']): SwatchItem[] | undefined;
6
6
  export declare function getSwatchPreview(variation: Variation): string;
7
+ export declare function getIsHiddenGroupField(group: PlpItemGroup): any;
@@ -1,2 +1,2 @@
1
- declare const _default: "1.5.0";
1
+ declare const _default: "1.6.1";
2
2
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-plp",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "Constructor PLP UI library for web applications",
5
5
  "author": "Constructor.io Corporation",
6
6
  "license": "MIT",