@useinsider/guido 2.1.0-beta.e13d291 → 2.1.0-beta.e2153c2
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/README.md +36 -0
- package/dist/@types/config/schemas.js +70 -65
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +69 -58
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +15 -14
- package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
- package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
- package/dist/composables/useActionsApi.js +15 -13
- package/dist/composables/useBlocksConfig.js +26 -16
- package/dist/composables/useHtmlValidator.js +114 -104
- package/dist/composables/useRecommendation.js +54 -21
- package/dist/composables/useStripo.js +25 -23
- package/dist/composables/useVersionHistoryApi.js +1 -1
- package/dist/config/compiler/recommendationCompilerRules.js +45 -39
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +121 -0
- package/dist/config/i18n/en/index.js +11 -0
- package/dist/config/i18n/en/labels.json.js +7 -0
- package/dist/config/i18n/en/toasters.json.js +56 -0
- package/dist/config/i18n/en/tooltips.json.js +82 -0
- package/dist/config/i18n/index.js +7 -0
- package/dist/config/migrator/itemsBlockMigrator.js +142 -120
- package/dist/enums/defaults.js +8 -4
- package/dist/enums/extensions/recommendationBlock.js +1 -1
- package/dist/enums/recommendation.js +16 -15
- package/dist/extensions/Blocks/Items/block.js +19 -28
- package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +124 -85
- package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
- package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
- package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
- package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
- package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
- package/dist/extensions/Blocks/Items/extension.js +8 -9
- package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
- package/dist/extensions/Blocks/Items/template.js +181 -175
- package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
- package/dist/extensions/Blocks/Recommendation/block.js +117 -27
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +33 -31
- package/dist/extensions/Blocks/Recommendation/constants/layout.js +6 -4
- package/dist/extensions/Blocks/Recommendation/constants/selectors.js +12 -10
- package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +10 -14
- package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +19 -27
- package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +49 -44
- package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +1 -3
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +147 -102
- package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +1 -5
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +85 -43
- package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +9 -13
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +138 -117
- package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +66 -34
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +2 -2
- package/dist/extensions/Blocks/Recommendation/services/configService.js +2 -1
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +248 -206
- package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +26 -31
- package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +31 -34
- package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +20 -25
- package/dist/extensions/Blocks/Recommendation/templates/list/template.js +22 -22
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +52 -39
- package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +10 -10
- package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
- package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
- package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
- package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
- package/dist/extensions/Blocks/common-control.js +91 -92
- package/dist/extensions/ModulesTabIcons/extension.js +17 -0
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +257 -187
- package/dist/package.json.js +1 -1
- package/dist/services/recommendationApi.js +11 -9
- package/dist/services/stripoApi.js +20 -17
- package/dist/services/templateLibraryApi.js +16 -13
- package/dist/src/@types/config/schemas.d.ts +8 -0
- package/dist/src/composables/useConfig.d.ts +4 -0
- package/dist/src/composables/useRecommendation.d.ts +1 -0
- package/dist/src/config/compiler/utils/recommendationCompilerUtils.d.ts +17 -0
- package/dist/src/config/i18n/en/index.d.ts +1 -0
- package/dist/src/config/i18n/index.d.ts +16 -0
- package/dist/src/enums/defaults.d.ts +4 -0
- package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
- package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
- package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
- package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
- package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
- package/dist/src/extensions/Blocks/Recommendation/block.d.ts +44 -11
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +4 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +8 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +27 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +22 -4
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +9 -2
- package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +19 -1
- package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +138 -469
- package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +4 -4
- package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +2 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +16 -4
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +14 -2
- package/dist/src/extensions/Blocks/Recommendation/utils/stylePreserver.d.ts +1 -1
- package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
- package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
- package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
- package/dist/src/stores/config.d.ts +36 -0
- package/dist/static/styles/components/notification.css.js +19 -0
- package/dist/static/styles/components/tools.css.js +6 -2
- package/dist/static/styles/components/version-history.css.js +10 -2
- package/dist/static/styles/components/wide-panel.css.js +18 -2
- package/dist/static/styles/customEditorStyle.css.js +10 -9
- package/dist/static/styles/variables.css.js +2 -0
- package/dist/static/templates/empty/index.html.js +74 -0
- package/dist/static/templates/empty/style.css.js +779 -0
- package/dist/stores/unsubscribe.js +37 -34
- package/dist/utils/pairProductVariables.js +57 -56
- package/dist/utils/templatePreparation.js +15 -14
- package/package.json +2 -2
- package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
- package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
- package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +0 -16
|
@@ -16,7 +16,6 @@ export * from './utils';
|
|
|
16
16
|
export declare class RecommendationBlockControl extends CommonControl {
|
|
17
17
|
private store;
|
|
18
18
|
private storeUnsubscription;
|
|
19
|
-
private hasInitializedData;
|
|
20
19
|
private algorithmControl;
|
|
21
20
|
private localeControl;
|
|
22
21
|
private currencyControl;
|
|
@@ -38,6 +37,28 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
38
37
|
* Each sub-control manages its own form values and event listeners
|
|
39
38
|
*/
|
|
40
39
|
_initializeSubControls(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Syncs persisted node config into the Pinia store's block state.
|
|
42
|
+
*
|
|
43
|
+
* setCurrentBlock() creates a default entry (USD, en_US, mostPopular).
|
|
44
|
+
* For saved templates, the real config lives in the node (e.g., TRY, tr_TR).
|
|
45
|
+
* This method reads it and patches the store so fetchRecommendationProducts()
|
|
46
|
+
* uses the correct values.
|
|
47
|
+
*
|
|
48
|
+
* Uses triggerRefetch: false because the fetch hasn't happened yet —
|
|
49
|
+
* values are being prepared for the upcoming initial fetch.
|
|
50
|
+
*/
|
|
51
|
+
private _syncNodeConfigToStore;
|
|
52
|
+
/**
|
|
53
|
+
* Fetches initial data for a block (filters, algorithms, products).
|
|
54
|
+
* Shared by onRender() and onTemplateNodeUpdated() to avoid duplication.
|
|
55
|
+
* Marks the block as initialized to prevent redundant fetches on re-selection.
|
|
56
|
+
*/
|
|
57
|
+
private _fetchBlockData;
|
|
58
|
+
/**
|
|
59
|
+
* Reads the recommendation-id attribute from the block element within the node
|
|
60
|
+
*/
|
|
61
|
+
private _getRecommendationIdFromNode;
|
|
41
62
|
/**
|
|
42
63
|
* Debounced product fetch to prevent rapid API calls during config changes
|
|
43
64
|
*/
|
|
@@ -48,10 +69,11 @@ export declare class RecommendationBlockControl extends CommonControl {
|
|
|
48
69
|
*/
|
|
49
70
|
private _debouncedRegenerateWithProducts;
|
|
50
71
|
/**
|
|
51
|
-
* Listen to store changes that require product refresh or regeneration
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* -
|
|
72
|
+
* Listen to store changes that require product refresh or regeneration.
|
|
73
|
+
*
|
|
74
|
+
* Uses configVersion counter (incremented only by patchCurrentBlockConfig)
|
|
75
|
+
* to distinguish user-initiated config changes from internal mutations
|
|
76
|
+
* (e.g., fetchRecommendationCreateData setting preferred currency).
|
|
55
77
|
*/
|
|
56
78
|
_listenStateUpdates(): void;
|
|
57
79
|
}
|
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles product display configuration:
|
|
5
5
|
* - Number of products to show
|
|
6
|
-
* - Products per row (hidden for list layout)
|
|
6
|
+
* - Products per row on desktop (hidden for list layout)
|
|
7
|
+
* - Products per row on mobile (hidden for list layout)
|
|
7
8
|
* - Triggers product row regeneration on changes
|
|
8
9
|
*
|
|
10
|
+
* Desktop/mobile counters swap visibility based on editor mode
|
|
11
|
+
* (detected via Stripo's EditorStatePropertyType.previewDeviceMode).
|
|
12
|
+
*
|
|
9
13
|
* Configuration is stored via node config (persists with template).
|
|
10
14
|
*/
|
|
11
15
|
import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
@@ -13,6 +17,7 @@ import { CommonControl } from '../../../common-control';
|
|
|
13
17
|
export declare const PRODUCT_LAYOUT_CONTROL_ID = "recommendation-product-layout-control";
|
|
14
18
|
/**
|
|
15
19
|
* Control for configuring product count and layout density
|
|
20
|
+
* Includes both desktop and mobile "products per row" counters
|
|
16
21
|
*/
|
|
17
22
|
export declare class ProductLayoutControl extends CommonControl {
|
|
18
23
|
private store;
|
|
@@ -24,13 +29,26 @@ export declare class ProductLayoutControl extends CommonControl {
|
|
|
24
29
|
onDestroy(): void;
|
|
25
30
|
_setFormValues(): void;
|
|
26
31
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
|
|
32
|
+
* Checks if the editor is currently in mobile preview mode
|
|
33
|
+
* using Stripo's EditorStatePropertyType API.
|
|
34
|
+
*/
|
|
35
|
+
_isMobileMode(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Updates counter visibility based on layout orientation and editor mode.
|
|
38
|
+
* - List layout: hide both counters (products always full-width)
|
|
39
|
+
* - Grid + desktop mode: show desktop counter, hide mobile counter
|
|
40
|
+
* - Grid + mobile mode: show mobile counter, hide desktop counter
|
|
30
41
|
*/
|
|
31
42
|
_updateProductsInRowVisibility(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Subscribes to editor preview mode changes via Stripo API.
|
|
45
|
+
* When the user switches between desktop/mobile preview, toggles
|
|
46
|
+
* which "Products in One Row" counter is visible.
|
|
47
|
+
*/
|
|
48
|
+
_subscribeToEditorModeChanges(): void;
|
|
32
49
|
_onProductCountChange(value: string): void;
|
|
33
50
|
_onProductsInRowChange(value: number): void;
|
|
51
|
+
_onMobileCardsInRowChange(value: number): void;
|
|
34
52
|
_regenerateProductRows(): void;
|
|
35
53
|
_debouncedRegenerateProductRows: import("@vueuse/shared").PromisifyFn<() => void>;
|
|
36
54
|
_listenToFormUpdates(): void;
|
|
@@ -58,8 +58,15 @@ export interface RegenerateProductRowsOptions {
|
|
|
58
58
|
layout?: Orientation;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
* Regenerates
|
|
62
|
-
*
|
|
61
|
+
* Regenerates only the mobile product container rows.
|
|
62
|
+
* Used when mobile-specific settings change (mobileCardsInRow)
|
|
63
|
+
* or when the desktop container is regenerated (to keep both in sync).
|
|
64
|
+
*/
|
|
65
|
+
export declare function regenerateMobileProductRows(options: Omit<RegenerateProductRowsOptions, 'afterRegenerate'>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Regenerates product rows in the desktop container based on current store configuration.
|
|
68
|
+
* Also regenerates the mobile container to keep both in sync.
|
|
69
|
+
* Reads products, layout, and composition from store/DOM and rebuilds the HTML.
|
|
63
70
|
* @param options - Configuration options for regeneration
|
|
64
71
|
*/
|
|
65
72
|
export declare function regenerateProductRows(options: RegenerateProductRowsOptions): void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS rules for mobile grid layout visibility switching
|
|
3
|
+
*
|
|
4
|
+
* Follows the modifyCss pattern from textTrim control.
|
|
5
|
+
* Rules are injected into the document's stylesheet via modifyCss
|
|
6
|
+
* so they appear in the compiled HTML export.
|
|
7
|
+
*/
|
|
8
|
+
import type { ImmutableCssNode } from '@stripoinc/ui-editor-extensions';
|
|
9
|
+
import { ModificationDescription } from '@stripoinc/ui-editor-extensions';
|
|
10
|
+
/** CSS class for desktop product container */
|
|
11
|
+
export declare const CSS_CLASS_DESKTOP_CONTAINER = "ins-recommendation-desktop-container";
|
|
12
|
+
/** CSS class for mobile product container */
|
|
13
|
+
export declare const CSS_CLASS_MOBILE_CONTAINER = "ins-recommendation-mobile-container";
|
|
14
|
+
interface CssModifierApi {
|
|
15
|
+
getDocumentRootCssNode: () => ImmutableCssNode | null;
|
|
16
|
+
getDocumentModifier: () => {
|
|
17
|
+
modifyCss: (node: ImmutableCssNode) => {
|
|
18
|
+
appendRule: (rule: string) => void;
|
|
19
|
+
};
|
|
20
|
+
apply: (desc: ModificationDescription) => void;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ensures mobile layout CSS rules exist in the document stylesheet.
|
|
25
|
+
* Only adds rules if they don't already exist (prevents duplicates across multiple blocks).
|
|
26
|
+
* Follows the same pattern as textTrim's _ensureCssRulesExist().
|
|
27
|
+
*/
|
|
28
|
+
export declare function ensureMobileCssRulesExist(api: CssModifierApi): void;
|
|
29
|
+
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
1
|
+
import { ImmutableCssNode, ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
2
|
import { CommonControl } from '../../../common-control';
|
|
3
3
|
/**
|
|
4
4
|
* Control for enabling/disabling text trimming on product names
|
|
5
5
|
* When enabled, adds a CSS class that applies text-overflow: ellipsis
|
|
6
|
+
* and injects the required CSS rules into the document stylesheet
|
|
6
7
|
*/
|
|
7
8
|
export declare class NameTextTrimControl extends CommonControl {
|
|
8
9
|
getId(): string;
|
|
@@ -11,6 +12,23 @@ export declare class NameTextTrimControl extends CommonControl {
|
|
|
11
12
|
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
12
13
|
_setFormValues(): void;
|
|
13
14
|
_getCurrentTrimState(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Finds an existing CSS rule in the document stylesheet by exact query
|
|
17
|
+
* @param query - The CSS query to search for (uses Stripo's CSS query syntax)
|
|
18
|
+
* @returns The CSS rule node if found, undefined otherwise
|
|
19
|
+
*/
|
|
20
|
+
_findCssRule(query: string): ImmutableCssNode | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Finds the .text-trim-enabled p rule by searching all text-trim rules and comparing selectors
|
|
23
|
+
* This is needed because Stripo's CSS query syntax interprets spaces as path separators
|
|
24
|
+
* @returns true if the rule exists
|
|
25
|
+
*/
|
|
26
|
+
_hasParagraphRule(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Ensures the text-trim CSS rules exist in the document stylesheet
|
|
29
|
+
* Only adds rules if they don't already exist (prevents duplicates across multiple blocks)
|
|
30
|
+
*/
|
|
31
|
+
_ensureCssRulesExist(): void;
|
|
14
32
|
_onTextTrimChange(enabled: boolean): void;
|
|
15
33
|
_listenToFormUpdates(): void;
|
|
16
34
|
}
|
|
@@ -47,8 +47,8 @@ export declare class SpacingControl extends CommonControl {
|
|
|
47
47
|
_getStoredRowSpacing(): number;
|
|
48
48
|
/**
|
|
49
49
|
* Handles column spacing changes.
|
|
50
|
-
* For
|
|
51
|
-
* For
|
|
50
|
+
* For grid layout: applies horizontal padding to all cells inside attribute rows.
|
|
51
|
+
* For list layout: applies padding to parent of product card wrappers.
|
|
52
52
|
*/
|
|
53
53
|
_onColumnSpacingChange(spacing: number): void;
|
|
54
54
|
/**
|