@useinsider/guido 2.0.0-beta.143201d → 2.0.0-beta.1c331b8
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 +2 -0
- package/dist/@types/config/schemas.js +3 -1
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +15 -17
- package/dist/composables/useStripo.js +40 -40
- package/dist/config/migrator/recommendationMigrator.js +2 -2
- package/dist/extensions/Blocks/CouponBlock/constants.js +4 -0
- package/dist/extensions/Blocks/CouponBlock/controls/index.js +29 -0
- package/dist/extensions/Blocks/CouponBlock/extension.js +5 -4
- package/dist/extensions/Blocks/CouponBlock/settingsPanel.js +20 -14
- package/dist/extensions/Blocks/CouponBlock/template.js +22 -11
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +13 -4
- package/dist/extensions/Blocks/Recommendation/block.js +1 -1
- package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +4 -0
- package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +4 -0
- package/dist/extensions/Blocks/Recommendation/constants/layout.js +7 -0
- package/dist/extensions/Blocks/Recommendation/constants/selectors.js +11 -0
- package/dist/extensions/Blocks/Recommendation/controls/button/index.js +64 -0
- package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +80 -0
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +238 -0
- package/dist/extensions/Blocks/Recommendation/controls/image/index.js +19 -0
- package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +104 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +86 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +134 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +54 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +134 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +64 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +124 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +60 -0
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +112 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/index.js +46 -0
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +76 -0
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +44 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +48 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +73 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +73 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +48 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +73 -0
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +73 -0
- package/dist/extensions/Blocks/Recommendation/controls/price/index.js +44 -0
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +216 -0
- package/dist/extensions/Blocks/Recommendation/extension.js +40 -43
- package/dist/extensions/Blocks/Recommendation/recommendation.css.js +5 -0
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +128 -72
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +28 -25
- package/dist/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.js +157 -0
- package/dist/extensions/Blocks/Recommendation/templates/horizontal/template.js +72 -0
- package/dist/extensions/Blocks/Recommendation/templates/index.js +12 -0
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +173 -0
- package/dist/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.js +186 -0
- package/dist/extensions/Blocks/Recommendation/templates/vertical/migration.js +251 -0
- package/dist/extensions/Blocks/Recommendation/templates/vertical/template.js +62 -0
- package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +9 -9
- package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +36 -0
- package/dist/extensions/Blocks/controlFactories.js +162 -117
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +366 -291
- package/dist/package.json.js +1 -1
- package/dist/services/stripoApi.js +6 -10
- package/dist/src/@types/config/schemas.d.ts +4 -0
- package/dist/src/composables/useConfig.d.ts +2 -0
- package/dist/src/extensions/Blocks/CouponBlock/constants.d.ts +14 -0
- package/dist/src/extensions/Blocks/CouponBlock/controls/index.d.ts +108 -0
- package/dist/src/extensions/Blocks/CouponBlock/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +13 -0
- package/dist/src/extensions/Blocks/Recommendation/{constants.d.ts → constants/controlIds.d.ts} +19 -11
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +12 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +17 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +19 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/button/index.d.ts +143 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/cardBackground/index.d.ts +31 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +95 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/image/index.d.ts +35 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +24 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/layout/index.d.ts +34 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/algorithm.d.ts +17 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/currency.d.ts +16 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/filters.d.ts +22 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +43 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/locale.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +40 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/shuffle.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +81 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/index.d.ts +97 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +16 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/index.d.ts +95 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.d.ts +100 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/index.d.ts +100 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.d.ts +15 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/price/index.d.ts +95 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +72 -0
- package/dist/src/extensions/Blocks/Recommendation/extension.d.ts +9 -0
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +16 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/elementRenderer.d.ts +8 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/migration.d.ts +25 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/horizontal/template.d.ts +18 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +39 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +45 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/vertical/elementRenderer.d.ts +7 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/{migrationTemplate.d.ts → vertical/migration.d.ts} +11 -4
- package/dist/src/extensions/Blocks/Recommendation/templates/vertical/template.d.ts +33 -0
- package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
- package/dist/src/extensions/Blocks/controlFactories.d.ts +30 -7
- package/dist/src/stores/config.d.ts +17 -0
- package/dist/static/styles/components/wide-panel.css.js +0 -4
- package/dist/static/styles/customEditorStyle.css.js +38 -2
- package/package.json +3 -3
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
- package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
- package/dist/extensions/Blocks/Recommendation/control.js +0 -306
- package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
- package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
- package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
- package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
- package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
- package/dist/src/extensions/Blocks/Recommendation/control.d.ts +0 -35
- package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
import { CommonControl } from '../../../common-control';
|
|
3
|
+
/**
|
|
4
|
+
* Control for setting text after Omnibus Discount value
|
|
5
|
+
*/
|
|
6
|
+
export declare class OmnibusDiscountTextAfterControl extends CommonControl {
|
|
7
|
+
getId(): string;
|
|
8
|
+
getTemplate(): string;
|
|
9
|
+
onRender(): void;
|
|
10
|
+
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
11
|
+
_setFormValues(): void;
|
|
12
|
+
_getCurrentText(): string;
|
|
13
|
+
_onTextChange(newText: string): void;
|
|
14
|
+
_listenToFormUpdates(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
import { CommonControl } from '../../../common-control';
|
|
3
|
+
/**
|
|
4
|
+
* Control for setting text before Omnibus Discount value
|
|
5
|
+
*/
|
|
6
|
+
export declare class OmnibusDiscountTextBeforeControl extends CommonControl {
|
|
7
|
+
getId(): string;
|
|
8
|
+
getTemplate(): string;
|
|
9
|
+
onRender(): void;
|
|
10
|
+
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
11
|
+
_setFormValues(): void;
|
|
12
|
+
_getCurrentText(): string;
|
|
13
|
+
_onTextChange(newText: string): void;
|
|
14
|
+
_listenToFormUpdates(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Omnibus Price Element Controls
|
|
3
|
+
*
|
|
4
|
+
* Controls for styling the omnibus price element in recommendation cards.
|
|
5
|
+
* Includes text before/after controls for compliance text.
|
|
6
|
+
*/
|
|
7
|
+
import { OmnibusPriceTextAfterControl } from './textAfter';
|
|
8
|
+
import { OmnibusPriceTextBeforeControl } from './textBefore';
|
|
9
|
+
/**
|
|
10
|
+
* Grouped Omnibus Price Controls
|
|
11
|
+
* Use this object for cleaner imports in extension.ts
|
|
12
|
+
*/
|
|
13
|
+
export declare const OmnibusPriceControls: {
|
|
14
|
+
readonly align: {
|
|
15
|
+
new (): {
|
|
16
|
+
getId(): string;
|
|
17
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
18
|
+
getParentControlId(): string;
|
|
19
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
20
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
21
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
22
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
23
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
readonly color: {
|
|
27
|
+
new (): {
|
|
28
|
+
getId(): string;
|
|
29
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
30
|
+
getParentControlId(): string;
|
|
31
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
32
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
33
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
34
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
35
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
readonly size: {
|
|
39
|
+
new (): {
|
|
40
|
+
getId(): string;
|
|
41
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
42
|
+
getParentControlId(): string;
|
|
43
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
44
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
45
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
46
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
47
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
readonly style: {
|
|
51
|
+
new (): {
|
|
52
|
+
getId(): string;
|
|
53
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
54
|
+
getParentControlId(): string;
|
|
55
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
56
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
57
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
58
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
59
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
readonly fontFamily: {
|
|
63
|
+
new (): {
|
|
64
|
+
getId(): string;
|
|
65
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
66
|
+
getParentControlId(): string;
|
|
67
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
68
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
69
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
70
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
71
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
readonly background: {
|
|
75
|
+
new (): {
|
|
76
|
+
getId(): string;
|
|
77
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
78
|
+
getParentControlId(): string;
|
|
79
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
80
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
81
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
82
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
83
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
readonly paddings: {
|
|
87
|
+
new (): {
|
|
88
|
+
getId(): string;
|
|
89
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
90
|
+
getParentControlId(): string;
|
|
91
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
92
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
93
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
94
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
95
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
readonly textBefore: typeof OmnibusPriceTextBeforeControl;
|
|
99
|
+
readonly textAfter: typeof OmnibusPriceTextAfterControl;
|
|
100
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
import { CommonControl } from '../../../common-control';
|
|
3
|
+
/**
|
|
4
|
+
* Control for setting text after Omnibus Price value
|
|
5
|
+
*/
|
|
6
|
+
export declare class OmnibusPriceTextAfterControl extends CommonControl {
|
|
7
|
+
getId(): string;
|
|
8
|
+
getTemplate(): string;
|
|
9
|
+
onRender(): void;
|
|
10
|
+
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
11
|
+
_setFormValues(): void;
|
|
12
|
+
_getCurrentText(): string;
|
|
13
|
+
_onTextChange(newText: string): void;
|
|
14
|
+
_listenToFormUpdates(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
import { CommonControl } from '../../../common-control';
|
|
3
|
+
/**
|
|
4
|
+
* Control for setting text before Omnibus Price value
|
|
5
|
+
*/
|
|
6
|
+
export declare class OmnibusPriceTextBeforeControl extends CommonControl {
|
|
7
|
+
getId(): string;
|
|
8
|
+
getTemplate(): string;
|
|
9
|
+
onRender(): void;
|
|
10
|
+
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
11
|
+
_setFormValues(): void;
|
|
12
|
+
_getCurrentText(): string;
|
|
13
|
+
_onTextChange(newText: string): void;
|
|
14
|
+
_listenToFormUpdates(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Price Element Controls
|
|
3
|
+
*
|
|
4
|
+
* Controls for styling the product price element in recommendation cards.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Grouped Price Controls
|
|
8
|
+
* Use this object for cleaner imports in extension.ts
|
|
9
|
+
*/
|
|
10
|
+
export declare const PriceControls: {
|
|
11
|
+
readonly align: {
|
|
12
|
+
new (): {
|
|
13
|
+
getId(): string;
|
|
14
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
15
|
+
getParentControlId(): string;
|
|
16
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
17
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
18
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
19
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
20
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
readonly color: {
|
|
24
|
+
new (): {
|
|
25
|
+
getId(): string;
|
|
26
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
27
|
+
getParentControlId(): string;
|
|
28
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
29
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
30
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
31
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
32
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
readonly size: {
|
|
36
|
+
new (): {
|
|
37
|
+
getId(): string;
|
|
38
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
39
|
+
getParentControlId(): string;
|
|
40
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
41
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
42
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
43
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
44
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
readonly style: {
|
|
48
|
+
new (): {
|
|
49
|
+
getId(): string;
|
|
50
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
51
|
+
getParentControlId(): string;
|
|
52
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
53
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
54
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
55
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
56
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
readonly fontFamily: {
|
|
60
|
+
new (): {
|
|
61
|
+
getId(): string;
|
|
62
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
63
|
+
getParentControlId(): string;
|
|
64
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
65
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
66
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
67
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
68
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
readonly background: {
|
|
72
|
+
new (): {
|
|
73
|
+
getId(): string;
|
|
74
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
75
|
+
getParentControlId(): string;
|
|
76
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
77
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
78
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
79
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
80
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
readonly paddings: {
|
|
84
|
+
new (): {
|
|
85
|
+
getId(): string;
|
|
86
|
+
getTargetNodes(root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode[];
|
|
87
|
+
getParentControlId(): string;
|
|
88
|
+
api: import("@stripoinc/ui-editor-extensions").ControlApi;
|
|
89
|
+
getLabels(): import("@stripoinc/ui-editor-extensions").ControlLabels | undefined;
|
|
90
|
+
getModificationDescription(): import("@stripoinc/ui-editor-extensions").ModificationDescription | undefined;
|
|
91
|
+
getAdditionalModifications(_root: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): import("@stripoinc/ui-editor-extensions").TemplateModifier<import("@stripoinc/ui-editor-extensions").HtmlNodeModifier, import("@stripoinc/ui-editor-extensions").CssNodeModifier> | undefined;
|
|
92
|
+
isVisible(_node: import("@stripoinc/ui-editor-extensions").ImmutableHtmlNode): boolean;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
|
|
2
|
+
import { CommonControl } from '../../../common-control';
|
|
3
|
+
export declare const SPACING_CONTROL_ID = "recommendation-spacing-control";
|
|
4
|
+
/**
|
|
5
|
+
* Control for managing spacing between product cards
|
|
6
|
+
* - Column spacing: horizontal gap between cards in the same row
|
|
7
|
+
* - Row spacing: vertical gap between different rows
|
|
8
|
+
*/
|
|
9
|
+
export declare class SpacingControl extends CommonControl {
|
|
10
|
+
private store;
|
|
11
|
+
private unsubscribeOrientation;
|
|
12
|
+
getId(): string;
|
|
13
|
+
getTemplate(): string;
|
|
14
|
+
onRender(): void;
|
|
15
|
+
onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
|
|
16
|
+
/**
|
|
17
|
+
* Updates column spacing visibility based on layout orientation
|
|
18
|
+
* Column spacing is hidden for horizontal layout (products are stacked vertically)
|
|
19
|
+
* Reads from store first for reliability, falls back to DOM
|
|
20
|
+
*/
|
|
21
|
+
_updateColumnSpacingVisibility(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Reads spacing values from data attributes or returns defaults
|
|
24
|
+
*/
|
|
25
|
+
_setFormValues(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Gets stored column spacing from the first attribute row cell's padding.
|
|
28
|
+
* For vertical layout: cells inside .recommendation-attribute-row have padding applied.
|
|
29
|
+
* For horizontal layout: the parent of .product-card-wrapper has the padding.
|
|
30
|
+
* The padding is applied as "0 {halfSpacing}px", so we extract and multiply by 2.
|
|
31
|
+
*/
|
|
32
|
+
_getStoredColumnSpacing(): number;
|
|
33
|
+
/**
|
|
34
|
+
* Gets stored row spacing from the first spacer element's height style
|
|
35
|
+
*/
|
|
36
|
+
_getStoredRowSpacing(): number;
|
|
37
|
+
/**
|
|
38
|
+
* Handles column spacing changes.
|
|
39
|
+
* For vertical layout: applies horizontal padding to all cells inside attribute rows.
|
|
40
|
+
* For horizontal layout: applies padding to parent of product card wrappers.
|
|
41
|
+
*/
|
|
42
|
+
_onColumnSpacingChange(spacing: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Handles row spacing changes
|
|
45
|
+
* Applies height to all spacer elements between product rows
|
|
46
|
+
*/
|
|
47
|
+
_onRowSpacingChange(spacing: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* Stores column spacing value in block data attribute
|
|
50
|
+
*/
|
|
51
|
+
_storeColumnSpacing(spacing: number): void;
|
|
52
|
+
/**
|
|
53
|
+
* Stores row spacing value in block data attribute
|
|
54
|
+
*/
|
|
55
|
+
_storeRowSpacing(spacing: number): void;
|
|
56
|
+
_listenToFormUpdates(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Debounced version of _onColumnSpacingChange
|
|
59
|
+
* Prevents excessive DOM updates when user rapidly adjusts the counter
|
|
60
|
+
*/
|
|
61
|
+
_debouncedOnColumnSpacingChange: import("@vueuse/shared").PromisifyFn<(spacing: number) => void>;
|
|
62
|
+
/**
|
|
63
|
+
* Debounced version of _onRowSpacingChange
|
|
64
|
+
* Prevents excessive DOM updates when user rapidly adjusts the counter
|
|
65
|
+
*/
|
|
66
|
+
_debouncedOnRowSpacingChange: import("@vueuse/shared").PromisifyFn<(spacing: number) => void>;
|
|
67
|
+
/**
|
|
68
|
+
* Subscribe to store orientation changes
|
|
69
|
+
* Updates column spacing visibility when layout changes via the layout control
|
|
70
|
+
*/
|
|
71
|
+
_subscribeToOrientationChanges(): void;
|
|
72
|
+
}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recommendation Block Extension
|
|
3
|
+
*
|
|
4
|
+
* This extension provides a product recommendation block for email templates.
|
|
5
|
+
* Controls are organized by element type in the ./controls directory.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Build and export the Recommendation extension
|
|
9
|
+
*/
|
|
1
10
|
declare const _default: import("@stripoinc/ui-editor-extensions").Extension;
|
|
2
11
|
export default _default;
|
|
@@ -18,8 +18,8 @@ interface StoreState {
|
|
|
18
18
|
orientation: Orientation;
|
|
19
19
|
productIds: string[];
|
|
20
20
|
recommendedProducts: [];
|
|
21
|
-
sendProductRequestFlag:
|
|
22
|
-
shuffleProducts:
|
|
21
|
+
sendProductRequestFlag: boolean;
|
|
22
|
+
shuffleProducts: boolean;
|
|
23
23
|
strategy: string;
|
|
24
24
|
textTrimming: boolean;
|
|
25
25
|
unresponsive: boolean;
|
|
@@ -65,8 +65,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
65
65
|
orientation: Orientation;
|
|
66
66
|
productIds: string[];
|
|
67
67
|
recommendedProducts: [];
|
|
68
|
-
sendProductRequestFlag:
|
|
69
|
-
shuffleProducts:
|
|
68
|
+
sendProductRequestFlag: boolean;
|
|
69
|
+
shuffleProducts: boolean;
|
|
70
70
|
strategy: string;
|
|
71
71
|
textTrimming: boolean;
|
|
72
72
|
unresponsive: boolean;
|
|
@@ -134,8 +134,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
134
134
|
orientation: Orientation;
|
|
135
135
|
productIds: string[];
|
|
136
136
|
recommendedProducts: [];
|
|
137
|
-
sendProductRequestFlag:
|
|
138
|
-
shuffleProducts:
|
|
137
|
+
sendProductRequestFlag: boolean;
|
|
138
|
+
shuffleProducts: boolean;
|
|
139
139
|
strategy: string;
|
|
140
140
|
textTrimming: boolean;
|
|
141
141
|
unresponsive: boolean;
|
|
@@ -203,8 +203,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
203
203
|
orientation: Orientation;
|
|
204
204
|
productIds: string[];
|
|
205
205
|
recommendedProducts: [];
|
|
206
|
-
sendProductRequestFlag:
|
|
207
|
-
shuffleProducts:
|
|
206
|
+
sendProductRequestFlag: boolean;
|
|
207
|
+
shuffleProducts: boolean;
|
|
208
208
|
strategy: string;
|
|
209
209
|
textTrimming: boolean;
|
|
210
210
|
unresponsive: boolean;
|
|
@@ -275,8 +275,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
275
275
|
orientation: Orientation;
|
|
276
276
|
productIds: string[];
|
|
277
277
|
recommendedProducts: [];
|
|
278
|
-
sendProductRequestFlag:
|
|
279
|
-
shuffleProducts:
|
|
278
|
+
sendProductRequestFlag: boolean;
|
|
279
|
+
shuffleProducts: boolean;
|
|
280
280
|
strategy: string;
|
|
281
281
|
textTrimming: boolean;
|
|
282
282
|
unresponsive: boolean;
|
|
@@ -347,8 +347,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
347
347
|
orientation: Orientation;
|
|
348
348
|
productIds: string[];
|
|
349
349
|
recommendedProducts: [];
|
|
350
|
-
sendProductRequestFlag:
|
|
351
|
-
shuffleProducts:
|
|
350
|
+
sendProductRequestFlag: boolean;
|
|
351
|
+
shuffleProducts: boolean;
|
|
352
352
|
strategy: string;
|
|
353
353
|
textTrimming: boolean;
|
|
354
354
|
unresponsive: boolean;
|
|
@@ -419,8 +419,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
419
419
|
orientation: Orientation;
|
|
420
420
|
productIds: string[];
|
|
421
421
|
recommendedProducts: [];
|
|
422
|
-
sendProductRequestFlag:
|
|
423
|
-
shuffleProducts:
|
|
422
|
+
sendProductRequestFlag: boolean;
|
|
423
|
+
shuffleProducts: boolean;
|
|
424
424
|
strategy: string;
|
|
425
425
|
textTrimming: boolean;
|
|
426
426
|
unresponsive: boolean;
|
|
@@ -492,8 +492,8 @@ export declare const useRecommendationExtensionStore: import("pinia").StoreDefin
|
|
|
492
492
|
orientation: Orientation;
|
|
493
493
|
productIds: string[];
|
|
494
494
|
recommendedProducts: [];
|
|
495
|
-
sendProductRequestFlag:
|
|
496
|
-
shuffleProducts:
|
|
495
|
+
sendProductRequestFlag: boolean;
|
|
496
|
+
shuffleProducts: boolean;
|
|
497
497
|
strategy: string;
|
|
498
498
|
textTrimming: boolean;
|
|
499
499
|
unresponsive: boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ElementRenderer } from '../utils';
|
|
2
|
+
/**
|
|
3
|
+
* Horizontal element renderer
|
|
4
|
+
* - Image and Button return `<td>` cells for the 3-column layout
|
|
5
|
+
* - Name and Prices return `<tr><td>` rows for the info cell table
|
|
6
|
+
* All elements have esd-block-* classes for Stripo selection
|
|
7
|
+
*/
|
|
8
|
+
export declare const horizontalElementRenderer: ElementRenderer;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RecommendationProduct } from '@@/Types/recommendation';
|
|
2
|
+
import { DEFAULTS, getDefaultProducts } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Migration template for horizontal layout
|
|
5
|
+
* Used when migrating old recommendation blocks to horizontal format
|
|
6
|
+
*/
|
|
7
|
+
declare const migrationTemplate = "\n <td\n align=\"left\"\n esd-extension-block-id=\"recommendation-block\"\n esd-handler-name=\"esd-extension-RecommendationBlock\"\n class=\"ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block esd-extension-block es-p20\"\n data-layout=\"horizontal\"\n >\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td align=\"center\">\n <table\n class=\"container\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\">\n <tbody>\n <tr>\n <td>\n <table\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\">\n <tbody>\n <tr>\n {-{-TITLE-}-}\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td class=\"spacer\" style=\"height: 20px;\"></td>\n </tr>\n <tr>\n <td>\n <table\n class=\"ins-recommendation-product-container\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\"\n >\n {-{-PRODUCT_ROWS-}-}\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </table>\n </td>\n";
|
|
8
|
+
export declare function getMigrationTemplate(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Generates a custom horizontal migration template with specified products
|
|
11
|
+
* @param products - Array of products to display
|
|
12
|
+
* @param title - Optional title for the block
|
|
13
|
+
* @param composition - Optional array defining order of card elements
|
|
14
|
+
* @returns Complete HTML template
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateMigrationTemplate(products: RecommendationProduct[], title?: string, composition?: string[]): string;
|
|
17
|
+
/**
|
|
18
|
+
* Prepares horizontal product rows for migration
|
|
19
|
+
* @param products - Array of products to display
|
|
20
|
+
* @param composition - Optional array defining order of card elements
|
|
21
|
+
* @returns HTML string for product rows
|
|
22
|
+
*/
|
|
23
|
+
export declare function prepareProductRows(products: RecommendationProduct[], composition?: string[]): string;
|
|
24
|
+
export { DEFAULTS, getDefaultProducts };
|
|
25
|
+
export default migrationTemplate;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RecommendationProduct } from '@@/Types/recommendation';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a horizontal product card with 3-column layout
|
|
4
|
+
* Uses horizontalElementRenderer to render Image, Info content, and Button
|
|
5
|
+
* Layout: [Image (120px)] [Info table (flexible)] [Button (100px)]
|
|
6
|
+
* @param product - The product data
|
|
7
|
+
* @returns HTML string for a single product card row
|
|
8
|
+
*/
|
|
9
|
+
export declare function getHorizontalProductCard(product: RecommendationProduct): string;
|
|
10
|
+
/**
|
|
11
|
+
* Prepares horizontal product rows
|
|
12
|
+
* Each product is a full-width row with 3-column layout
|
|
13
|
+
* @param products - Array of products to display
|
|
14
|
+
* @returns HTML string for product rows
|
|
15
|
+
*/
|
|
16
|
+
export declare function prepareProductRows(products: RecommendationProduct[]): string;
|
|
17
|
+
export declare function getDefaultTemplate(): string;
|
|
18
|
+
export declare function generateBlockTemplate(products: RecommendationProduct[], title?: string): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified Template API for Recommendation Block
|
|
3
|
+
*
|
|
4
|
+
* This module provides a single entry point for working with recommendation
|
|
5
|
+
* block templates, abstracting away the layout-specific implementations.
|
|
6
|
+
*/
|
|
7
|
+
import type { RecommendationProduct } from '@@/Types/recommendation';
|
|
8
|
+
import { type Orientation, type PrepareProductRowsOptions } from './utils';
|
|
9
|
+
export { DEFAULTS, DEFAULT_CARD_COMPOSITION, DEFAULT_CARD_VISIBILITY, getDefaultProducts, spacer, createBlockTemplate, type Orientation, type PrepareProductRowsOptions, type ElementRenderer, type ProductCardGetter, } from './utils';
|
|
10
|
+
/**
|
|
11
|
+
* Unified function to prepare product rows for any layout.
|
|
12
|
+
* Delegates to the appropriate layout-specific implementation.
|
|
13
|
+
* @example
|
|
14
|
+
* // Horizontal layout (full-width rows)
|
|
15
|
+
* prepareProductRows(products, 'horizontal');
|
|
16
|
+
* @example
|
|
17
|
+
* // Vertical layout (grid)
|
|
18
|
+
* prepareProductRows(products, 'vertical', { productsPerRow: 3 });
|
|
19
|
+
* @param products - Array of products to display
|
|
20
|
+
* @param layout - The layout orientation ('horizontal' or 'vertical')
|
|
21
|
+
* @param options - Layout-specific options
|
|
22
|
+
* @returns HTML string for product rows
|
|
23
|
+
*/
|
|
24
|
+
export declare function prepareProductRows(products: RecommendationProduct[], layout: Orientation, options?: PrepareProductRowsOptions): string;
|
|
25
|
+
/**
|
|
26
|
+
* Generates the default template for a given layout.
|
|
27
|
+
* @param layout - The layout orientation ('horizontal' or 'vertical')
|
|
28
|
+
* @returns Complete HTML template with default products
|
|
29
|
+
*/
|
|
30
|
+
export declare function getDefaultTemplate(layout?: Orientation): string;
|
|
31
|
+
/**
|
|
32
|
+
* Generates a complete block template with custom products.
|
|
33
|
+
* @param products - Array of products to display
|
|
34
|
+
* @param layout - The layout orientation ('horizontal' or 'vertical')
|
|
35
|
+
* @param title - Title for the block
|
|
36
|
+
* @param options - Layout-specific options
|
|
37
|
+
* @returns Complete HTML template
|
|
38
|
+
*/
|
|
39
|
+
export declare function generateBlockTemplate(products: RecommendationProduct[], layout: Orientation, title?: string, options?: PrepareProductRowsOptions): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { RecommendationProduct } from '@@/Types/recommendation';
|
|
2
|
+
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';
|
|
3
|
+
export type Orientation = 'horizontal' | 'vertical';
|
|
4
|
+
/**
|
|
5
|
+
* Options for prepareProductRows unified function
|
|
6
|
+
*/
|
|
7
|
+
export interface PrepareProductRowsOptions {
|
|
8
|
+
/** Number of products per row (only for vertical layout, defaults to 3) */
|
|
9
|
+
productsPerRow?: number;
|
|
10
|
+
/** Array defining order of card elements */
|
|
11
|
+
composition?: string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Element renderer interface for product card elements
|
|
15
|
+
* Keys are ATTR_PRODUCT_* constants for consistent naming
|
|
16
|
+
*/
|
|
17
|
+
export interface ElementRenderer {
|
|
18
|
+
[ATTR_PRODUCT_IMAGE]: (product: RecommendationProduct) => string;
|
|
19
|
+
[ATTR_PRODUCT_NAME]: (product: RecommendationProduct) => string;
|
|
20
|
+
[ATTR_PRODUCT_PRICE]: (product: RecommendationProduct) => string;
|
|
21
|
+
[ATTR_PRODUCT_OLD_PRICE]: (product: RecommendationProduct) => string;
|
|
22
|
+
[ATTR_PRODUCT_OMNIBUS_PRICE]: (product: RecommendationProduct) => string;
|
|
23
|
+
[ATTR_PRODUCT_OMNIBUS_DISCOUNT]: (product: RecommendationProduct) => string;
|
|
24
|
+
[ATTR_PRODUCT_BUTTON]: (product: RecommendationProduct) => string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Product card getter function type
|
|
28
|
+
* Used by prepareProductRows to generate individual product cards
|
|
29
|
+
*/
|
|
30
|
+
export type ProductCardGetter = (product: RecommendationProduct, composition?: string[]) => string;
|
|
31
|
+
export declare const DEFAULTS: {
|
|
32
|
+
TITLE: string;
|
|
33
|
+
DESCRIPTION: string;
|
|
34
|
+
};
|
|
35
|
+
export declare const DEFAULT_CARD_COMPOSITION: string[];
|
|
36
|
+
export declare const DEFAULT_CARD_VISIBILITY: Record<string, boolean>;
|
|
37
|
+
export declare const spacer = "\n <tr>\n <td class=\"spacer\" style=\"height: 10px;\"></td>\n </tr>\n";
|
|
38
|
+
export declare function getDefaultProducts(): RecommendationProduct[];
|
|
39
|
+
/**
|
|
40
|
+
* Creates the block template wrapper HTML for recommendation blocks.
|
|
41
|
+
* The template includes title placeholder and product container.
|
|
42
|
+
* @param layout - The layout orientation ('horizontal' or 'vertical')
|
|
43
|
+
* @returns HTML template string with {-{-TITLE-}-} and {-{-PRODUCT_ROWS-}-} placeholders
|
|
44
|
+
*/
|
|
45
|
+
export declare function createBlockTemplate(layout?: Orientation): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ElementRenderer } from '../utils';
|
|
2
|
+
/**
|
|
3
|
+
* Class name for outer cells in attribute rows
|
|
4
|
+
* Used by controls to reliably select direct children for spacing adjustments
|
|
5
|
+
*/
|
|
6
|
+
export declare const ATTRIBUTE_CELL_CLASS = "attribute-cell";
|
|
7
|
+
export declare const verticalElementRenderer: ElementRenderer;
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { RecommendationProduct } from '@@/Types/recommendation';
|
|
2
|
-
import { DEFAULTS, getDefaultProducts } from '
|
|
2
|
+
import { DEFAULTS, getDefaultProducts, DEFAULT_CARD_COMPOSITION, DEFAULT_CARD_VISIBILITY } from '../utils';
|
|
3
3
|
declare const migrationTemplate = "\n <td\n align=\"left\"\n esd-extension-block-id=\"recommendation-block\"\n esd-handler-name=\"esd-extension-RecommendationBlock\"\n class=\"ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block esd-extension-block es-p20\"\n >\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td align=\"center\">\n <table\n class=\"container\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\">\n <tbody>\n <tr>\n <td>\n <table\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\">\n <tbody>\n <tr>\n {-{-TITLE-}-}\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td class=\"spacer\" style=\"height: 20px;\"></td>\n </tr>\n <tr>\n <td>\n <table\n class=\"ins-recommendation-product-container\"\n width=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\"\n >\n {-{-PRODUCT_ROWS-}-}\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </table>\n </td>\n";
|
|
4
|
+
/**
|
|
5
|
+
* Prepares migration product rows with attribute-aligned structure.
|
|
6
|
+
* @param products - Array of products to display
|
|
7
|
+
* @param productsPerRow - Number of products per row
|
|
8
|
+
* @param composition - Array defining element order
|
|
9
|
+
* @returns HTML string for product rows
|
|
10
|
+
*/
|
|
11
|
+
export declare function prepareProductRows(products: RecommendationProduct[], productsPerRow: number, composition?: string[]): string;
|
|
4
12
|
export declare function getMigrationTemplate(): string;
|
|
5
13
|
/**
|
|
6
|
-
* Generates a custom migration template with specified products and layout
|
|
14
|
+
* Generates a custom migration template with specified products and layout.
|
|
7
15
|
* @param products - Array of products to display
|
|
8
16
|
* @param productsPerRow - Number of products per row
|
|
9
17
|
* @param title - Optional title for the block
|
|
@@ -11,6 +19,5 @@ export declare function getMigrationTemplate(): string;
|
|
|
11
19
|
* @returns Complete HTML template
|
|
12
20
|
*/
|
|
13
21
|
export declare function generateMigrationTemplate(products: RecommendationProduct[], productsPerRow: number, title?: string, composition?: string[]): string;
|
|
14
|
-
export
|
|
15
|
-
export { DEFAULTS, getDefaultProducts };
|
|
22
|
+
export { DEFAULTS, DEFAULT_CARD_COMPOSITION, DEFAULT_CARD_VISIBILITY, getDefaultProducts, };
|
|
16
23
|
export default migrationTemplate;
|