@useinsider/guido 3.7.2-beta.0bf502c → 3.7.2-beta.13c9a35
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.
- package/dist/@types/config/schemas.js +70 -66
- package/dist/composables/usePreviewMode.js +15 -14
- package/dist/composables/useRecommendationPreview.js +100 -0
- package/dist/composables/useStripo.js +54 -68
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +90 -82
- package/dist/config/i18n/en/toasters.json.js +0 -1
- package/dist/config/migrator/recommendation/htmlBuilder.js +59 -58
- package/dist/config/migrator/recommendation/settingsMapper.js +38 -33
- package/dist/extensions/Blocks/Recommendation/block.js +60 -41
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +41 -32
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +369 -288
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +96 -84
- package/dist/extensions/Blocks/Recommendation/controls/main/pricePlacement.js +133 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +82 -80
- package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +21 -7
- package/dist/extensions/Blocks/Recommendation/recommendation.css.js +64 -4
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +7 -5
- package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +101 -72
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +31 -30
- package/dist/extensions/Blocks/Recommendation/templates/index.js +9 -7
- package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +74 -59
- package/dist/extensions/Blocks/Recommendation/templates/list/template.js +21 -21
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +88 -57
- package/dist/src/@types/config/schemas.d.ts +16 -0
- package/dist/src/composables/useConfig.d.ts +4 -0
- package/dist/src/composables/useRecommendationPreview.d.ts +10 -0
- package/dist/src/config/migrator/recommendation/settingsMapper.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/block.d.ts +10 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +29 -3
- package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +3 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/pricePlacement.d.ts +59 -0
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +2 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +16 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +4 -4
- package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +13 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +3 -2
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +33 -1
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +15 -0
- package/dist/src/stores/config.d.ts +36 -0
- package/package.json +1 -1
|
@@ -1,10 +1,33 @@
|
|
|
1
|
+
import type { CurrencyConfig } from '../types/nodeConfig';
|
|
1
2
|
import type { FiltersResponse, RecommendationProduct } from '@@/Types/recommendation';
|
|
2
3
|
import { ATTR_PRODUCT_IMAGE, ATTR_PRODUCT_NAME, ATTR_PRODUCT_PRICE, ATTR_PRODUCT_OLD_PRICE, ATTR_PRODUCT_OMNIBUS_PRICE, ATTR_PRODUCT_OMNIBUS_DISCOUNT, ATTR_PRODUCT_BUTTON } from '../constants';
|
|
4
|
+
type PriceKey = 'price' | 'original_price' | 'discount';
|
|
5
|
+
/**
|
|
6
|
+
* Current currency configuration from the store, in CurrencyConfig shape.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getCurrentCurrencyConfig(): CurrencyConfig;
|
|
9
|
+
/**
|
|
10
|
+
* Formats a product price using current currency settings. Falls back to the
|
|
11
|
+
* first available currency, then 0, when the active currency has no value.
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatProductPrice(product: RecommendationProduct, priceKey?: PriceKey): string;
|
|
3
14
|
/**
|
|
4
15
|
* Converts a snake_case attribute name to Title Case display name.
|
|
5
16
|
* e.g., "rating_star" → "Rating Star"
|
|
6
17
|
*/
|
|
7
18
|
export declare function toDisplayName(attrName: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Resolves the inline (side-by-side) price layout from the composition order so
|
|
21
|
+
* it matches the stacked order. `anchor` is whichever of price / original price
|
|
22
|
+
* comes first in the composition (the merged cell renders there); `skip` is the
|
|
23
|
+
* other (dropped, since it's merged in); `originalFirst` puts the original price
|
|
24
|
+
* on the left when it precedes the sale price (the default composition order).
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveInlinePriceOrder(composition: string[]): {
|
|
27
|
+
originalFirst: boolean;
|
|
28
|
+
anchor: string;
|
|
29
|
+
skip: string;
|
|
30
|
+
};
|
|
8
31
|
/**
|
|
9
32
|
* Reduces a raw product-attribute value to a displayable scalar string.
|
|
10
33
|
* Array-type attributes (filter types `Strings`/`Numbers`) are substituted with
|
|
@@ -57,7 +80,15 @@ export type Orientation = 'list' | 'grid';
|
|
|
57
80
|
/**
|
|
58
81
|
* Options for prepareProductRows unified function
|
|
59
82
|
*/
|
|
60
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Block-level price placement flags threaded into the row builders.
|
|
85
|
+
* - `priceInline`: render sale + original price on one line (skip the standalone
|
|
86
|
+
* original-price row).
|
|
87
|
+
*/
|
|
88
|
+
export interface PricePlacementFlags {
|
|
89
|
+
priceInline?: boolean;
|
|
90
|
+
}
|
|
91
|
+
export interface PrepareProductRowsOptions extends PricePlacementFlags {
|
|
61
92
|
/** Number of products per row (only for grid layout, defaults to 3) */
|
|
62
93
|
productsPerRow?: number;
|
|
63
94
|
/** Number of products per row on mobile (only for grid layout, defaults to 1) */
|
|
@@ -124,3 +155,4 @@ export declare function getDefaultProducts(count?: number): RecommendationProduc
|
|
|
124
155
|
* @returns HTML template string with {-{-TITLE-}-}, {-{-PRODUCT_ROWS-}-}, and {-{-MOBILE_PRODUCT_ROWS-}-} (grid only) placeholders
|
|
125
156
|
*/
|
|
126
157
|
export declare function createBlockTemplate(layout?: Orientation, instanceClass?: string): string;
|
|
158
|
+
export {};
|
|
@@ -152,6 +152,21 @@ export interface RecommendationNodeConfig {
|
|
|
152
152
|
* Whether to trim long product names with ellipsis
|
|
153
153
|
*/
|
|
154
154
|
textTrimming: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Whether the price and original price render on separate stacked lines.
|
|
157
|
+
* - true (default): each on its own attribute row (current Guido look)
|
|
158
|
+
* - false: both rendered inline on the same line, and Card Composition
|
|
159
|
+
* collapses them into a single "Product Prices" entry
|
|
160
|
+
* Ported from the legacy product block's `isPriceMovedToNextLine`.
|
|
161
|
+
*/
|
|
162
|
+
priceMovedToNextLine: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Whether to hide the redundant original price when it equals the sale
|
|
165
|
+
* price (no real discount). Enforced in the real email via a liquid
|
|
166
|
+
* condition and mirrored in the editor on mock data.
|
|
167
|
+
* Ported from the legacy product block's `isPriceDeletedForZeroSale`.
|
|
168
|
+
*/
|
|
169
|
+
priceHideIfSameAsDiscounted: boolean;
|
|
155
170
|
/**
|
|
156
171
|
* Configuration version for future migrations
|
|
157
172
|
* Increment when making breaking changes to schema
|
|
@@ -65,6 +65,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
65
65
|
blockType?: string | undefined;
|
|
66
66
|
size?: string | number | undefined;
|
|
67
67
|
verticalResponsiveness?: boolean | undefined;
|
|
68
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
69
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
68
70
|
} & {
|
|
69
71
|
[key: string]: unknown;
|
|
70
72
|
};
|
|
@@ -197,6 +199,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
197
199
|
blockType?: string | undefined;
|
|
198
200
|
size?: string | number | undefined;
|
|
199
201
|
verticalResponsiveness?: boolean | undefined;
|
|
202
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
203
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
200
204
|
} & {
|
|
201
205
|
[key: string]: unknown;
|
|
202
206
|
};
|
|
@@ -329,6 +333,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
329
333
|
blockType?: string | undefined;
|
|
330
334
|
size?: string | number | undefined;
|
|
331
335
|
verticalResponsiveness?: boolean | undefined;
|
|
336
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
337
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
332
338
|
} & {
|
|
333
339
|
[key: string]: unknown;
|
|
334
340
|
};
|
|
@@ -461,6 +467,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
461
467
|
blockType?: string | undefined;
|
|
462
468
|
size?: string | number | undefined;
|
|
463
469
|
verticalResponsiveness?: boolean | undefined;
|
|
470
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
471
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
464
472
|
} & {
|
|
465
473
|
[key: string]: unknown;
|
|
466
474
|
};
|
|
@@ -593,6 +601,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
593
601
|
blockType?: string | undefined;
|
|
594
602
|
size?: string | number | undefined;
|
|
595
603
|
verticalResponsiveness?: boolean | undefined;
|
|
604
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
605
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
596
606
|
} & {
|
|
597
607
|
[key: string]: unknown;
|
|
598
608
|
};
|
|
@@ -725,6 +735,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
725
735
|
blockType?: string | undefined;
|
|
726
736
|
size?: string | number | undefined;
|
|
727
737
|
verticalResponsiveness?: boolean | undefined;
|
|
738
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
739
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
728
740
|
} & {
|
|
729
741
|
[key: string]: unknown;
|
|
730
742
|
};
|
|
@@ -857,6 +869,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
857
869
|
blockType?: string | undefined;
|
|
858
870
|
size?: string | number | undefined;
|
|
859
871
|
verticalResponsiveness?: boolean | undefined;
|
|
872
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
873
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
860
874
|
} & {
|
|
861
875
|
[key: string]: unknown;
|
|
862
876
|
};
|
|
@@ -989,6 +1003,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
989
1003
|
blockType?: string | undefined;
|
|
990
1004
|
size?: string | number | undefined;
|
|
991
1005
|
verticalResponsiveness?: boolean | undefined;
|
|
1006
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1007
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
992
1008
|
} & {
|
|
993
1009
|
[key: string]: unknown;
|
|
994
1010
|
};
|
|
@@ -1121,6 +1137,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1121
1137
|
blockType?: string | undefined;
|
|
1122
1138
|
size?: string | number | undefined;
|
|
1123
1139
|
verticalResponsiveness?: boolean | undefined;
|
|
1140
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1141
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1124
1142
|
} & {
|
|
1125
1143
|
[key: string]: unknown;
|
|
1126
1144
|
};
|
|
@@ -1253,6 +1271,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1253
1271
|
blockType?: string | undefined;
|
|
1254
1272
|
size?: string | number | undefined;
|
|
1255
1273
|
verticalResponsiveness?: boolean | undefined;
|
|
1274
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1275
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1256
1276
|
} & {
|
|
1257
1277
|
[key: string]: unknown;
|
|
1258
1278
|
};
|
|
@@ -1385,6 +1405,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1385
1405
|
blockType?: string | undefined;
|
|
1386
1406
|
size?: string | number | undefined;
|
|
1387
1407
|
verticalResponsiveness?: boolean | undefined;
|
|
1408
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1409
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1388
1410
|
} & {
|
|
1389
1411
|
[key: string]: unknown;
|
|
1390
1412
|
};
|
|
@@ -1517,6 +1539,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1517
1539
|
blockType?: string | undefined;
|
|
1518
1540
|
size?: string | number | undefined;
|
|
1519
1541
|
verticalResponsiveness?: boolean | undefined;
|
|
1542
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1543
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1520
1544
|
} & {
|
|
1521
1545
|
[key: string]: unknown;
|
|
1522
1546
|
};
|
|
@@ -1649,6 +1673,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1649
1673
|
blockType?: string | undefined;
|
|
1650
1674
|
size?: string | number | undefined;
|
|
1651
1675
|
verticalResponsiveness?: boolean | undefined;
|
|
1676
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1677
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1652
1678
|
} & {
|
|
1653
1679
|
[key: string]: unknown;
|
|
1654
1680
|
};
|
|
@@ -1781,6 +1807,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1781
1807
|
blockType?: string | undefined;
|
|
1782
1808
|
size?: string | number | undefined;
|
|
1783
1809
|
verticalResponsiveness?: boolean | undefined;
|
|
1810
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1811
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1784
1812
|
} & {
|
|
1785
1813
|
[key: string]: unknown;
|
|
1786
1814
|
};
|
|
@@ -1913,6 +1941,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
1913
1941
|
blockType?: string | undefined;
|
|
1914
1942
|
size?: string | number | undefined;
|
|
1915
1943
|
verticalResponsiveness?: boolean | undefined;
|
|
1944
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
1945
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
1916
1946
|
} & {
|
|
1917
1947
|
[key: string]: unknown;
|
|
1918
1948
|
};
|
|
@@ -2045,6 +2075,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2045
2075
|
blockType?: string | undefined;
|
|
2046
2076
|
size?: string | number | undefined;
|
|
2047
2077
|
verticalResponsiveness?: boolean | undefined;
|
|
2078
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
2079
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
2048
2080
|
} & {
|
|
2049
2081
|
[key: string]: unknown;
|
|
2050
2082
|
};
|
|
@@ -2177,6 +2209,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2177
2209
|
blockType?: string | undefined;
|
|
2178
2210
|
size?: string | number | undefined;
|
|
2179
2211
|
verticalResponsiveness?: boolean | undefined;
|
|
2212
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
2213
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
2180
2214
|
} & {
|
|
2181
2215
|
[key: string]: unknown;
|
|
2182
2216
|
};
|
|
@@ -2309,6 +2343,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
|
|
|
2309
2343
|
blockType?: string | undefined;
|
|
2310
2344
|
size?: string | number | undefined;
|
|
2311
2345
|
verticalResponsiveness?: boolean | undefined;
|
|
2346
|
+
isPriceMovedToNextLine?: boolean | undefined;
|
|
2347
|
+
isPriceDeletedForZeroSale?: boolean | undefined;
|
|
2312
2348
|
} & {
|
|
2313
2349
|
[key: string]: unknown;
|
|
2314
2350
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@useinsider/guido",
|
|
3
|
-
"version": "3.7.2-beta.
|
|
3
|
+
"version": "3.7.2-beta.13c9a35",
|
|
4
4
|
"description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
|
|
5
5
|
"main": "./dist/guido.umd.cjs",
|
|
6
6
|
"module": "./dist/library.js",
|