@useinsider/guido 2.1.0 → 2.2.0-beta.1696353

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 (156) hide show
  1. package/README.md +36 -0
  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/config/migrator/itemsBlockMigrator.js +140 -123
  9. package/dist/enums/defaults.js +8 -4
  10. package/dist/extensions/Blocks/Items/block.js +19 -28
  11. package/dist/extensions/Blocks/Items/controls/button/link.js +19 -31
  12. package/dist/extensions/Blocks/Items/controls/cardComposition.js +137 -89
  13. package/dist/extensions/Blocks/Items/controls/image/link.js +19 -31
  14. package/dist/extensions/Blocks/Items/controls/name/trimming.js +28 -40
  15. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +35 -47
  16. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +49 -54
  17. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +42 -51
  18. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +23 -36
  19. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +45 -57
  20. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +42 -60
  21. package/dist/extensions/Blocks/Items/controls/settingsControl.js +189 -196
  22. package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -2
  23. package/dist/extensions/Blocks/Items/extension.js +8 -9
  24. package/dist/extensions/Blocks/Items/settingsPanel.js +10 -15
  25. package/dist/extensions/Blocks/Items/template.js +181 -175
  26. package/dist/extensions/Blocks/Items/utils/nodeConfigUtils.js +65 -65
  27. package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +153 -69
  28. package/dist/extensions/Blocks/Recommendation/constants.js +9 -1
  29. package/dist/extensions/Blocks/Recommendation/control.js +91 -61
  30. package/dist/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.js +68 -0
  31. package/dist/extensions/Blocks/Recommendation/controls/index.js +245 -0
  32. package/dist/extensions/Blocks/Recommendation/controls/nameTextTrimControl.js +74 -0
  33. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.js +71 -0
  34. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.js +71 -0
  35. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.js +71 -0
  36. package/dist/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.js +71 -0
  37. package/dist/extensions/Blocks/Recommendation/controls/spacingControl.js +188 -0
  38. package/dist/extensions/Blocks/Recommendation/extension.js +16 -42
  39. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +117 -72
  40. package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +85 -64
  41. package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +54 -17
  42. package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +74 -45
  43. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +25 -0
  44. package/dist/extensions/Blocks/common-control.js +91 -92
  45. package/dist/extensions/ModulesTabIcons/extension.js +17 -0
  46. package/dist/guido.css +1 -1
  47. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +158 -95
  48. package/dist/package.json.js +1 -1
  49. package/dist/src/@types/config/schemas.d.ts +10 -2
  50. package/dist/src/composables/useConfig.d.ts +4 -0
  51. package/dist/src/enums/defaults.d.ts +4 -0
  52. package/dist/src/extensions/Blocks/Items/block.d.ts +0 -1
  53. package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -1
  54. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +5 -5
  55. package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -1
  56. package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -1
  57. package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -1
  58. package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -1
  59. package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -1
  60. package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -1
  61. package/dist/src/extensions/Blocks/Items/controls/price/priceOrientation.d.ts +0 -1
  62. package/dist/src/extensions/Blocks/Items/controls/price/singlePrice.d.ts +0 -5
  63. package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +10 -12
  64. package/dist/src/extensions/Blocks/Items/utils/nodeConfigUtils.d.ts +2 -1
  65. package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +50 -3
  66. package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +32 -0
  67. package/dist/src/extensions/Blocks/Recommendation/control.d.ts +5 -2
  68. package/dist/src/extensions/Blocks/Recommendation/controls/cardBackgroundColorControl.d.ts +25 -0
  69. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +592 -0
  70. package/dist/src/extensions/Blocks/Recommendation/controls/nameTextTrimControl.d.ts +16 -0
  71. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextAfterControl.d.ts +15 -0
  72. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusDiscountTextBeforeControl.d.ts +15 -0
  73. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextAfterControl.d.ts +15 -0
  74. package/dist/src/extensions/Blocks/Recommendation/controls/omnibusPriceTextBeforeControl.d.ts +15 -0
  75. package/dist/src/extensions/Blocks/Recommendation/controls/spacingControl.d.ts +60 -0
  76. package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +3 -3
  77. package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +15 -7
  78. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +19 -0
  79. package/dist/src/extensions/Blocks/common-control.d.ts +4 -5
  80. package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
  81. package/dist/src/stores/config.d.ts +36 -0
  82. package/dist/static/styles/components/notification.css.js +1 -0
  83. package/dist/static/styles/components/version-history.css.js +10 -2
  84. package/dist/static/styles/components/wide-panel.css.js +18 -6
  85. package/dist/static/styles/customEditorStyle.css.js +13 -0
  86. package/package.json +2 -2
  87. package/dist/extensions/Blocks/Items/store/items-block.js +0 -79
  88. package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
  89. package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
  90. package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
  91. package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
  92. package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
  93. package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
  94. package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
  95. package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
  96. package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
  97. package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
  98. package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
  99. package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
  100. package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
  101. package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
  102. package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
  103. package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
  104. package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
  105. package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
  106. package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
  107. package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
  108. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
  109. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
  110. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
  111. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
  112. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
  113. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
  114. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
  115. package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
  116. package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
  117. package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
  118. package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
  119. package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
  120. package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
  121. package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
  122. package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -45
  123. package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
  124. package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
  125. package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
  126. package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
  127. package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
  128. package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
  129. package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
  130. package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
  131. package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
  132. package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
  133. package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
  134. package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
  135. package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
  136. package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
  137. package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
  138. package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
  139. package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
  140. package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
  141. package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
  142. package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
  143. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
  144. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
  145. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
  146. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
  147. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
  148. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
  149. package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
  150. package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
  151. package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
  152. package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
  153. package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
  154. package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
  155. package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
  156. package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
@@ -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,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,60 @@
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
+ getId(): string;
11
+ getTemplate(): string;
12
+ onRender(): void;
13
+ onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
14
+ /**
15
+ * Reads spacing values from data attributes or returns defaults
16
+ */
17
+ _setFormValues(): void;
18
+ /**
19
+ * Gets stored column spacing from the first product card wrapper's parent element's padding
20
+ * Reads the actual padding value instead of relying on data attributes
21
+ *
22
+ * The padding is applied as "0 {halfSpacing}px" on the parent TD element,
23
+ * so we need to extract the horizontal padding value and multiply by 2 to get total spacing.
24
+ */
25
+ _getStoredColumnSpacing(): number;
26
+ /**
27
+ * Gets stored row spacing from the first spacer element's height style
28
+ * Reads the actual height value instead of relying on data attributes
29
+ */
30
+ _getStoredRowSpacing(): number;
31
+ /**
32
+ * Handles column spacing changes
33
+ * Applies horizontal padding to all product card wrappers
34
+ */
35
+ _onColumnSpacingChange(spacing: number): void;
36
+ /**
37
+ * Handles row spacing changes
38
+ * Applies height to all spacer elements between product rows
39
+ */
40
+ _onRowSpacingChange(spacing: number): void;
41
+ /**
42
+ * Stores column spacing value in block data attribute
43
+ */
44
+ _storeColumnSpacing(spacing: number): void;
45
+ /**
46
+ * Stores row spacing value in block data attribute
47
+ */
48
+ _storeRowSpacing(spacing: number): void;
49
+ _listenToFormUpdates(): void;
50
+ /**
51
+ * Debounced version of _onColumnSpacingChange
52
+ * Prevents excessive DOM updates when user rapidly adjusts the counter
53
+ */
54
+ _debouncedOnColumnSpacingChange: import("@vueuse/shared").PromisifyFn<(spacing: number) => void>;
55
+ /**
56
+ * Debounced version of _onRowSpacingChange
57
+ * Prevents excessive DOM updates when user rapidly adjusts the counter
58
+ */
59
+ _debouncedOnRowSpacingChange: import("@vueuse/shared").PromisifyFn<(spacing: number) => void>;
60
+ }
@@ -1,6 +1,6 @@
1
1
  import type { RecommendationProduct } from '@@/Types/recommendation';
2
- import { DEFAULTS, getDefaultProducts, DEFAULT_CARD_COMPOSITION } from './templateUtils';
3
- declare const blockTemplate = "\n <td align=\"left\" class=\"ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block es-p20\">\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 <BLOCK_TEXT\n class=\"es-p10t es-p10b es-p20l es-p20r\"\n align=\"center\">\n <p path=\"1\" style=\"font-size: 28px; color: #333333;\">\n <strong path=\"1,0\">{-{-TITLE-}-}</strong>\n </p>\n </BLOCK_TEXT>\n </tbody>\n </table>\n </td>\n </tr>\n \n <tr>\n <td class=\"spacer\" style=\"height: 20px;\"></td>\n </tr>\n\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";
2
+ import { DEFAULTS, getDefaultProducts, DEFAULT_CARD_COMPOSITION, DEFAULT_CARD_VISIBILITY } from './templateUtils';
3
+ declare const blockTemplate = "\n <td align=\"left\" class=\"ins-recommendation-v3-block-v2 esd-block-recommendation-v3-block es-p20\">\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 <BLOCK_TEXT\n class=\"es-p10t es-p10b es-p20l es-p20r\"\n align=\"center\">\n <p path=\"1\" style=\"font-size: 28px; color: #333333;\">\n <strong path=\"1,0\">{-{-TITLE-}-}</strong>\n </p>\n </BLOCK_TEXT>\n </tbody>\n </table>\n </td>\n </tr>\n \n <tr>\n <td class=\"spacer\" style=\"height: 10px;\"></td>\n </tr>\n\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
4
  export declare function getDefaultTemplate(): string;
5
5
  /**
6
6
  * Generates a custom template with specified products and layout
@@ -12,5 +12,5 @@ export declare function getDefaultTemplate(): string;
12
12
  */
13
13
  export declare function generateBlockTemplate(products: RecommendationProduct[], productsPerRow: number, title?: string, composition?: string[]): string;
14
14
  export declare function prepareProductRows(products: RecommendationProduct[], productsPerRow: number, composition?: string[]): string;
15
- export { DEFAULTS, DEFAULT_CARD_COMPOSITION, getDefaultProducts, };
15
+ export { DEFAULTS, DEFAULT_CARD_COMPOSITION, DEFAULT_CARD_VISIBILITY, getDefaultProducts, };
16
16
  export default blockTemplate;
@@ -1,10 +1,13 @@
1
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';
2
3
  export interface ElementRenderer {
3
- productImage: (product: RecommendationProduct) => string;
4
- productName: (product: RecommendationProduct) => string;
5
- productPrice: (product: RecommendationProduct) => string;
6
- productOldPrice: (product: RecommendationProduct) => string;
7
- productButton: (product: RecommendationProduct) => string;
4
+ [ATTR_PRODUCT_IMAGE]: (product: RecommendationProduct) => string;
5
+ [ATTR_PRODUCT_NAME]: (product: RecommendationProduct) => string;
6
+ [ATTR_PRODUCT_PRICE]: (product: RecommendationProduct) => string;
7
+ [ATTR_PRODUCT_OLD_PRICE]: (product: RecommendationProduct) => string;
8
+ [ATTR_PRODUCT_OMNIBUS_PRICE]: (product: RecommendationProduct) => string;
9
+ [ATTR_PRODUCT_OMNIBUS_DISCOUNT]: (product: RecommendationProduct) => string;
10
+ [ATTR_PRODUCT_BUTTON]: (product: RecommendationProduct) => string;
8
11
  }
9
12
  export interface TemplateConfig {
10
13
  spacer: string;
@@ -17,10 +20,15 @@ export declare const DEFAULTS: {
17
20
  TITLE: string;
18
21
  DESCRIPTION: string;
19
22
  };
20
- export declare const spacer = "\n <tr>\n <td class=\"spacer\" style=\"height: 20px;\"></td>\n </tr>\n";
21
- export declare const productRow = "\n <tr>\n <td>\n <table width=\"100%\" height=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n {-{-PRODUCTS-}-}\n </table>\n </td>\n </tr>\n";
23
+ export declare const spacer = "\n <tr>\n <td class=\"spacer\" style=\"height: 10px;\"></td>\n </tr>\n";
24
+ export declare const productRow = "\n <tr class=\"recommendation-product-row\">\n <td>\n <table width=\"100%\" height=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n {-{-PRODUCTS-}-}\n </table>\n </td>\n </tr>\n";
22
25
  export declare const productCardWrapper = "\n <td width=\"{-{-COLUMN_WIDTH-}-}\" style=\"padding: 0 5px;\" valign=\"top\" height=\"100%\">\n <table\n width=\"100%\"\n height=\"100%\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n border=\"0\"\n class=\"product-card-wrapper\">\n <tr>\n <td\n class=\"product-attribute-cell\"\n valign=\"top\">\n <table cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" width=\"100%\">\n <tbody>\n {-{-PRODUCT_CONTENT-}-}\n </tbody>\n </table>\n </td>\n </tr>\n </table>\n </td>\n";
23
26
  export declare const DEFAULT_CARD_COMPOSITION: string[];
27
+ /**
28
+ * Default visibility settings for card composition elements
29
+ * Omnibus Price and Omnibus Discount are hidden by default
30
+ */
31
+ export declare const DEFAULT_CARD_VISIBILITY: Record<string, boolean>;
24
32
  export declare function getDefaultProducts(): RecommendationProduct[];
25
33
  /**
26
34
  * Core template generation logic that works with any element renderer
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Utility for preserving text styling when updating innerHTML
3
+ */
4
+ import type { ImmutableHtmlNode } from '@stripoinc/ui-editor-extensions';
5
+ /**
6
+ * Preserves existing style tags when updating text content
7
+ *
8
+ * When users apply text styles (bold, italic, etc.) in Stripo, the editor wraps
9
+ * content in tags like <strong>, <em>, <u>, <s>. This function extracts those
10
+ * style tags from the original HTML and re-applies them to the new text content.
11
+ * @example
12
+ * // Original: <span class="omnibus-text-before"><strong>Lowest price: </strong></span>
13
+ * // After calling preserveTextStyles(element, 'Best price: ')
14
+ * // Result: <strong>Best price: </strong>
15
+ * @param element - The DOM element or ImmutableHtmlNode containing the styled text
16
+ * @param newText - The new text content to insert
17
+ * @returns The new text wrapped in the original style tags
18
+ */
19
+ export declare function preserveTextStyles(element: ImmutableHtmlNode | Element, newText: string): string;
@@ -66,14 +66,13 @@ export declare abstract class CommonControl extends Control {
66
66
  */
67
67
  protected getBlockInstanceId(): string | null;
68
68
  /**
69
- * Handles block instance change detection and syncing.
70
- * This is a helper method for controls that need to sync config when switching between block instances.
69
+ * Handles block instance change detection and UI updates.
70
+ * This is a helper method for controls that need to update UI when switching between block instances.
71
71
  * Uses Stripo V2 nodeConfig API for block instance tracking.
72
- * @param syncFunction - Function to call when block instance changes (to sync from node config)
73
- * @param updateUI - Function to call to update the UI (called both on change and when same block)
72
+ * @param updateUI - Function to call to update the UI (called on every update)
74
73
  * @returns true if block instance changed, false otherwise
75
74
  */
76
- protected handleBlockInstanceChange(syncFunction: (node: ImmutableHtmlNode) => void, updateUI: () => void): boolean;
75
+ protected handleBlockInstanceChange(updateUI: () => void): boolean;
77
76
  _GuLabel({ text, name }: LabelProps): string;
78
77
  _GuToggle(name: string): string;
79
78
  _GuSelectItem({ text, value }: {
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@stripoinc/ui-editor-extensions").Extension;
2
+ export default _default;
@@ -46,6 +46,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
46
46
  senderName: string;
47
47
  subject: string;
48
48
  };
49
+ savedModulesFolderName: string;
50
+ defaultModulesFolderName: string;
49
51
  };
50
52
  ui: {
51
53
  showHeader: boolean;
@@ -141,6 +143,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
141
143
  senderName: string;
142
144
  subject: string;
143
145
  };
146
+ savedModulesFolderName: string;
147
+ defaultModulesFolderName: string;
144
148
  };
145
149
  ui: {
146
150
  showHeader: boolean;
@@ -236,6 +240,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
236
240
  senderName: string;
237
241
  subject: string;
238
242
  };
243
+ savedModulesFolderName: string;
244
+ defaultModulesFolderName: string;
239
245
  };
240
246
  ui: {
241
247
  showHeader: boolean;
@@ -331,6 +337,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
331
337
  senderName: string;
332
338
  subject: string;
333
339
  };
340
+ savedModulesFolderName: string;
341
+ defaultModulesFolderName: string;
334
342
  };
335
343
  ui: {
336
344
  showHeader: boolean;
@@ -426,6 +434,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
426
434
  senderName: string;
427
435
  subject: string;
428
436
  };
437
+ savedModulesFolderName: string;
438
+ defaultModulesFolderName: string;
429
439
  };
430
440
  ui: {
431
441
  showHeader: boolean;
@@ -521,6 +531,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
521
531
  senderName: string;
522
532
  subject: string;
523
533
  };
534
+ savedModulesFolderName: string;
535
+ defaultModulesFolderName: string;
524
536
  };
525
537
  ui: {
526
538
  showHeader: boolean;
@@ -616,6 +628,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
616
628
  senderName: string;
617
629
  subject: string;
618
630
  };
631
+ savedModulesFolderName: string;
632
+ defaultModulesFolderName: string;
619
633
  };
620
634
  ui: {
621
635
  showHeader: boolean;
@@ -711,6 +725,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
711
725
  senderName: string;
712
726
  subject: string;
713
727
  };
728
+ savedModulesFolderName: string;
729
+ defaultModulesFolderName: string;
714
730
  };
715
731
  ui: {
716
732
  showHeader: boolean;
@@ -806,6 +822,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
806
822
  senderName: string;
807
823
  subject: string;
808
824
  };
825
+ savedModulesFolderName: string;
826
+ defaultModulesFolderName: string;
809
827
  };
810
828
  ui: {
811
829
  showHeader: boolean;
@@ -901,6 +919,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
901
919
  senderName: string;
902
920
  subject: string;
903
921
  };
922
+ savedModulesFolderName: string;
923
+ defaultModulesFolderName: string;
904
924
  };
905
925
  ui: {
906
926
  showHeader: boolean;
@@ -996,6 +1016,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
996
1016
  senderName: string;
997
1017
  subject: string;
998
1018
  };
1019
+ savedModulesFolderName: string;
1020
+ defaultModulesFolderName: string;
999
1021
  };
1000
1022
  ui: {
1001
1023
  showHeader: boolean;
@@ -1091,6 +1113,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1091
1113
  senderName: string;
1092
1114
  subject: string;
1093
1115
  };
1116
+ savedModulesFolderName: string;
1117
+ defaultModulesFolderName: string;
1094
1118
  };
1095
1119
  ui: {
1096
1120
  showHeader: boolean;
@@ -1186,6 +1210,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1186
1210
  senderName: string;
1187
1211
  subject: string;
1188
1212
  };
1213
+ savedModulesFolderName: string;
1214
+ defaultModulesFolderName: string;
1189
1215
  };
1190
1216
  ui: {
1191
1217
  showHeader: boolean;
@@ -1281,6 +1307,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1281
1307
  senderName: string;
1282
1308
  subject: string;
1283
1309
  };
1310
+ savedModulesFolderName: string;
1311
+ defaultModulesFolderName: string;
1284
1312
  };
1285
1313
  ui: {
1286
1314
  showHeader: boolean;
@@ -1376,6 +1404,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1376
1404
  senderName: string;
1377
1405
  subject: string;
1378
1406
  };
1407
+ savedModulesFolderName: string;
1408
+ defaultModulesFolderName: string;
1379
1409
  };
1380
1410
  ui: {
1381
1411
  showHeader: boolean;
@@ -1471,6 +1501,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1471
1501
  senderName: string;
1472
1502
  subject: string;
1473
1503
  };
1504
+ savedModulesFolderName: string;
1505
+ defaultModulesFolderName: string;
1474
1506
  };
1475
1507
  ui: {
1476
1508
  showHeader: boolean;
@@ -1566,6 +1598,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1566
1598
  senderName: string;
1567
1599
  subject: string;
1568
1600
  };
1601
+ savedModulesFolderName: string;
1602
+ defaultModulesFolderName: string;
1569
1603
  };
1570
1604
  ui: {
1571
1605
  showHeader: boolean;
@@ -1661,6 +1695,8 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"guido-conf
1661
1695
  senderName: string;
1662
1696
  subject: string;
1663
1697
  };
1698
+ savedModulesFolderName: string;
1699
+ defaultModulesFolderName: string;
1664
1700
  };
1665
1701
  ui: {
1666
1702
  showHeader: boolean;
@@ -4,6 +4,7 @@ const n = `ue-notifications-container {
4
4
  bottom: 32px;
5
5
  top: unset;
6
6
  width: unset;
7
+ position: fixed;
7
8
  }
8
9
 
9
10
  ue-notifications-container ue-message + ue-message {
@@ -1,4 +1,4 @@
1
- const o = `.patch-session-container {
1
+ const n = `.patch-session-container {
2
2
  row-gap: 16px;
3
3
  }
4
4
 
@@ -24,7 +24,15 @@ ue-vh-patch.selected .patch-wrapper {
24
24
  background-color: var(--guido-color-primary-100);
25
25
  box-shadow: 0 0 0 1px var(--guido-color-primary-500);
26
26
  }
27
+
28
+ .change-history-panel-wrapper .control-panel-header {
29
+ padding: 16px 0 16px 16px;
30
+ }
31
+
32
+ .change-history-panel-wrapper .header-control-panel-label {
33
+ grid-area: 1 / 1 / 2 / 12;
34
+ }
27
35
  `;
28
36
  export {
29
- o as default
37
+ n as default
30
38
  };
@@ -6,10 +6,6 @@ ue-main-editor-container[panel-position=SETTINGS_BLOCKS] ue-wide-panel {
6
6
  right: calc(100% - calc(var(--ue-spacing-step, 5px) * 3) - 425px);
7
7
  }
8
8
 
9
- ue-main-tabs-panel-component .fixed-panel-header {
10
- display: none;
11
- }
12
-
13
9
  /* Remove with this writing task DT-28355 */
14
10
  ue-description a {
15
11
  display: none;
@@ -64,7 +60,6 @@ ue-control-panel,
64
60
 
65
61
  .control-panel-header {
66
62
  grid-template-columns: repeat(12, 1fr);
67
- padding: 16px 0px 16px 16px;
68
63
  }
69
64
 
70
65
  .control-panel-header > * {
@@ -98,7 +93,9 @@ ue-control-panel,
98
93
  .container.droppable-header-container ue-button:last-child {
99
94
  margin-right: 0;
100
95
  }
101
-
96
+ .container.droppable-header-container {
97
+ margin-top: 13px;
98
+ }
102
99
  .secondary-control-group {
103
100
  gap: 16px;
104
101
  }
@@ -137,6 +134,21 @@ ue-label.accent-dot:after {
137
134
  font-size: 13px;
138
135
  }
139
136
 
137
+ .e2e-container-video-size {
138
+ grid-template-columns: 1fr !important;
139
+ }
140
+
141
+ .e2e-container-video-size .control-shadow-wrapper:not(ue-button) {
142
+ display: flex;
143
+ width: 100%;
144
+ justify-content: flex-end;
145
+ background-color: transparent !important;
146
+ }
147
+
148
+ .e2e-container-video-size .control-shadow-wrapper input {
149
+ background-color: var(--guido-color-gray-0);
150
+ }
151
+
140
152
  .e2e-size,
141
153
  .e2e-timer-size {
142
154
  grid-auto-flow: row;
@@ -23,6 +23,19 @@ const n = `.esd-x,
23
23
  .ins-recommendation-v3-block-v2 .product-attribute-cell ue-node-panel {
24
24
  display: none !important;
25
25
  }
26
+
27
+ /* Apply to the table cell (td) with text-trim-enabled class */
28
+ .text-trim-enabled {
29
+ max-width: 0 !important;
30
+ }
31
+
32
+ .text-trim-enabled p {
33
+ overflow: hidden !important;
34
+ text-overflow: ellipsis !important;
35
+ white-space: nowrap !important;
36
+ margin: 0 !important;
37
+ display: block !important;
38
+ }
26
39
  `;
27
40
  export {
28
41
  n as default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "2.1.0",
3
+ "version": "2.2.0-beta.1696353",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",
@@ -85,7 +85,7 @@
85
85
  },
86
86
  "guido": {
87
87
  "stripo": {
88
- "version": "2.52.0"
88
+ "version": "2.54.0"
89
89
  }
90
90
  }
91
91
  }
@@ -1,79 +0,0 @@
1
- import { defineStore as s } from "pinia";
2
- import { DefaultConfigValues as e } from "../enums/settingsEnums.js";
3
- const n = (t) => t.replace(/Url\}/, "Image}"), r = (t) => t.replace(/Image\}/, "Url}"), i = () => {
4
- const t = e.cartItemsSelectControlValue;
5
- return {
6
- itemsType: e.itemsType,
7
- itemIds: t,
8
- imageLink: n(t),
9
- buttonLink: r(t),
10
- orientation: e.cardOrientationControlValue,
11
- nameTrimming: !0,
12
- hideDiscount: !0,
13
- currencySymbol: "USD",
14
- currencyLocation: "0",
15
- formattedPrice: !0,
16
- singlePrice: !1,
17
- priceOrientation: "vertical",
18
- templateData: {
19
- imageSrc: "",
20
- name: "",
21
- price: "",
22
- originalPrice: "",
23
- quantity: "",
24
- button: ""
25
- }
26
- };
27
- }, m = s("guidoItemsBlock", {
28
- state: () => i(),
29
- actions: {
30
- setItemsType(t) {
31
- this.itemsType = t;
32
- },
33
- setItemIds(t) {
34
- this.itemIds = t, this.imageLink = n(t), this.buttonLink = r(t);
35
- },
36
- setImageLink(t) {
37
- this.imageLink = t;
38
- },
39
- setButtonLink(t) {
40
- this.buttonLink = t;
41
- },
42
- setOrientation(t) {
43
- this.orientation = t;
44
- },
45
- setNameTrimming(t) {
46
- this.nameTrimming = t;
47
- },
48
- setHideDiscount(t) {
49
- this.hideDiscount = t;
50
- },
51
- setCurrencySymbol(t) {
52
- this.currencySymbol = t;
53
- },
54
- setCurrencyLocation(t) {
55
- this.currencyLocation = t;
56
- },
57
- setFormattedPrice(t) {
58
- this.formattedPrice = t;
59
- },
60
- setSinglePrice(t) {
61
- this.singlePrice = t;
62
- },
63
- setPriceOrientation(t) {
64
- this.priceOrientation = t;
65
- },
66
- setTemplateData(t) {
67
- this.templateData = t;
68
- },
69
- updateFromAttributes(t) {
70
- t.itemsType && (this.itemsType = t.itemsType), t.itemIds && this.setItemIds(t.itemIds), t.orientation && (this.orientation = t.orientation);
71
- },
72
- reset() {
73
- Object.assign(this, i());
74
- }
75
- }
76
- });
77
- export {
78
- m as useItemsBlockStore
79
- };
@@ -1,13 +0,0 @@
1
- import { ButtonAlignBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
- class c extends t {
4
- getId() {
5
- return e.BUTTON_ALIGN;
6
- }
7
- getTargetNodes(o) {
8
- return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
- }
10
- }
11
- export {
12
- c as ButtonAlignControl
13
- };
@@ -1,13 +0,0 @@
1
- import { ButtonBorderBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
- class s extends t {
4
- getId() {
5
- return e.BUTTON_BORDER;
6
- }
7
- getTargetNodes(o) {
8
- return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
- }
10
- }
11
- export {
12
- s as ButtonBorderControl
13
- };
@@ -1,13 +0,0 @@
1
- import { ButtonBorderRadiusBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
- class i extends t {
4
- getId() {
5
- return e.BUTTON_BORDER_RADIUS;
6
- }
7
- getTargetNodes(o) {
8
- return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
- }
10
- }
11
- export {
12
- i as ButtonBorderRadiusControl
13
- };
@@ -1,13 +0,0 @@
1
- import { ButtonColorBuiltInControl as t } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { RecommendationControlId as e, RecommendationBlockId as n } from "../../constants.js";
3
- class c extends t {
4
- getId() {
5
- return e.BUTTON_COLOR;
6
- }
7
- getTargetNodes(o) {
8
- return o.closest(".ins-recommendation-product-container").querySelectorAll(`[esd-extension-block-id="${n.BUTTON}"]`);
9
- }
10
- }
11
- export {
12
- c as ButtonColorControl
13
- };