@useinsider/guido 2.1.0-beta.febc521 → 2.1.0-beta.ff9b498

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 (169) hide show
  1. package/README.md +39 -1
  2. package/dist/@types/config/schemas.js +71 -66
  3. package/dist/components/Guido.vue.js +1 -1
  4. package/dist/components/Guido.vue2.js +69 -58
  5. package/dist/components/organisms/header/HeaderWrapper.vue.js +9 -9
  6. package/dist/composables/useActionsApi.js +15 -13
  7. package/dist/composables/useBlocksConfig.js +26 -16
  8. package/dist/composables/useSave.js +16 -12
  9. package/dist/composables/useStripo.js +58 -54
  10. package/dist/composables/useStripoEventHandler.js +27 -12
  11. package/dist/composables/useSyncModuleExtractor.js +33 -0
  12. package/dist/config/migrator/itemsBlockMigrator.js +138 -117
  13. package/dist/enums/defaults.js +8 -4
  14. package/dist/enums/unsubscribe.js +25 -21
  15. package/dist/extensions/Blocks/Items/block.js +19 -28
  16. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  17. package/dist/extensions/Blocks/Items/controls/cardComposition.js +137 -89
  18. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  19. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  20. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  21. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  22. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  23. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  24. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  25. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  26. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  27. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  28. package/dist/extensions/Blocks/Items/extension.js +8 -9
  29. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  30. package/dist/extensions/Blocks/Items/template.js +181 -175
  31. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  32. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +153 -69
  33. package/dist/extensions/Blocks/Recommendation/constants.js +9 -1
  34. package/dist/extensions/Blocks/Recommendation/control.js +91 -61
  35. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +71 -0
  39. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +71 -0
  40. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +71 -0
  41. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +71 -0
  42. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  43. package/dist/extensions/Blocks/Recommendation/extension.js +16 -42
  44. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +117 -72
  45. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +85 -64
  46. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +54 -17
  47. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +74 -45
  48. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +25 -0
  49. package/dist/extensions/Blocks/common-control.js +91 -92
  50. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  51. package/dist/guido.css +1 -1
  52. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +158 -95
  53. package/dist/package.json.js +1 -1
  54. package/dist/services/stripoApi.js +50 -14
  55. package/dist/src/@types/config/schemas.d.ts +10 -2
  56. package/dist/src/@types/events.d.ts +34 -2
  57. package/dist/src/composables/useConfig.d.ts +4 -0
  58. package/dist/src/composables/useSyncModuleExtractor.d.ts +4 -0
  59. package/dist/src/enums/defaults.d.ts +4 -0
  60. package/dist/src/enums/unsubscribe.d.ts +3 -0
  61. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  62. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  63. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  64. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  65. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  66. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  67. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  68. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  69. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  70. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  71. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  72. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  73. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  74. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +50 -3
  75. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +32 -0
  76. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +5 -2
  77. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  78. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +592 -0
  79. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  80. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  81. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  82. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  83. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  84. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  85. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
  86. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +15 -7
  87. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  88. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  89. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  90. package/dist/src/mock/api/settings.d.ts +2 -0
  91. package/dist/src/services/stripoApi.d.ts +5 -0
  92. package/dist/src/stores/config.d.ts +36 -0
  93. package/dist/src/stores/editor.d.ts +23 -0
  94. package/dist/static/styles/components/notification.css.js +1 -0
  95. package/dist/static/styles/components/version-history.css.js +10 -2
  96. package/dist/static/styles/components/wide-panel.css.js +18 -6
  97. package/dist/static/styles/customEditorStyle.css.js +13 -0
  98. package/dist/stores/editor.js +2 -1
  99. package/package.json +2 -2
  100. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  101. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  102. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  103. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  104. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  105. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  106. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  107. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  108. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  109. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  110. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  111. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  112. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  113. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  114. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  115. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  116. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  117. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  118. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  119. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  120. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  121. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  122. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  123. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  124. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  125. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  126. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  127. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  128. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  129. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  130. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  131. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  132. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  133. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  134. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  135. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  136. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  137. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  138. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  139. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  140. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  141. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  142. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  143. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  144. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  145. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  146. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  147. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  148. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  149. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  150. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  151. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  152. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  153. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  154. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  155. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  156. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  157. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  158. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  159. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  160. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  161. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  162. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  163. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  164. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  165. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  166. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  167. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  168. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  169. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
@@ -116,7 +116,7 @@ export declare const EditorSchema: v.ObjectSchema<{
116
116
  /** Locale for the editor UI */
117
117
  readonly locale: v.OptionalSchema<v.StringSchema<undefined>, "en">;
118
118
  /** Path to translations object */
119
- readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans.en">;
119
+ readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans[Object.keys(window.trans)[0]]">;
120
120
  /** Migration date for template compatibility */
121
121
  readonly migrationDate: v.OptionalSchema<v.NumberSchema<undefined>, 1759696858>;
122
122
  /** Email header settings */
@@ -129,6 +129,10 @@ export declare const EditorSchema: v.ObjectSchema<{
129
129
  readonly senderName: "";
130
130
  readonly subject: "";
131
131
  }>;
132
+ /** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
133
+ readonly savedModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "savedModules">;
134
+ /** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
135
+ readonly defaultModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "defaultModules">;
132
136
  }, undefined>;
133
137
  /**
134
138
  * UI configuration - visual elements and layout
@@ -428,7 +432,7 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
428
432
  /** Locale for the editor UI */
429
433
  readonly locale: v.OptionalSchema<v.StringSchema<undefined>, "en">;
430
434
  /** Path to translations object */
431
- readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans.en">;
435
+ readonly translationsPath: v.OptionalSchema<v.StringSchema<undefined>, "window.trans[Object.keys(window.trans)[0]]">;
432
436
  /** Migration date for template compatibility */
433
437
  readonly migrationDate: v.OptionalSchema<v.NumberSchema<undefined>, 1759696858>;
434
438
  /** Email header settings */
@@ -441,6 +445,10 @@ export declare const GuidoConfigSchema: v.ObjectSchema<{
441
445
  readonly senderName: "";
442
446
  readonly subject: "";
443
447
  }>;
448
+ /** Folder name for user-saved modules (used by Stripo plugin panel for path construction) */
449
+ readonly savedModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "savedModules">;
450
+ /** Folder name for default/prebuilt modules (used by Stripo plugin panel for path construction) */
451
+ readonly defaultModulesFolderName: v.OptionalSchema<v.StringSchema<undefined>, "defaultModules">;
444
452
  }, undefined>, {}>;
445
453
  /** UI configuration */
446
454
  readonly ui: v.OptionalSchema<v.ObjectSchema<{
@@ -1,6 +1,38 @@
1
- export type StripoEventType = 'save' | 'export' | 'close' | 'autosave' | 'publish' | 'export:requested' | 'export:ready';
1
+ export type StripoEventType = 'save' | 'export' | 'close' | 'autosave' | 'publish' | 'export:requested' | 'export:ready' | 'module_updated' | 'module_dropped';
2
+ export interface ModuleUpdatedParams {
3
+ target: string;
4
+ blockType: string;
5
+ moduleId: number;
6
+ moduleCategory: string | null;
7
+ syncModule: boolean;
8
+ }
9
+ export interface ModuleDroppedParams {
10
+ target: string;
11
+ blockType: string;
12
+ moduleId: number;
13
+ syncModule: boolean;
14
+ }
15
+ export interface SyncModuleUnsubscribePayload {
16
+ stripoModuleId: string;
17
+ unsubscriptionPreferencePages: number[];
18
+ type: string;
19
+ }
20
+ export interface SyncModuleResponse {
21
+ id: number;
22
+ stripoId: number;
23
+ unsubscriptionPreferencePages: UnsubscriptionPreferencePage[];
24
+ }
25
+ export interface UnsubscriptionPreferencePage {
26
+ id: number;
27
+ name: string;
28
+ type: number;
29
+ status: number;
30
+ isVisible: number;
31
+ thumbnail: string;
32
+ createdAt: string;
33
+ }
2
34
  export interface EventHandler {
3
- (params: Record<string, string>): void | Promise<void>;
35
+ (params: Record<string, unknown>): void | Promise<void>;
4
36
  }
5
37
  export interface EventHandlers {
6
38
  [eventType: string]: EventHandler;
@@ -41,6 +41,8 @@ export declare const useConfig: () => {
41
41
  senderName: string;
42
42
  subject: string;
43
43
  };
44
+ savedModulesFolderName: string;
45
+ defaultModulesFolderName: string;
44
46
  };
45
47
  ui: {
46
48
  showHeader: boolean;
@@ -130,6 +132,8 @@ export declare const useConfig: () => {
130
132
  senderName: string;
131
133
  subject: string;
132
134
  };
135
+ savedModulesFolderName: string;
136
+ defaultModulesFolderName: string;
133
137
  } | null>;
134
138
  ui: import("vue").ComputedRef<{
135
139
  showHeader: boolean;
@@ -0,0 +1,4 @@
1
+ import type { SyncModuleUnsubscribePayload } from '@@/Types/events';
2
+ export declare const useSyncModuleExtractor: () => {
3
+ extractSyncModuleUnsubscribeData: (html: string) => SyncModuleUnsubscribePayload[];
4
+ };
@@ -9,3 +9,7 @@ export declare const TemplateTypes: {
9
9
  export declare const EditorType: number;
10
10
  export declare const MAX_DEFAULT_TEMPLATE_ID = 13;
11
11
  export declare const ProductIds: Record<string, number>;
12
+ export declare const ModuleFolderDefaults: {
13
+ readonly SAVED_MODULES: "savedModules";
14
+ readonly DEFAULT_MODULES: "defaultModules";
15
+ };
@@ -25,6 +25,9 @@ export declare const PAGE_TYPES: {
25
25
  SUBSCRIPTION_PREFERENCE_CONFIRMATION: number;
26
26
  RESUBSCRIBE: number;
27
27
  };
28
+ export declare const UNSUBSCRIBE_SYNC_MODULE_TYPES: {
29
+ [x: number]: string;
30
+ };
28
31
  export declare const TYPE_COLLECTIONS: {
29
32
  [x: number]: number[];
30
33
  };
@@ -23,5 +23,4 @@ export declare class ItemsBlock extends Block {
23
23
  getTemplate(): string;
24
24
  allowInnerBlocksDND(): boolean;
25
25
  onCreated(node: ImmutableHtmlNode): void;
26
- onSelect(node: ImmutableHtmlNode): void;
27
26
  }
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.BUTTON_LINK;
5
5
  export declare class ButtonLinkControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -2,7 +2,6 @@ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
2
  import { CommonControl } from '../../common-control';
3
3
  export declare const COMPOSITION_CONTROL_BLOCK_ID = "ui-elements-items-card-composition-block";
4
4
  export declare class ItemsBlockCardCompositionControl extends CommonControl {
5
- private store;
6
5
  private visibilityState;
7
6
  getId(): string;
8
7
  getTemplate(): string;
@@ -19,10 +18,11 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
19
18
  * If itemsType is not BROWSED_ITEMS, show quantity
20
19
  * If itemsType is BROWSED_ITEMS, hide quantity
21
20
  * and mark it as '0'
21
+ * @param syncOnly - If true, only sync local state and UI without modifying the document
22
22
  */
23
- _handleBrowsedItemsQuantity(): void;
24
- _applyVisibilityStyles(): void;
25
- _updateVisibilityAttribute(elementName: string, isVisible: boolean): void;
23
+ _handleBrowsedItemsQuantity(syncOnly?: boolean): void;
24
+ _applyVisibilityStyles(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
25
+ _updateVisibilityAttribute(elementName: string, isVisible: boolean, modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
26
26
  _listenToFormUpdates(): void;
27
27
  _onProductImageChange(value: boolean): void;
28
28
  _onProductNameChange(value: boolean): void;
@@ -37,6 +37,6 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
37
37
  * - When price is hidden, original price cell expands to 100%
38
38
  * - When both are visible, they share 50% each
39
39
  */
40
- _updatePriceCellWidthsForVerticalLayout(): void;
40
+ _updatePriceCellWidthsForVerticalLayout(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
41
41
  _onProductButtonChange(value: boolean): void;
42
42
  }
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.IMAGE_LINK;
5
5
  export declare class ImageLinkControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.NAME_TRIMMING;
5
5
  export declare class NameTrimmingControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_CURRENCY_LOCATION;
5
5
  export declare class PriceCurrencyLocationControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_CURRENCY_SYMBOL;
5
5
  export declare class PriceCurrencySymbolControl extends CommonControl {
6
- private store;
7
6
  private originalPriceContents;
8
7
  getId(): string;
9
8
  getTemplate(): string;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_FORMATTED_PRICE;
5
5
  export declare class PriceFormattedPriceControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_HIDE_DISCOUNT;
5
5
  export declare class PriceHideDiscountControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,7 +3,6 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_ORIENTATION;
5
5
  export declare class PriceOrientationControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
@@ -3,15 +3,10 @@ import { CommonControl } from '../../../common-control';
3
3
  import { ItemsBlockControlId } from '../../enums/controlEnums';
4
4
  export declare const CONTROL_BLOCK_ID = ItemsBlockControlId.PRICE_SINGLE_PRICE;
5
5
  export declare class PriceSinglePriceControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
10
9
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
- /**
12
- * Syncs single price state from nodeConfig.
13
- */
14
- private _syncSinglePriceFromNodeConfig;
15
10
  _onSinglePriceChange(value: boolean): void;
16
11
  private _updatePriceBlock;
17
12
  _getSinglePrice(): string;
@@ -3,12 +3,10 @@ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
3
3
  import { CommonControl } from '../../common-control';
4
4
  export declare const CONTROL_BLOCK_ID = "ui-elements-items-block";
5
5
  export declare class ItemsBlockControl extends CommonControl {
6
- private store;
7
6
  getId(): string;
8
7
  getTemplate(): string;
9
8
  onRender(): void;
10
9
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
11
- onDestroy(): void;
12
10
  _getItemsType(): string;
13
11
  _getOrientation(): string;
14
12
  _getItemInCart(): string;
@@ -18,7 +16,7 @@ export declare class ItemsBlockControl extends CommonControl {
18
16
  _initializeSelectItems(): void;
19
17
  _listenToFormUpdates(): void;
20
18
  _renderTemplate(): void;
21
- _getTemplateData(): {
19
+ _getTemplateData(itemsTypeOverride?: ProductType, itemIdOverride?: string): {
22
20
  imageSrc: string;
23
21
  name: string;
24
22
  price: string;
@@ -26,15 +24,15 @@ export declare class ItemsBlockControl extends CommonControl {
26
24
  quantity: string;
27
25
  button: string;
28
26
  };
29
- _updateImageSrc(imageSrc: string): void;
30
- _updateName(name: string): void;
31
- _updatePrice(price: string): void;
32
- _updateOriginalPrice(originalPrice: string): void;
33
- _updateQuantity(quantity: string): void;
34
- _reOrderTemplate(): void;
35
- _updateDataTypeAttributes(itemsType: ProductType): void;
36
- _updateDataNumberAttributes(itemId: string): void;
37
- _reFillTemplate(): void;
27
+ _updateImageSrc(imageSrc: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
28
+ _updateName(name: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
29
+ _updatePrice(price: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
30
+ _updateOriginalPrice(originalPrice: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
31
+ _updateQuantity(quantity: string, itemsTypeOverride: ProductType | undefined, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
32
+ _reOrderTemplate(modifier?: ReturnType<typeof this.api.getDocumentModifier>): void;
33
+ _updateDataTypeAttributes(itemsType: ProductType, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
34
+ _updateDataNumberAttributes(itemId: string, modifier: ReturnType<typeof this.api.getDocumentModifier>): void;
35
+ _reFillTemplate(itemsType?: ProductType): void;
38
36
  _recalculateTrimming(): void;
39
37
  private _getParagraphFromBlock;
40
38
  private _escapeRegex;
@@ -66,8 +66,9 @@ export declare function getItemsBlockConfig(currentNode: ImmutableHtmlNode | und
66
66
  * @param currentNode - The current node from the control
67
67
  * @param api - The API object (ControlApi or BlockApi)
68
68
  * @param config - The configuration to set (partial update supported)
69
+ * @param modifier - Optional document modifier for batching updates
69
70
  */
70
- export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>): void;
71
+ export declare function setItemsBlockConfig(currentNode: ImmutableHtmlNode | undefined, api: ControlApi | BlockApi, config: Partial<ItemsBlockConfig>, modifier?: ReturnType<typeof api.getDocumentModifier>): void;
71
72
  /**
72
73
  * Gets the block instance ID from the node config.
73
74
  * @param currentNode - The current node from the control
@@ -7,22 +7,69 @@ export interface CardCompositionItem {
7
7
  visible: boolean;
8
8
  }
9
9
  export declare class RecommendationCardCompositionControl extends CommonControl {
10
- private currentComposition;
11
- private currentVisibility;
12
10
  getId(): string;
13
11
  getTemplate(): string;
14
12
  onRender(): void;
15
13
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
16
14
  /**
17
- * Initialize the composition order and visibility from the block or use defaults
15
+ * Creates the HTML content for an orderable item with label and toggle
16
+ */
17
+ private _createItemContent;
18
+ /**
19
+ * Registers event listeners for composition and visibility changes
20
+ */
21
+ private _registerValueChangeListeners;
22
+ /**
23
+ * Initializes composition order and visibility state from the current node
18
24
  */
19
25
  private _initializeComposition;
26
+ /**
27
+ * Reads composition order from node's data-card-composition attribute
28
+ * Falls back to default order if attribute is not present
29
+ */
30
+ private _readCompositionFromNode;
31
+ /**
32
+ * Builds visibility values object from the visibility map
33
+ */
34
+ private _buildVisibilityValues;
35
+ /**
36
+ * Read visibility state from individual row elements' data-visibility attributes
37
+ * This ensures toggles reflect the actual DOM state
38
+ */
39
+ private _readVisibilityFromRows;
40
+ /**
41
+ * Returns default visibility values for all items
42
+ */
43
+ private _getDefaultVisibilities;
44
+ /**
45
+ * Extracts visibility values from DOM nodes
46
+ */
47
+ private _extractVisibilityFromRows;
48
+ /**
49
+ * Parses visibility value from string to boolean
50
+ * Accepts "1", "true" as true, everything else as false
51
+ */
52
+ private _parseVisibilityValue;
53
+ /**
54
+ * Merges extracted visibilities with default values for missing keys
55
+ */
56
+ private _mergeWithDefaults;
20
57
  /**
21
58
  * Apply the reordered composition to the block's HTML structure
59
+ * Updates the data-card-composition attribute and reorders product attributes
22
60
  */
23
61
  private _applyCompositionToBlock;
62
+ /**
63
+ * Reorders attribute rows within each product row based on composition order
64
+ */
65
+ private _reorderProductAttributes;
66
+ /**
67
+ * Builds HTML string with attributes ordered according to composition
68
+ */
69
+ private _buildCompositionHtml;
24
70
  /**
25
71
  * Apply visibility changes to the block's HTML structure
72
+ * Updates display style and data-visibility attribute for all matching rows
26
73
  */
27
74
  private _applyVisibilityToBlock;
28
75
  }
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Attribute type constants used in templates
3
+ * These are used as keys in ElementRenderer and composition arrays
4
+ */
5
+ export declare const ATTR_PRODUCT_IMAGE = "productImage";
6
+ export declare const ATTR_PRODUCT_NAME = "productName";
7
+ export declare const ATTR_PRODUCT_PRICE = "productPrice";
8
+ export declare const ATTR_PRODUCT_OLD_PRICE = "productOldPrice";
9
+ export declare const ATTR_PRODUCT_OMNIBUS_PRICE = "productOmnibusPrice";
10
+ export declare const ATTR_PRODUCT_OMNIBUS_DISCOUNT = "productOmnibusDiscount";
11
+ export declare const ATTR_PRODUCT_BUTTON = "productButton";
1
12
  /**
2
13
  * Block IDs used in the Recommendation Extension
3
14
  * These IDs are used in the esd-extension-block-id attribute to identify specific blocks
@@ -7,6 +18,8 @@ export declare enum RecommendationBlockId {
7
18
  NAME = "recommendation-block-name",
8
19
  PRICE = "recommendation-block-price",
9
20
  OLD_PRICE = "recommendation-block-old-price",
21
+ OMNIBUS_PRICE = "recommendation-block-omnibus-price",
22
+ OMNIBUS_DISCOUNT = "recommendation-block-omnibus-discount",
10
23
  IMAGE = "recommendation-block-image"
11
24
  }
12
25
  /**
@@ -32,6 +45,7 @@ export declare enum RecommendationControlId {
32
45
  NAME_PADDINGS = "recommendation-block-name-paddings-control",
33
46
  NAME_SIZE = "recommendation-block-name-size-control",
34
47
  NAME_STYLE = "recommendation-block-name-style-control",
48
+ NAME_TEXT_TRIM = "recommendation-block-name-text-trim-control",
35
49
  PRICE_ALIGN = "recommendation-block-price-align-control",
36
50
  PRICE_BACKGROUND = "recommendation-block-price-background-control",
37
51
  PRICE_COLOR = "recommendation-block-price-color-control",
@@ -46,6 +60,24 @@ export declare enum RecommendationControlId {
46
60
  OLD_PRICE_PADDINGS = "recommendation-block-old-price-paddings-control",
47
61
  OLD_PRICE_SIZE = "recommendation-block-old-price-size-control",
48
62
  OLD_PRICE_STYLE = "recommendation-block-old-price-style-control",
63
+ OMNIBUS_PRICE_ALIGN = "recommendation-block-omnibus-price-align-control",
64
+ OMNIBUS_PRICE_BACKGROUND = "recommendation-block-omnibus-price-background-control",
65
+ OMNIBUS_PRICE_COLOR = "recommendation-block-omnibus-price-color-control",
66
+ OMNIBUS_PRICE_FONT_FAMILY = "recommendation-block-omnibus-price-font-family-control",
67
+ OMNIBUS_PRICE_PADDINGS = "recommendation-block-omnibus-price-paddings-control",
68
+ OMNIBUS_PRICE_SIZE = "recommendation-block-omnibus-price-size-control",
69
+ OMNIBUS_PRICE_STYLE = "recommendation-block-omnibus-price-style-control",
70
+ OMNIBUS_PRICE_TEXT_BEFORE = "recommendation-block-omnibus-price-text-before-control",
71
+ OMNIBUS_PRICE_TEXT_AFTER = "recommendation-block-omnibus-price-text-after-control",
72
+ OMNIBUS_DISCOUNT_ALIGN = "recommendation-block-omnibus-discount-align-control",
73
+ OMNIBUS_DISCOUNT_BACKGROUND = "recommendation-block-omnibus-discount-background-control",
74
+ OMNIBUS_DISCOUNT_COLOR = "recommendation-block-omnibus-discount-color-control",
75
+ OMNIBUS_DISCOUNT_FONT_FAMILY = "recommendation-block-omnibus-discount-font-family-control",
76
+ OMNIBUS_DISCOUNT_PADDINGS = "recommendation-block-omnibus-discount-paddings-control",
77
+ OMNIBUS_DISCOUNT_SIZE = "recommendation-block-omnibus-discount-size-control",
78
+ OMNIBUS_DISCOUNT_STYLE = "recommendation-block-omnibus-discount-style-control",
79
+ OMNIBUS_DISCOUNT_TEXT_BEFORE = "recommendation-block-omnibus-discount-text-before-control",
80
+ OMNIBUS_DISCOUNT_TEXT_AFTER = "recommendation-block-omnibus-discount-text-after-control",
49
81
  IMAGE_SIZE = "recommendation-block-image-size-control",
50
82
  IMAGE_MARGINS = "recommendation-block-image-margins-control"
51
83
  }
@@ -17,8 +17,6 @@ export declare class RecommendationBlockControl extends CommonControl {
17
17
  _getProductLayout(): string;
18
18
  _getFilterStatus(): string;
19
19
  _getShuffleProducts(): string;
20
- _getResponsive(): string;
21
- _onFilterChange(value: boolean): void;
22
20
  _onFilterSelectClick(): void;
23
21
  _onDataChange(item: string, value: string | number | string[]): void;
24
22
  /**
@@ -26,6 +24,11 @@ export declare class RecommendationBlockControl extends CommonControl {
26
24
  */
27
25
  _getCardComposition(): string[];
28
26
  _regenerateProductRows(): void;
27
+ /**
28
+ * Reapply spacing values after product regeneration
29
+ * This ensures spacing persists when products are regenerated
30
+ */
31
+ _reapplySpacing(): void;
29
32
  _debouncedRegenerateProductRows: import("@vueuse/shared").PromisifyFn<() => void>;
30
33
  _onCurrencyConfigChange(item: string, value: string | number): void;
31
34
  _onCurrencyChange(value: string): void;
@@ -0,0 +1,25 @@
1
+ import { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
2
+ import { CommonControl } from '../../common-control';
3
+ export declare const CARD_BACKGROUND_COLOR_CONTROL_ID = "recommendation-card-background-color-control";
4
+ /**
5
+ * Control for managing recommendation card background color
6
+ * This control is displayed in the Styles tab
7
+ */
8
+ export declare class CardBackgroundColorControl extends CommonControl {
9
+ getId(): string;
10
+ getTemplate(): string;
11
+ onRender(): void;
12
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
13
+ _setFormValues(): void;
14
+ /**
15
+ * Reads the current background color from the first product card wrapper
16
+ * @returns The background color value or 'transparent' if not found
17
+ */
18
+ _getCurrentCardBackgroundColor(): string;
19
+ /**
20
+ * Handles card background color changes
21
+ * Applies the color to all product card wrapper elements
22
+ */
23
+ _onCardBackgroundColorChange(color: string): void;
24
+ _listenToFormUpdates(): void;
25
+ }