@useinsider/guido 3.2.0-beta.d5a560f → 3.2.0-beta.dc55d68

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 (102) hide show
  1. package/dist/@types/config/schemas.js +150 -94
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +88 -87
  4. package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +51 -31
  5. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  6. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +23 -22
  7. package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +1 -1
  8. package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +37 -39
  9. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +3 -3
  10. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +30 -41
  11. package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +15 -14
  12. package/dist/composables/useActionsApi.js +4 -4
  13. package/dist/composables/useFullStoryBridge.js +1 -1
  14. package/dist/composables/useRecommendation.js +16 -12
  15. package/dist/composables/useRibbonOffset.js +21 -0
  16. package/dist/composables/useSave.js +1 -1
  17. package/dist/config/compiler/recommendationCompilerRules.js +72 -67
  18. package/dist/config/compiler/unsubscribeCompilerRules.js +40 -37
  19. package/dist/config/compiler/utils/recommendationCompilerUtils.js +33 -30
  20. package/dist/config/migrator/index.js +9 -9
  21. package/dist/config/migrator/recommendation/compositionMapper.js +98 -0
  22. package/dist/config/migrator/recommendation/extractors.js +27 -0
  23. package/dist/config/migrator/recommendation/htmlBuilder.js +496 -0
  24. package/dist/config/migrator/recommendation/parseLegacyConfig.js +33 -0
  25. package/dist/config/migrator/recommendation/settingsMapper.js +78 -0
  26. package/dist/config/migrator/recommendation/themeMapper.js +93 -0
  27. package/dist/config/migrator/recommendationMigrator.js +74 -290
  28. package/dist/enums/extensions/recommendationBlock.js +2 -1
  29. package/dist/enums/onboarding.js +7 -2
  30. package/dist/enums/unsubscribe.js +34 -27
  31. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +38 -38
  32. package/dist/extensions/Blocks/Items/enums/productEnums.js +19 -7
  33. package/dist/extensions/Blocks/Recommendation/block.js +35 -32
  34. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  35. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +5 -5
  36. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +21 -18
  37. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +99 -0
  38. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +6 -6
  39. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +3 -1
  40. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +228 -181
  41. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +27 -57
  42. package/dist/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.js +14 -0
  43. package/dist/extensions/Blocks/Recommendation/services/configService.js +65 -29
  44. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +18 -17
  45. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +48 -42
  46. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +8 -8
  47. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +11 -11
  48. package/dist/extensions/Blocks/Recommendation/templates/utils.js +1 -1
  49. package/dist/extensions/Blocks/Recommendation/utils/filterUtil.js +17 -14
  50. package/dist/extensions/Blocks/Recommendation/utils/preserveTextStyles.js +13 -22
  51. package/dist/extensions/Blocks/Unsubscribe/block.js +11 -11
  52. package/dist/guido.css +1 -1
  53. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +393 -264
  54. package/dist/node_modules/valibot/dist/index.js +450 -235
  55. package/dist/package.json.js +1 -1
  56. package/dist/src/@types/config/defaults.d.ts +5 -1
  57. package/dist/src/@types/config/index.d.ts +3 -3
  58. package/dist/src/@types/config/schemas.d.ts +213 -0
  59. package/dist/src/@types/config/types.d.ts +9 -1
  60. package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
  61. package/dist/src/composables/useActionsApi.d.ts +1 -1
  62. package/dist/src/composables/useConfig.d.ts +56 -0
  63. package/dist/src/composables/useRecommendation.test.d.ts +1 -0
  64. package/dist/src/composables/useRibbonOffset.d.ts +4 -0
  65. package/dist/src/config/migrator/index.d.ts +2 -1
  66. package/dist/src/config/migrator/recommendation/compositionMapper.d.ts +2 -0
  67. package/dist/src/config/migrator/recommendation/compositionMapper.test.d.ts +1 -0
  68. package/dist/src/config/migrator/recommendation/extractors.d.ts +7 -0
  69. package/dist/src/config/migrator/recommendation/extractors.test.d.ts +1 -0
  70. package/dist/src/config/migrator/recommendation/htmlBuilder.d.ts +11 -0
  71. package/dist/src/config/migrator/recommendation/parseLegacyConfig.d.ts +15 -0
  72. package/dist/src/config/migrator/recommendation/parseLegacyConfig.test.d.ts +1 -0
  73. package/dist/src/config/migrator/recommendation/settingsMapper.d.ts +7 -0
  74. package/dist/src/config/migrator/recommendation/settingsMapper.test.d.ts +1 -0
  75. package/dist/src/config/migrator/recommendation/themeMapper.d.ts +5 -0
  76. package/dist/src/config/migrator/recommendation/themeMapper.test.d.ts +1 -0
  77. package/dist/src/config/migrator/recommendation/types.d.ts +205 -0
  78. package/dist/src/config/migrator/recommendationMigrator.d.ts +13 -1
  79. package/dist/src/config/migrator/recommendationMigrator.test.d.ts +1 -0
  80. package/dist/src/enums/onboarding.d.ts +6 -0
  81. package/dist/src/enums/unsubscribe.d.ts +5 -0
  82. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +1 -0
  83. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +3 -0
  84. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.d.ts +35 -0
  85. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.test.d.ts +1 -0
  86. package/dist/src/extensions/Blocks/Recommendation/controls/name/textTrim.d.ts +3 -20
  87. package/dist/src/extensions/Blocks/Recommendation/controls/shared/textTrimCssRules.d.ts +29 -0
  88. package/dist/src/extensions/Blocks/Recommendation/services/configService.d.ts +10 -0
  89. package/dist/src/extensions/Blocks/Recommendation/services/configService.test.d.ts +1 -0
  90. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +1 -1
  91. package/dist/src/extensions/Blocks/Recommendation/utils/preserveTextStyles.d.ts +0 -3
  92. package/dist/src/stores/config.d.ts +504 -0
  93. package/dist/src/stores/onboarding.d.ts +4 -0
  94. package/dist/src/utils/htmlEscape.d.ts +5 -0
  95. package/dist/src/utils/htmlEscape.test.d.ts +1 -0
  96. package/dist/static/styles/components/button.css.js +16 -9
  97. package/dist/static/styles/components/loader.css.js +4 -0
  98. package/dist/static/styles/components/narrow-panel.css.js +52 -0
  99. package/dist/stores/onboarding.js +4 -0
  100. package/dist/utils/htmlEscape.js +13 -0
  101. package/package.json +7 -3
  102. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +0 -251
@@ -1,4 +1,4 @@
1
- const o = `.control-shadow-wrapper:has(.button) {
1
+ const n = `.control-shadow-wrapper:has(.button) {
2
2
  border-radius: 0;
3
3
  box-shadow: none;
4
4
  background-color: transparent;
@@ -99,18 +99,12 @@ ue-check-button.checked:not(.flat-white) input:checked + label .icon-button {
99
99
  color: var(--guido-color-primary-500);
100
100
  }
101
101
 
102
- ue-select.full-width .button {
103
- border: none !important;
104
- background-color: var(--guido-color-neutral-200) !important;
105
- color: var(--guido-color-neutral-800) !important;
106
- }
107
-
108
102
  ue-select.full-width .button .icon-button {
109
103
  color: var(--guido-color-gray-600) !important;
110
104
  }
111
105
 
112
106
  ue-select.full-width .button:hover:not(:disabled,.disabled) {
113
- background-color: var(--guido-color-neutral-100) !important;
107
+ background-color: var(--guido-color-gray-0) !important;
114
108
  }
115
109
 
116
110
  ue-color {
@@ -130,7 +124,20 @@ ue-select-text-input .select-text-input-toggle .button {
130
124
  justify-content: center;
131
125
  background-color: transparent !important;
132
126
  }
127
+
128
+
129
+ .control-shadow-wrapper,
130
+ ue-button:not(.no-shadow,.flat-white),
131
+ ue-toggle:not(.no-shadow,.flat-white),
132
+ :is(ue-popover-toggler,ue-toggle-icon-picker,ue-emoji-toggle),
133
+ .button-group,
134
+ ue-counter:not(.no-shadow),
135
+ :is(ue-select,ue-mergetags,ue-font-family-select):not(.no-shadow),
136
+ ue-check-button:not(.no-shadow,.flat-white) {
137
+ background: none;
138
+ padding: 0;
139
+ }
133
140
  `;
134
141
  export {
135
- o as default
142
+ n as default
136
143
  };
@@ -4,6 +4,10 @@ const n = `ue-loader-component.full-height {
4
4
  z-index: 9;
5
5
  backdrop-filter: blur(2px);
6
6
  }
7
+
8
+ ue-loader-component .service-element.loader {
9
+ box-shadow: var(--guido-color-primary-500) 1px 1px 0 0 !important;
10
+ }
7
11
  `;
8
12
  export {
9
13
  n as default
@@ -28,6 +28,58 @@ ue-stripe-thumb:hover:not(.disabled),
28
28
  border-color: var(--guido-color-primary-500);
29
29
  }
30
30
 
31
+ /* Module search — initial */
32
+ .module-search-container {
33
+ background-color: var(--guido-color-gray-0);
34
+ border: 1px solid var(--guido-color-gray-300);
35
+ border-radius: 4px;
36
+ }
37
+
38
+ .module-search-container .service-element {
39
+ background-color: unset;
40
+ }
41
+
42
+ .module-filter-toggle {
43
+ top: -1px !important;
44
+ right: -1px !important;
45
+ }
46
+
47
+ .module-filter-toggle > .button,
48
+ .module-search-container:hover .module-filter-toggle > .button {
49
+ border: none;
50
+ background: transparent;
51
+ }
52
+
53
+ /* Module search — hover */
54
+ .module-search-container:has(.module-search-chip-input:hover) {
55
+ border-color: var(--guido-color-primary-500);
56
+ }
57
+
58
+ .module-search-container .module-search-chip-input .service-element:hover {
59
+ background-color: var(--guido-color-gray-0);
60
+ border-radius: 4px;
61
+ }
62
+
63
+ .module-search-container .module-filter-toggle:hover > .button {
64
+ background-color: var(--guido-color-gray-1);
65
+ }
66
+
67
+ /* Module search — selected (.on) */
68
+ .module-search-container:has(.module-search-chip-input.on),
69
+ .module-search-container:has(.module-search-chip-input.on):hover {
70
+ border-color: var(--guido-color-primary-500);
71
+ box-shadow: 0 0 0 3px var(--guido-color-primary-200) !important;
72
+ }
73
+
74
+ .module-search-container .module-search-chip-input.on .input-section {
75
+ background-color: unset;
76
+ box-shadow: unset;
77
+ }
78
+
79
+ .module-categories-list .menu-item {
80
+ padding: 8px 20px !important;
81
+ }
82
+
31
83
  .modules-layout-wrapper {
32
84
  padding: 0 16px 16px;
33
85
  grid-row-gap: 16px;
@@ -71,6 +71,10 @@ const t = () => ({
71
71
  previous(n) {
72
72
  this.onboardings[n].cardIndex > 0 && this.onboardings[n].cardIndex--;
73
73
  },
74
+ updateCardPosition(n, i, o) {
75
+ const s = this.onboardings[n].config[i];
76
+ s && (s.top = o.top, s.position = o.position);
77
+ },
74
78
  setConfig(n, i) {
75
79
  this.onboardings[n].config = i ?? [], this.onboardings[n].cardIndex >= this.onboardings[n].config.length && (this.onboardings[n].cardIndex = 0);
76
80
  },
@@ -0,0 +1,13 @@
1
+ const c = {
2
+ "&": "&",
3
+ "<": "&lt;",
4
+ ">": "&gt;",
5
+ '"': "&quot;",
6
+ "'": "&#x27;"
7
+ };
8
+ function n(t) {
9
+ return t.replace(/[&<>"']/g, (e) => c[e]);
10
+ }
11
+ export {
12
+ n as escapeHtml
13
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "3.2.0-beta.d5a560f",
3
+ "version": "3.2.0-beta.dc55d68",
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",
@@ -24,6 +24,8 @@
24
24
  "lint": "NODE_OPTIONS=--max-old-space-size=2048 eslint ./ && bun run type-check",
25
25
  "lint:fix": "NODE_OPTIONS=--max-old-space-size=2048 eslint --fix ./",
26
26
  "type-check": "vue-tsc --noEmit --project tsconfig.config.json && vue-tsc --noEmit --project tsconfig.app.json",
27
+ "test": "vitest run",
28
+ "test:watch": "vitest",
27
29
  "test:visual-update": "npx playwright test --update-snapshots --reporter html",
28
30
  "prepare": "husky",
29
31
  "preinstall": "rm -rf ./node_modules/.vite"
@@ -32,7 +34,7 @@
32
34
  "author": "",
33
35
  "license": "ISC",
34
36
  "dependencies": {
35
- "@stripoinc/ui-editor-extensions": "3.5.0",
37
+ "@stripoinc/ui-editor-extensions": "3.8.0",
36
38
  "@useinsider/design-system-vue": "1.1.0-beta.73ec2fa",
37
39
  "@vueuse/core": "11.3.0",
38
40
  "lodash-es": "4.17.21",
@@ -69,12 +71,14 @@
69
71
  "eslint-plugin-vue": "10.1.0",
70
72
  "eslint-plugin-vue-scoped-css": "2.6.1",
71
73
  "globals": "16.0.0",
74
+ "happy-dom": "^15",
72
75
  "husky": "9.1.7",
73
76
  "msw": "2.10.3",
74
77
  "sass": "1.69.7",
75
78
  "typescript": "5.5.4",
76
79
  "typescript-eslint": "8.26.0",
77
80
  "vite-plugin-dts": "4.5.4",
81
+ "vitest": "^2",
78
82
  "vue-tsc": "2.2.10"
79
83
  },
80
84
  "overrides": {
@@ -86,7 +90,7 @@
86
90
  },
87
91
  "guido": {
88
92
  "stripo": {
89
- "version": "2.54.0"
93
+ "version": "2.62.0"
90
94
  }
91
95
  }
92
96
  }
@@ -1,251 +0,0 @@
1
- import { ATTR_PRODUCT_BUTTON as s, ATTR_PRODUCT_OMNIBUS_DISCOUNT as d, ATTR_PRODUCT_OMNIBUS_PRICE as c, ATTR_PRODUCT_OLD_PRICE as o, ATTR_PRODUCT_PRICE as i, ATTR_PRODUCT_NAME as r, ATTR_PRODUCT_IMAGE as p } from "../../constants/selectors.js";
2
- import { prepareGridProductRows as b } from "./template.js";
3
- const u = `
4
- <td
5
- align="left"
6
- esd-extension-block-id="recommendation-block"
7
- esd-handler-name="esd-extension-RecommendationBlock"
8
- class="recommendation-block-v2 esd-block-recommendation-v3-block esd-extension-block es-p20"
9
- >
10
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
11
- <tr>
12
- <td align="center">
13
- <table
14
- class="container"
15
- width="100%"
16
- cellpadding="0"
17
- cellspacing="0"
18
- border="0">
19
- <tbody>
20
- <tr>
21
- <td>
22
- <table
23
- width="100%"
24
- cellpadding="0"
25
- cellspacing="0"
26
- border="0">
27
- <tbody>
28
- <tr>
29
- {-{-TITLE-}-}
30
- </tr>
31
- </tbody>
32
- </table>
33
- </td>
34
- </tr>
35
- <tr>
36
- <td class="spacer" style="height: 20px;"></td>
37
- </tr>
38
- <tr>
39
- <td>
40
- <table
41
- class="ins-recommendation-product-container"
42
- width="100%"
43
- cellpadding="0"
44
- cellspacing="0"
45
- border="0"
46
- >
47
- {-{-PRODUCT_ROWS-}-}
48
- </table>
49
- </td>
50
- </tr>
51
- </tbody>
52
- </table>
53
- </td>
54
- </tr>
55
- </table>
56
- </td>
57
- `, e = "0 5px", a = "attribute-cell", g = {
58
- [p]: (t) => `
59
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
60
- <table
61
- class="product-card-segment"
62
- width="100%"
63
- height="100%"
64
- cellpadding="0"
65
- cellspacing="0"
66
- border="0">
67
- <tr>
68
- <td
69
- class="esd-block-image product-image"
70
- esd-extension-block-id="recommendation-block-image"
71
- align="center"
72
- style="font-size: 0px;">
73
- <a target="_blank" href="${t.url}">
74
- <img
75
- src="${t.image_url}"
76
- alt="${t.name}"
77
- width="120"
78
- style="display: block; max-width: 100%; height: auto;"
79
- class="adapt-img">
80
- </a>
81
- </td>
82
- </tr>
83
- </table>
84
- </td>
85
- `,
86
- [r]: (t) => `
87
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
88
- <table
89
- class="product-card-segment"
90
- width="100%"
91
- height="100%"
92
- cellpadding="0"
93
- cellspacing="0"
94
- border="0">
95
- <tr>
96
- <td
97
- class="esd-block-text product-name"
98
- esd-extension-block-id="recommendation-block-name"
99
- align="center">
100
- <p
101
- path="1"
102
- contenteditable="false"
103
- style="font-size: 16px; color: #333333; font-weight: 600; text-align: center;">
104
- <strong path="1,0">${t.name}</strong>
105
- </p>
106
- </td>
107
- </tr>
108
- </table>
109
- </td>
110
- `,
111
- [i]: () => `
112
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
113
- <table
114
- class="product-card-segment"
115
- width="100%"
116
- height="100%"
117
- cellpadding="0"
118
- cellspacing="0"
119
- border="0">
120
- <tr>
121
- <td
122
- class="esd-block-text product-price"
123
- esd-extension-block-id="recommendation-block-price"
124
- align="center">
125
- <p
126
- path="1"
127
- contenteditable="false"
128
- style="font-size: 16px; color: #333333; font-weight: bold; text-align: center;">
129
- <strong path="1,0">18,00 TRY</strong>
130
- </p>
131
- </td>
132
- </tr>
133
- </table>
134
- </td>
135
- `,
136
- [o]: () => `
137
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
138
- <table
139
- class="product-card-segment"
140
- width="100%"
141
- height="100%"
142
- cellpadding="0"
143
- cellspacing="0"
144
- border="0">
145
- <tr>
146
- <td
147
- class="esd-block-text product-old-price"
148
- esd-extension-block-id="recommendation-block-old-price"
149
- align="center">
150
- <p
151
- path="1"
152
- contenteditable="false"
153
- style="font-size: 14px; color: #999999; text-decoration: line-through; text-align: center;">
154
- <s path="1,0">20,00 TRY</s>
155
- </p>
156
- </td>
157
- </tr>
158
- </table>
159
- </td>
160
- `,
161
- [c]: () => `
162
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
163
- <table
164
- class="product-card-segment"
165
- width="100%"
166
- height="100%"
167
- cellpadding="0"
168
- cellspacing="0"
169
- border="0">
170
- <tr>
171
- <td
172
- class="esd-block-text product-omnibus-price"
173
- esd-extension-block-id="recommendation-block-omnibus-price"
174
- data-text-before="Lowest 30-day price: "
175
- data-text-after=""
176
- align="center">
177
- <p
178
- path="1"
179
- contenteditable="false"
180
- style="font-size: 14px; color: #666666; text-align: center;"><span
181
- class="omnibus-text-before">Lowest 30-day price: </span><span
182
- class="omnibus-price-value">17,00 TRY</span><span
183
- class="omnibus-text-after"></span></p>
184
- </td>
185
- </tr>
186
- </table>
187
- </td>
188
- `,
189
- [d]: () => `
190
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
191
- <table
192
- class="product-card-segment"
193
- width="100%"
194
- height="100%"
195
- cellpadding="0"
196
- cellspacing="0"
197
- border="0">
198
- <tr>
199
- <td
200
- class="esd-block-text product-omnibus-discount"
201
- esd-extension-block-id="recommendation-block-omnibus-discount"
202
- data-text-before=""
203
- data-text-after=""
204
- align="center">
205
- <p
206
- path="1"
207
- contenteditable="false"
208
- style="font-size: 14px; color: #666666; text-align: center;"><span
209
- class="omnibus-text-before"></span><span
210
- class="omnibus-discount-value">-6%</span><span
211
- class="omnibus-text-after"></span></p>
212
- </td>
213
- </tr>
214
- </table>
215
- </td>
216
- `,
217
- [s]: (t) => `
218
- <td class="${a}" style="padding: ${e}; height: 100%;" valign="top">
219
- <table
220
- class="product-card-segment"
221
- width="100%"
222
- height="100%"
223
- cellpadding="0"
224
- cellspacing="0"
225
- border="0">
226
- <tr>
227
- <td
228
- class="esd-block-button product-button"
229
- esd-extension-block-id="recommendation-block-button"
230
- align="center">
231
- <span class="es-button-border" style="display: block;">
232
- <a
233
- href="${t.url}"
234
- target="_blank"
235
- class="es-button">
236
- {-{-PRODUCT_BUTTON_TEXT-}-}
237
- </a>
238
- </span>
239
- </td>
240
- </tr>
241
- </table>
242
- </td>
243
- `
244
- };
245
- function T(t, l, n) {
246
- return b(t, l, g, n);
247
- }
248
- export {
249
- u as default,
250
- T as prepareProductRows
251
- };