@useinsider/guido 3.15.0 → 3.16.0-beta.0faee0c

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 (81) hide show
  1. package/dist/@types/config/schemas.js +108 -92
  2. package/dist/components/Guido.vue.js +1 -1
  3. package/dist/components/Guido.vue2.js +78 -75
  4. package/dist/composables/useActionsApi.js +30 -22
  5. package/dist/composables/useEmailTemplateApplier.js +25 -23
  6. package/dist/composables/useHtmlValidator.js +108 -106
  7. package/dist/composables/useStripo.js +30 -29
  8. package/dist/composables/useTimerClone.js +21 -19
  9. package/dist/config/i18n/en/labels.json.js +7 -3
  10. package/dist/config/migrator/checkboxMigrator.js +20 -19
  11. package/dist/config/migrator/radioButtonMigrator.js +26 -25
  12. package/dist/config/migrator/recommendation/compositionMapper.js +26 -23
  13. package/dist/config/migrator/recommendation/htmlBuilder.js +156 -155
  14. package/dist/extensions/Blocks/Checkbox/constants/controlIds.js +4 -0
  15. package/dist/extensions/Blocks/Checkbox/constants/selectors.js +6 -0
  16. package/dist/extensions/Blocks/Checkbox/controls/blockBackground/index.js +10 -0
  17. package/dist/extensions/Blocks/Checkbox/extension.js +6 -5
  18. package/dist/extensions/Blocks/Checkbox/settingsPanel.js +15 -14
  19. package/dist/extensions/Blocks/Checkbox/template.js +10 -9
  20. package/dist/extensions/Blocks/Items/block.js +44 -42
  21. package/dist/extensions/Blocks/Items/template.js +86 -86
  22. package/dist/extensions/Blocks/RadioButton/constants/controlIds.js +4 -0
  23. package/dist/extensions/Blocks/RadioButton/constants/selectors.js +6 -0
  24. package/dist/extensions/Blocks/RadioButton/controls/blockBackground/index.js +10 -0
  25. package/dist/extensions/Blocks/RadioButton/extension.js +5 -4
  26. package/dist/extensions/Blocks/RadioButton/settingsPanel.js +12 -11
  27. package/dist/extensions/Blocks/RadioButton/template.js +16 -9
  28. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +18 -15
  29. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +5 -9
  30. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +363 -322
  31. package/dist/extensions/Blocks/Recommendation/controls/main/layoutOrientation.js +8 -8
  32. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +271 -231
  33. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +98 -113
  34. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +21 -0
  35. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +16 -16
  36. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +16 -16
  37. package/dist/extensions/Blocks/Recommendation/templates/utils.js +120 -120
  38. package/dist/extensions/Blocks/Recommendation/utils/captureStyleTemplates.js +55 -54
  39. package/dist/extensions/Blocks/Recommendation/utils/compositionKeys.js +89 -0
  40. package/dist/extensions/Blocks/common-control.js +42 -35
  41. package/dist/extensions/Blocks/controlFactories.js +117 -115
  42. package/dist/guido.css +1 -1
  43. package/dist/library.js +11 -7
  44. package/dist/node_modules/valibot/dist/index.js +230 -216
  45. package/dist/public/trackingIds.js +8 -0
  46. package/dist/src/@types/config/schemas.d.ts +20 -0
  47. package/dist/src/composables/useActionsApi.d.ts +1 -1
  48. package/dist/src/composables/useConfig.d.ts +4 -0
  49. package/dist/src/composables/useHtmlValidator.d.ts +3 -2
  50. package/dist/src/config/migrator/recommendation/types.d.ts +1 -0
  51. package/dist/src/extensions/Blocks/Checkbox/constants/controlIds.d.ts +7 -0
  52. package/dist/src/extensions/Blocks/Checkbox/constants/index.d.ts +10 -0
  53. package/dist/src/extensions/Blocks/Checkbox/constants/selectors.d.ts +16 -0
  54. package/dist/src/extensions/Blocks/Checkbox/controls/blockBackground/index.d.ts +14 -0
  55. package/dist/src/extensions/Blocks/RadioButton/constants/controlIds.d.ts +7 -0
  56. package/dist/src/extensions/Blocks/RadioButton/constants/index.d.ts +10 -0
  57. package/dist/src/extensions/Blocks/RadioButton/constants/selectors.d.ts +16 -0
  58. package/dist/src/extensions/Blocks/RadioButton/controls/blockBackground/index.d.ts +14 -0
  59. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  60. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +6 -0
  61. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +27 -5
  62. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +4 -2
  63. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +5 -0
  64. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +12 -11
  65. package/dist/src/extensions/Blocks/Recommendation/utils/compositionKeys.d.ts +47 -0
  66. package/dist/src/extensions/Blocks/_Boilerplate/constants/controlIds.d.ts +7 -0
  67. package/dist/src/extensions/Blocks/_Boilerplate/constants/index.d.ts +10 -0
  68. package/dist/src/extensions/Blocks/_Boilerplate/constants/selectors.d.ts +16 -0
  69. package/dist/src/extensions/Blocks/_Boilerplate/controls/blockBackground/index.d.ts +14 -0
  70. package/dist/src/extensions/Blocks/common-control.d.ts +3 -1
  71. package/dist/src/library.d.ts +1 -0
  72. package/dist/src/public/trackingIds.d.ts +9 -0
  73. package/dist/src/stores/config.d.ts +36 -0
  74. package/dist/src/stores/editor.d.ts +25 -0
  75. package/dist/src/utils/linkTrackingIds.d.ts +30 -0
  76. package/dist/stores/editor.js +4 -1
  77. package/dist/stores/onboarding.js +11 -7
  78. package/dist/utils/linkTrackingIds.js +56 -0
  79. package/dist/utils/pairProductVariables.js +105 -99
  80. package/dist/utils/templatePreparation.js +72 -61
  81. package/package.json +5 -1
@@ -0,0 +1,89 @@
1
+ import { ATTR_CUSTOM_PREFIX as s, ATTR_PRODUCT_ATTR as i, PRODUCT_ATTRIBUTE_PREFIX as f, ATTR_DATA_ATTRIBUTE_TYPE as l, SELECTOR_ATTRIBUTE_ROW as R } from "../constants/selectors.js";
2
+ function d(t) {
3
+ return !t.startsWith(f);
4
+ }
5
+ function y(t) {
6
+ return t.startsWith(f) ? t.substring(f.length) : t;
7
+ }
8
+ function T(t) {
9
+ return t.startsWith(s) ? t.substring(s.length) : t;
10
+ }
11
+ function A(t) {
12
+ return `${s}${t}`;
13
+ }
14
+ function P(t) {
15
+ return t.type === "defaultAttribute" ? t.attributeName : `${f}${t.attributeName}`;
16
+ }
17
+ function _(t, r) {
18
+ const n = Object.values(r).filter((e) => e.attributeName === t);
19
+ return n.find((e) => e.type === "defaultAttribute") ?? n[0];
20
+ }
21
+ function a(t, r) {
22
+ return t && "getAttribute" in t ? t.getAttribute(r) : null;
23
+ }
24
+ function m(t, r, n = {}) {
25
+ const e = `${s}${t}`, u = r == null ? void 0 : r.querySelector(
26
+ `${R}[${l}="${e}"]`
27
+ ), c = a(u, i) ?? a(u == null ? void 0 : u.querySelector(`[${i}]`), i);
28
+ if (c)
29
+ return c;
30
+ const o = _(t, n);
31
+ return o ? P(o) : t;
32
+ }
33
+ function g(t, r, n = {}) {
34
+ return t.startsWith(f) ? t : m(t, r, n);
35
+ }
36
+ function C(t, r, n = {}) {
37
+ return t.map((e) => {
38
+ if (!e.startsWith(s))
39
+ return e;
40
+ const u = T(e);
41
+ return A(g(u, r, n));
42
+ });
43
+ }
44
+ function E(t, r, n = {}) {
45
+ return t.map((e) => g(e, r, n));
46
+ }
47
+ function S(t) {
48
+ const r = a(t, l);
49
+ if (!(r != null && r.startsWith(s)))
50
+ return r;
51
+ const n = "querySelector" in t ? t.querySelector(`[${i}]`) : void 0, e = a(n, i);
52
+ return e ? A(e) : r;
53
+ }
54
+ function $(t, r, n) {
55
+ const e = a(t, i), u = a(t.querySelector(`[${i}]`), i), c = e ?? u;
56
+ return c === null ? n : c === r;
57
+ }
58
+ function W(t, r) {
59
+ const n = (h) => t.querySelector(
60
+ `${R}[${l}="${h}"]`
61
+ );
62
+ if (!r.startsWith(s))
63
+ return n(r) ?? null;
64
+ const e = T(r), u = n(r);
65
+ if (u && $(u, e, !0))
66
+ return u;
67
+ const c = A(y(e)), o = c === r ? void 0 : n(c);
68
+ return o && $(o, e, !1) ? o : null;
69
+ }
70
+ function q(t, r) {
71
+ const n = T(r), e = A(y(n));
72
+ return e === r ? t : t.replace(
73
+ `${l}="${e}"`,
74
+ `${l}="${r}"`
75
+ );
76
+ }
77
+ export {
78
+ y as bareAttributeName,
79
+ T as compositionKeyToProductAttr,
80
+ P as filterToProductAttrValue,
81
+ W as findAttributeRow,
82
+ _ as findFilterByBareName,
83
+ d as isDefaultProductAttr,
84
+ C as normalizeCompositionKeys,
85
+ E as normalizeCustomAttrValues,
86
+ A as productAttrToCompositionKey,
87
+ S as resolveRowCompositionKey,
88
+ q as rewriteLegacyRowKeyHtml
89
+ };
@@ -47,15 +47,15 @@ class d extends I {
47
47
  const t = this.getBlockInstanceId();
48
48
  if (!t)
49
49
  return !1;
50
- const o = t !== this.lastBlockInstanceId;
51
- return e(), o && (this.lastBlockInstanceId = t), o;
50
+ const E = t !== this.lastBlockInstanceId;
51
+ return e(), E && (this.lastBlockInstanceId = t), E;
52
52
  }
53
- _GuLabel({ text: e, name: t = "", hint: o }) {
53
+ _GuLabel({ text: e, name: t = "", hint: E }) {
54
54
  return `
55
55
  <${n.LABEL}
56
56
  ${$.LABEL.text}="${e}"
57
57
  ${$.LABEL.name}="${t || `${e} Label`}"
58
- ${o ? `${$.LABEL.hint}="${o}"` : ""}>
58
+ ${E ? `${$.LABEL.hint}="${E}"` : ""}>
59
59
  </${n.LABEL}>
60
60
  `;
61
61
  }
@@ -73,7 +73,7 @@ class d extends I {
73
73
  * Use in getTemplate() — the icon is registered in a hidden store so Stripo initializes it.
74
74
  * Pair with _setInfoMessageValue() in onRender() to set the text content.
75
75
  */
76
- _GuOnPageMessage({ name: e, icon: t = "not-found", type: o = "info" }) {
76
+ _GuOnPageMessage({ name: e, icon: t = "not-found", type: E = "info" }) {
77
77
  return `
78
78
  <div data-info-message="${e}" style="display: none; padding: 16px 16px 0;">
79
79
  <div class="icon-store" style="display: none;">
@@ -81,7 +81,7 @@ class d extends I {
81
81
  ${this._GuIcon({ src: t, className: "icon" })}
82
82
  </div>
83
83
  </div>
84
- ${this._GuMessage({ name: e, type: o })}
84
+ ${this._GuMessage({ name: e, type: E })}
85
85
  </div>
86
86
  `;
87
87
  }
@@ -91,7 +91,7 @@ class d extends I {
91
91
  * and combines it with the text in Stripo's alert-message layout.
92
92
  */
93
93
  _setInfoMessageValue(e, t) {
94
- const o = this.getContainer(), E = o.querySelector(`[data-icon-key="${e}"]`), a = E == null ? void 0 : E.querySelector("ue-icon-component"), l = (a == null ? void 0 : a.outerHTML) ?? "";
94
+ const E = this.getContainer(), o = E.querySelector(`[data-icon-key="${e}"]`), a = o == null ? void 0 : o.querySelector("ue-icon-component"), l = (a == null ? void 0 : a.outerHTML) ?? "";
95
95
  this.api.setUIEAttribute(
96
96
  e,
97
97
  "value",
@@ -104,7 +104,7 @@ class d extends I {
104
104
  </div>
105
105
  `
106
106
  );
107
- const T = o.querySelector(`[data-info-message="${e}"]`);
107
+ const T = E.querySelector(`[data-info-message="${e}"]`);
108
108
  T && (T.style.display = "");
109
109
  }
110
110
  _GuToggle(e) {
@@ -121,59 +121,66 @@ class d extends I {
121
121
  ${$.SELECT_ITEM.value}="${t}">
122
122
  </${n.SELECT_ITEM}>`;
123
123
  }
124
- _GuSelect({ name: e, placeholder: t, options: o, className: E = "es-180w" }) {
124
+ _GuSelect({
125
+ name: e,
126
+ placeholder: t,
127
+ options: E,
128
+ className: o = "es-180w",
129
+ searchable: a = !1
130
+ }) {
125
131
  return `
126
132
  <${n.SELECTPICKER}
127
- class="${E}"
133
+ class="${o}"
128
134
  ${$.SELECTPICKER.name}="${e}"
135
+ ${a ? `${$.SELECTPICKER.searchable}="true"` : ""}
129
136
  ${$.SELECTPICKER.placeholder}="${t}">
130
- ${o.map((a) => this._GuSelectItem(a)).join("")}
137
+ ${E.map((l) => this._GuSelectItem(l)).join("")}
131
138
  </${n.SELECTPICKER}>
132
139
  `;
133
140
  }
134
- _GuTextInput({ name: e, placeholder: t, className: o = "", disabled: E = !1 }) {
141
+ _GuTextInput({ name: e, placeholder: t, className: E = "", disabled: o = !1 }) {
135
142
  return `
136
143
  <${n.TEXT}
137
- class=${o}
144
+ class=${E}
138
145
  ${$.TEXT.name}="${e}"
139
146
  placeholder="${t || e}"
140
- ${E ? `${$.TEXT.disabled}="true"` : ""}>
147
+ ${o ? `${$.TEXT.disabled}="true"` : ""}>
141
148
  </${n.TEXT}>
142
149
  `;
143
150
  }
144
- _GuCounter({ name: e, maxValue: t, minValue: o = 1, step: E = 1 }) {
151
+ _GuCounter({ name: e, maxValue: t, minValue: E = 1, step: o = 1 }) {
145
152
  return `
146
153
  <${n.COUNTER}
147
154
  ${$.COUNTER.name}="${e}"
148
- ${$.COUNTER.minValue}="${o}"
155
+ ${$.COUNTER.minValue}="${E}"
149
156
  ${$.COUNTER.maxValue}="${t}"
150
- ${$.COUNTER.step}="${E}">
157
+ ${$.COUNTER.step}="${o}">
151
158
  </${n.COUNTER}>
152
159
  `;
153
160
  }
154
- _GuRadioButtonItem({ text: e, value: t, icon: o }) {
161
+ _GuRadioButtonItem({ text: e, value: t, icon: E }) {
155
162
  return `
156
163
  <${n.RADIO_ITEM}
157
164
  ${$.RADIO_ITEM.value}="${t}"
158
165
  ${e ? `${$.RADIO_ITEM.text}="${e}"` : ""}
159
- ${o ? `${$.RADIO_ITEM.icon}="${o}"` : ""}>
166
+ ${E ? `${$.RADIO_ITEM.icon}="${E}"` : ""}>
160
167
  </${n.RADIO_ITEM}>
161
168
  `;
162
169
  }
163
- _GuRadioButton({ name: e, buttons: t, id: o = "" }) {
170
+ _GuRadioButton({ name: e, buttons: t, id: E = "" }) {
164
171
  return `
165
172
  <${n.RADIO_BUTTONS}
166
- ${o ? `id="${o}"` : ""}
173
+ ${E ? `id="${E}"` : ""}
167
174
  ${$.RADIO_BUTTONS.name}="${e}">
168
- ${t.map((E) => this._GuRadioButtonItem(E)).join("")}
175
+ ${t.map((o) => this._GuRadioButtonItem(o)).join("")}
169
176
  </${n.RADIO_BUTTONS}>
170
177
  `;
171
178
  }
172
- _GuButton({ name: e, label: t, id: o = "" }) {
179
+ _GuButton({ name: e, label: t, id: E = "" }) {
173
180
  return `
174
181
  <${n.BUTTON}
175
182
  ${$.BUTTON.name}="${e}"
176
- ${o ? `id="${o}"` : ""}
183
+ ${E ? `id="${E}"` : ""}
177
184
  ${$.BUTTON.caption}="${t}"}>
178
185
  </${n.BUTTON}>
179
186
  `;
@@ -191,10 +198,10 @@ class d extends I {
191
198
  * @param param0
192
199
  * @returns It returns a button with an icon.
193
200
  */
194
- _GuIconButton({ name: e, icon: t, className: o = "" }) {
201
+ _GuIconButton({ name: e, icon: t, className: E = "" }) {
195
202
  return `
196
203
  <${n.BUTTON}
197
- class="${o}"
204
+ class="${E}"
198
205
  ${$.BUTTON.name}="${e}"
199
206
  ${$.BUTTON.icon}="${t}">
200
207
  </${n.BUTTON}>
@@ -222,19 +229,19 @@ class d extends I {
222
229
  * @returns HTML string for the orderable control
223
230
  */
224
231
  _GuOrderable(e, t) {
225
- let o = "";
232
+ let E = "";
226
233
  t.forEach((a) => {
227
234
  const l = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
228
- o += `
235
+ E += `
229
236
  <${n.ORDERABLE_ITEM} ${l}="${a.key}">
230
237
  ${a.content}
231
238
  </${n.ORDERABLE_ITEM}>
232
239
  `;
233
240
  });
234
- const E = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
241
+ const o = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
235
242
  return `
236
- <${n.ORDERABLE} ${E}="${e}">
237
- ${o}
243
+ <${n.ORDERABLE} ${o}="${e}">
244
+ ${E}
238
245
  </${n.ORDERABLE}>
239
246
  `;
240
247
  }
@@ -275,16 +282,16 @@ class d extends I {
275
282
  `;
276
283
  }
277
284
  _GuRadioButtons(e, t) {
278
- const o = t.map((E) => `
285
+ const E = t.map((o) => `
279
286
  <${n.RADIO_ITEM}
280
- ${$.RADIO_ITEM.text}="${E.text}"
281
- ${$.RADIO_ITEM.value}="${E.value}">
287
+ ${$.RADIO_ITEM.text}="${o.text}"
288
+ ${$.RADIO_ITEM.value}="${o.value}">
282
289
  </${n.RADIO_ITEM}>
283
290
  `).join("");
284
291
  return `
285
292
  <${n.RADIO_BUTTONS}
286
293
  ${$.RADIO_BUTTONS.name}="${e}">
287
- ${o}
294
+ ${E}
288
295
  </${n.RADIO_BUTTONS}>
289
296
  `;
290
297
  }