@useinsider/guido 3.22.0-beta.d4e1d48 → 3.22.0-beta.d762f04

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 (31) hide show
  1. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +11 -11
  2. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +9 -9
  3. package/dist/extensions/Blocks/Items/controls/button/link.js +14 -17
  4. package/dist/extensions/Blocks/Items/controls/cardComposition.js +14 -17
  5. package/dist/extensions/Blocks/Items/controls/image/link.js +14 -17
  6. package/dist/extensions/Blocks/Items/controls/name/trimming.js +9 -10
  7. package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +24 -25
  8. package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +12 -13
  9. package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +29 -30
  10. package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +15 -16
  11. package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +25 -26
  12. package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +27 -28
  13. package/dist/extensions/Blocks/Items/controls/settingsControl.js +75 -80
  14. package/dist/extensions/Blocks/Recommendation/controls/cardBackground/index.js +3 -3
  15. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +7 -7
  16. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +13 -13
  17. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +121 -116
  18. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  19. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +8 -8
  20. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +15 -15
  21. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +12 -12
  22. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +10 -10
  23. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +1 -1
  24. package/dist/extensions/Blocks/common-control.js +62 -55
  25. package/dist/guido.css +1 -1
  26. package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -1
  27. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +3 -2
  28. package/dist/src/extensions/Blocks/common-control.d.ts +2 -0
  29. package/dist/src/stores/unsubscribe.d.ts +0 -10
  30. package/dist/stores/unsubscribe.js +29 -33
  31. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
1
  import { ModificationDescription as l } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
- import { CommonControl as u } from "../../../common-control.js";
2
+ import { CommonControl as d } from "../../../common-control.js";
3
3
  import { RecommendationBlockId as a } from "../../constants/blockIds.js";
4
- import { RecommendationControlId as d } from "../../constants/controlIds.js";
4
+ import { RecommendationControlId as u } from "../../constants/controlIds.js";
5
5
  import { BLOCK_ROOT_SELECTOR as m } from "../../constants/selectors.js";
6
6
  import { CSS_CLASS_TEXT_TRIM as r, ensureTextTrimCssRulesExist as T } from "../shared/textTrimCssRules.js";
7
7
  const s = {
8
8
  TEXT_TRIM_ENABLED: "textTrimEnabled"
9
9
  };
10
- class N extends u {
10
+ class N extends d {
11
11
  getId() {
12
- return d.NAME_TEXT_TRIM;
12
+ return u.NAME_TEXT_TRIM;
13
13
  }
14
14
  getTemplate() {
15
15
  return `
@@ -23,7 +23,7 @@ class N extends u {
23
23
  `;
24
24
  }
25
25
  onRender() {
26
- this._setFormValues(), this._listenToFormUpdates();
26
+ this.forgetLastPanelNode(), this._listenToFormUpdates();
27
27
  }
28
28
  onTemplateNodeUpdated(e) {
29
29
  super.onTemplateNodeUpdated(e), this._setFormValues();
@@ -4,8 +4,8 @@ import { CommonControl as l } from "../../../common-control.js";
4
4
  import { RecommendationBlockId as d } from "../../constants/blockIds.js";
5
5
  import { RecommendationControlId as T } from "../../constants/controlIds.js";
6
6
  import { BLOCK_ROOT_SELECTOR as f } from "../../constants/selectors.js";
7
- const i = "data-text-after", u = "", p = ".omnibus-text-after";
8
- class g extends l {
7
+ const s = "data-text-after", u = "", p = ".omnibus-text-after";
8
+ class N extends l {
9
9
  getId() {
10
10
  return T.OMNIBUS_DISCOUNT_TEXT_AFTER;
11
11
  }
@@ -24,7 +24,7 @@ class g extends l {
24
24
  `;
25
25
  }
26
26
  onRender() {
27
- this._setFormValues(), this._listenToFormUpdates();
27
+ this.forgetLastPanelNode(), this._listenToFormUpdates();
28
28
  }
29
29
  onTemplateNodeUpdated(t) {
30
30
  super.onTemplateNodeUpdated(t), this._setFormValues();
@@ -38,7 +38,7 @@ class g extends l {
38
38
  _getCurrentText() {
39
39
  if (!this.currentNode || !("getAttribute" in this.currentNode))
40
40
  return u;
41
- const t = this.currentNode.getAttribute(i);
41
+ const t = this.currentNode.getAttribute(s);
42
42
  return t === null ? u : t;
43
43
  }
44
44
  _onTextChange(t) {
@@ -53,9 +53,9 @@ class g extends l {
53
53
  if (!n.length)
54
54
  return;
55
55
  const o = this.api.getDocumentModifier();
56
- n.forEach((s) => {
57
- o.modifyHtml(s).setAttribute(i, t);
58
- const r = s.querySelector(p);
56
+ n.forEach((i) => {
57
+ o.modifyHtml(i).setAttribute(s, t);
58
+ const r = i.querySelector(p);
59
59
  if (r) {
60
60
  const a = m(r, t);
61
61
  o.modifyHtml(r).setInnerHtml(a);
@@ -69,5 +69,5 @@ class g extends l {
69
69
  }
70
70
  }
71
71
  export {
72
- g as OmnibusDiscountTextAfterControl
72
+ N as OmnibusDiscountTextAfterControl
73
73
  };
@@ -1,13 +1,13 @@
1
- import { preserveTextStyles as a } from "../../../../../utils/preserveTextStyles.js";
1
+ import { preserveTextStyles as m } from "../../../../../utils/preserveTextStyles.js";
2
2
  import { ModificationDescription as c } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
3
  import { CommonControl as l } from "../../../common-control.js";
4
4
  import { RecommendationBlockId as d } from "../../constants/blockIds.js";
5
- import { RecommendationControlId as T } from "../../constants/controlIds.js";
6
- import { BLOCK_ROOT_SELECTOR as f } from "../../constants/selectors.js";
7
- const i = "data-text-before", u = "", p = ".omnibus-text-before";
8
- class g extends l {
5
+ import { RecommendationControlId as f } from "../../constants/controlIds.js";
6
+ import { BLOCK_ROOT_SELECTOR as T } from "../../constants/selectors.js";
7
+ const s = "data-text-before", u = "", p = ".omnibus-text-before";
8
+ class B extends l {
9
9
  getId() {
10
- return T.OMNIBUS_DISCOUNT_TEXT_BEFORE;
10
+ return f.OMNIBUS_DISCOUNT_TEXT_BEFORE;
11
11
  }
12
12
  getTemplate() {
13
13
  return `
@@ -24,7 +24,7 @@ class g extends l {
24
24
  `;
25
25
  }
26
26
  onRender() {
27
- this._setFormValues(), this._listenToFormUpdates();
27
+ this.forgetLastPanelNode(), this._listenToFormUpdates();
28
28
  }
29
29
  onTemplateNodeUpdated(t) {
30
30
  super.onTemplateNodeUpdated(t), this._setFormValues();
@@ -38,13 +38,13 @@ class g extends l {
38
38
  _getCurrentText() {
39
39
  if (!this.currentNode || !("getAttribute" in this.currentNode))
40
40
  return u;
41
- const t = this.currentNode.getAttribute(i);
41
+ const t = this.currentNode.getAttribute(s);
42
42
  return t === null ? u : t;
43
43
  }
44
44
  _onTextChange(t) {
45
45
  if (!this.currentNode || !("closest" in this.currentNode))
46
46
  return;
47
- const e = this.currentNode.closest(f);
47
+ const e = this.currentNode.closest(T);
48
48
  if (!e || !("querySelectorAll" in e))
49
49
  return;
50
50
  const n = Array.from(
@@ -53,12 +53,12 @@ class g extends l {
53
53
  if (!n.length)
54
54
  return;
55
55
  const o = this.api.getDocumentModifier();
56
- n.forEach((s) => {
57
- o.modifyHtml(s).setAttribute(i, t);
58
- const r = s.querySelector(p);
56
+ n.forEach((i) => {
57
+ o.modifyHtml(i).setAttribute(s, t);
58
+ const r = i.querySelector(p);
59
59
  if (r) {
60
- const m = a(r, t);
61
- o.modifyHtml(r).setInnerHtml(m);
60
+ const a = m(r, t);
61
+ o.modifyHtml(r).setInnerHtml(a);
62
62
  }
63
63
  }), o.apply(new c("Update omnibus discount text before"));
64
64
  }
@@ -69,5 +69,5 @@ class g extends l {
69
69
  }
70
70
  }
71
71
  export {
72
- g as OmnibusDiscountTextBeforeControl
72
+ B as OmnibusDiscountTextBeforeControl
73
73
  };
@@ -1,11 +1,11 @@
1
- import { preserveTextStyles as u } from "../../../../../utils/preserveTextStyles.js";
2
- import { ModificationDescription as c } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
- import { CommonControl as l } from "../../../common-control.js";
1
+ import { preserveTextStyles as l } from "../../../../../utils/preserveTextStyles.js";
2
+ import { ModificationDescription as m } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
+ import { CommonControl as u } from "../../../common-control.js";
4
4
  import { RecommendationBlockId as d } from "../../constants/blockIds.js";
5
5
  import { RecommendationControlId as T } from "../../constants/controlIds.js";
6
- import { BLOCK_ROOT_SELECTOR as p } from "../../constants/selectors.js";
7
- const s = "data-text-after", a = "", f = ".omnibus-text-after";
8
- class g extends l {
6
+ import { BLOCK_ROOT_SELECTOR as f } from "../../constants/selectors.js";
7
+ const s = "data-text-after", a = "", p = ".omnibus-text-after";
8
+ class g extends u {
9
9
  getId() {
10
10
  return T.OMNIBUS_PRICE_TEXT_AFTER;
11
11
  }
@@ -24,7 +24,7 @@ class g extends l {
24
24
  `;
25
25
  }
26
26
  onRender() {
27
- this._setFormValues(), this._listenToFormUpdates();
27
+ this.forgetLastPanelNode(), this._listenToFormUpdates();
28
28
  }
29
29
  onTemplateNodeUpdated(t) {
30
30
  super.onTemplateNodeUpdated(t), this._setFormValues();
@@ -44,7 +44,7 @@ class g extends l {
44
44
  _onTextChange(t) {
45
45
  if (!this.currentNode || !("closest" in this.currentNode))
46
46
  return;
47
- const e = this.currentNode.closest(p);
47
+ const e = this.currentNode.closest(f);
48
48
  if (!e || !("querySelectorAll" in e))
49
49
  return;
50
50
  const n = Array.from(
@@ -55,12 +55,12 @@ class g extends l {
55
55
  const r = this.api.getDocumentModifier();
56
56
  n.forEach((i) => {
57
57
  r.modifyHtml(i).setAttribute(s, t);
58
- const o = i.querySelector(f);
58
+ const o = i.querySelector(p);
59
59
  if (o) {
60
- const m = u(o, t);
61
- r.modifyHtml(o).setInnerHtml(m);
60
+ const c = l(o, t);
61
+ r.modifyHtml(o).setInnerHtml(c);
62
62
  }
63
- }), r.apply(new c("Update omnibus price text after"));
63
+ }), r.apply(new m("Update omnibus price text after"));
64
64
  }
65
65
  _listenToFormUpdates() {
66
66
  this.api.onValueChanged("omnibusPriceTextAfter", (t) => {
@@ -1,10 +1,10 @@
1
- import { preserveTextStyles as u } from "../../../../../utils/preserveTextStyles.js";
2
- import { ModificationDescription as c } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ import { preserveTextStyles as m } from "../../../../../utils/preserveTextStyles.js";
2
+ import { ModificationDescription as u } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
3
3
  import { CommonControl as l } from "../../../common-control.js";
4
4
  import { RecommendationBlockId as d } from "../../constants/blockIds.js";
5
5
  import { RecommendationControlId as p } from "../../constants/controlIds.js";
6
- import { BLOCK_ROOT_SELECTOR as T } from "../../constants/selectors.js";
7
- const s = "data-text-before", a = "", f = ".omnibus-text-before";
6
+ import { BLOCK_ROOT_SELECTOR as f } from "../../constants/selectors.js";
7
+ const s = "data-text-before", a = "", T = ".omnibus-text-before";
8
8
  class g extends l {
9
9
  getId() {
10
10
  return p.OMNIBUS_PRICE_TEXT_BEFORE;
@@ -24,7 +24,7 @@ class g extends l {
24
24
  `;
25
25
  }
26
26
  onRender() {
27
- this._setFormValues(), this._listenToFormUpdates();
27
+ this.forgetLastPanelNode(), this._listenToFormUpdates();
28
28
  }
29
29
  onTemplateNodeUpdated(e) {
30
30
  super.onTemplateNodeUpdated(e), this._setFormValues();
@@ -44,7 +44,7 @@ class g extends l {
44
44
  _onTextChange(e) {
45
45
  if (!this.currentNode || !("closest" in this.currentNode))
46
46
  return;
47
- const t = this.currentNode.closest(T);
47
+ const t = this.currentNode.closest(f);
48
48
  if (!t || !("querySelectorAll" in t))
49
49
  return;
50
50
  const n = Array.from(
@@ -55,12 +55,12 @@ class g extends l {
55
55
  const o = this.api.getDocumentModifier();
56
56
  n.forEach((i) => {
57
57
  o.modifyHtml(i).setAttribute(s, e);
58
- const r = i.querySelector(f);
58
+ const r = i.querySelector(T);
59
59
  if (r) {
60
- const m = u(r, e);
61
- o.modifyHtml(r).setInnerHtml(m);
60
+ const c = m(r, e);
61
+ o.modifyHtml(r).setInnerHtml(c);
62
62
  }
63
- }), o.apply(new c("Update omnibus price text before"));
63
+ }), o.apply(new u("Update omnibus price text before"));
64
64
  }
65
65
  _listenToFormUpdates() {
66
66
  this.api.onValueChanged("omnibusPriceTextBefore", (e) => {
@@ -84,7 +84,7 @@ class j extends E {
84
84
  `;
85
85
  }
86
86
  onRender() {
87
- this._setFormValues(), this._updateSpacingVisibility(), this._listenToFormUpdates(), this._subscribeToOrientationChanges();
87
+ this.forgetLastPanelNode(), this._listenToFormUpdates(), this._subscribeToOrientationChanges();
88
88
  }
89
89
  onTemplateNodeUpdated(t) {
90
90
  super.onTemplateNodeUpdated(t), this._setFormValues(), this._updateSpacingVisibility();
@@ -1,12 +1,14 @@
1
- var c = Object.defineProperty;
2
- var i = (l, a, e) => a in l ? c(l, a, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[a] = e;
3
- var T = (l, a, e) => i(l, typeof a != "symbol" ? a + "" : a, e);
1
+ var u = Object.defineProperty;
2
+ var c = (l, E, e) => E in l ? u(l, E, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[E] = e;
3
+ var i = (l, E, e) => c(l, typeof E != "symbol" ? E + "" : E, e);
4
4
  import { Control as I, UIElementType as n, UEAttr as $ } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
5
5
  class _ extends I {
6
6
  constructor() {
7
7
  super(...arguments);
8
- T(this, "currentNode");
9
- T(this, "lastBlockInstanceId", null);
8
+ i(this, "currentNode");
9
+ i(this, "lastBlockInstanceId", null);
10
+ // Set until the control handles the node Stripo hands a freshly rendered panel.
11
+ i(this, "isAwaitingPanelNode", !1);
10
12
  }
11
13
  getContainer() {
12
14
  var e;
@@ -18,6 +20,11 @@ class _ extends I {
18
20
  onDestroy() {
19
21
  this.lastBlockInstanceId = null;
20
22
  }
23
+ // Stripo renders a panel before it hands that panel its node, so a node still held is the last
24
+ // panel's and may be disposed. Controls Stripo renders call this first in onRender.
25
+ forgetLastPanelNode() {
26
+ this.currentNode = void 0, this.isAwaitingPanelNode = !0;
27
+ }
21
28
  /**
22
29
  * Gets the Items block container element from the current node.
23
30
  * @returns The container element or null if not found
@@ -44,18 +51,18 @@ class _ extends I {
44
51
  * @returns true if block instance changed, false otherwise
45
52
  */
46
53
  handleBlockInstanceChange(e) {
47
- const t = this.getBlockInstanceId();
48
- if (!t)
49
- return !1;
50
- const E = t !== this.lastBlockInstanceId;
51
- return e(), E && (this.lastBlockInstanceId = t), E;
54
+ const t = this.getBlockInstanceId(), o = this.isAwaitingPanelNode;
55
+ if (this.isAwaitingPanelNode = !1, !t)
56
+ return o && e(), !1;
57
+ const a = t !== this.lastBlockInstanceId;
58
+ return e(), a && (this.lastBlockInstanceId = t), a;
52
59
  }
53
- _GuLabel({ text: e, name: t = "", hint: E }) {
60
+ _GuLabel({ text: e, name: t = "", hint: o }) {
54
61
  return `
55
62
  <${n.LABEL}
56
63
  ${$.LABEL.text}="${e}"
57
64
  ${$.LABEL.name}="${t || `${e} Label`}"
58
- ${E ? `${$.LABEL.hint}="${E}"` : ""}>
65
+ ${o ? `${$.LABEL.hint}="${o}"` : ""}>
59
66
  </${n.LABEL}>
60
67
  `;
61
68
  }
@@ -73,7 +80,7 @@ class _ extends I {
73
80
  * Use in getTemplate() — the icon is registered in a hidden store so Stripo initializes it.
74
81
  * Pair with _setInfoMessageValue() in onRender() to set the text content.
75
82
  */
76
- _GuOnPageMessage({ name: e, icon: t = "not-found", type: E = "info" }) {
83
+ _GuOnPageMessage({ name: e, icon: t = "not-found", type: o = "info" }) {
77
84
  return `
78
85
  <div data-info-message="${e}" style="display: none; padding: 16px 16px 0;">
79
86
  <div class="icon-store" style="display: none;">
@@ -81,7 +88,7 @@ class _ extends I {
81
88
  ${this._GuIcon({ src: t, className: "icon" })}
82
89
  </div>
83
90
  </div>
84
- ${this._GuMessage({ name: e, type: E })}
91
+ ${this._GuMessage({ name: e, type: o })}
85
92
  </div>
86
93
  `;
87
94
  }
@@ -91,21 +98,21 @@ class _ extends I {
91
98
  * and combines it with the text in Stripo's alert-message layout.
92
99
  */
93
100
  _setInfoMessageValue(e, t) {
94
- const E = this.getContainer(), o = E.querySelector(`[data-icon-key="${e}"]`), r = o == null ? void 0 : o.querySelector("ue-icon-component"), s = (r == null ? void 0 : r.outerHTML) ?? "";
101
+ const o = this.getContainer(), a = o.querySelector(`[data-icon-key="${e}"]`), s = a == null ? void 0 : a.querySelector("ue-icon-component"), r = (s == null ? void 0 : s.outerHTML) ?? "";
95
102
  this.api.setUIEAttribute(
96
103
  e,
97
104
  "value",
98
105
  `
99
106
  <div class="service-element alert-message-main" style="align-items: start;">
100
- ${s}
107
+ ${r}
101
108
  <div class="service-element alert-message-text">
102
109
  ${t}
103
110
  </div>
104
111
  </div>
105
112
  `
106
113
  );
107
- const u = E.querySelector(`[data-info-message="${e}"]`);
108
- u && (u.style.display = "");
114
+ const T = o.querySelector(`[data-info-message="${e}"]`);
115
+ T && (T.style.display = "");
109
116
  }
110
117
  _GuToggle(e) {
111
118
  return `
@@ -124,66 +131,66 @@ class _ extends I {
124
131
  _GuSelect({
125
132
  name: e,
126
133
  placeholder: t,
127
- options: E,
128
- className: o = "es-180w",
129
- searchable: r = !1
134
+ options: o,
135
+ className: a = "es-180w",
136
+ searchable: s = !1
130
137
  }) {
131
138
  return `
132
139
  <${n.SELECTPICKER}
133
- class="${o}"
140
+ class="${a}"
134
141
  ${$.SELECTPICKER.name}="${e}"
135
- ${r ? `${$.SELECTPICKER.searchable}="true"` : ""}
142
+ ${s ? `${$.SELECTPICKER.searchable}="true"` : ""}
136
143
  ${$.SELECTPICKER.placeholder}="${t}">
137
- ${E.map((s) => this._GuSelectItem(s)).join("")}
144
+ ${o.map((r) => this._GuSelectItem(r)).join("")}
138
145
  </${n.SELECTPICKER}>
139
146
  `;
140
147
  }
141
- _GuTextInput({ name: e, placeholder: t, className: E = "", disabled: o = !1 }) {
148
+ _GuTextInput({ name: e, placeholder: t, className: o = "", disabled: a = !1 }) {
142
149
  return `
143
150
  <${n.TEXT}
144
- class=${E}
151
+ class=${o}
145
152
  ${$.TEXT.name}="${e}"
146
153
  placeholder="${t || e}"
147
- ${o ? `${$.TEXT.disabled}="true"` : ""}>
154
+ ${a ? `${$.TEXT.disabled}="true"` : ""}>
148
155
  </${n.TEXT}>
149
156
  `;
150
157
  }
151
- _GuCounter({ name: e, maxValue: t, minValue: E = 1, step: o = 1 }) {
158
+ _GuCounter({ name: e, maxValue: t, minValue: o = 1, step: a = 1 }) {
152
159
  return `
153
160
  <${n.COUNTER}
154
161
  ${$.COUNTER.name}="${e}"
155
- ${$.COUNTER.minValue}="${E}"
162
+ ${$.COUNTER.minValue}="${o}"
156
163
  ${$.COUNTER.maxValue}="${t}"
157
- ${$.COUNTER.step}="${o}">
164
+ ${$.COUNTER.step}="${a}">
158
165
  </${n.COUNTER}>
159
166
  `;
160
167
  }
161
- _GuRadioButtonItem({ text: e, value: t, icon: E }) {
168
+ _GuRadioButtonItem({ text: e, value: t, icon: o }) {
162
169
  return `
163
170
  <${n.RADIO_ITEM}
164
171
  ${$.RADIO_ITEM.value}="${t}"
165
172
  ${e ? `${$.RADIO_ITEM.text}="${e}"` : ""}
166
- ${E ? `${$.RADIO_ITEM.icon}="${E}"` : ""}>
173
+ ${o ? `${$.RADIO_ITEM.icon}="${o}"` : ""}>
167
174
  </${n.RADIO_ITEM}>
168
175
  `;
169
176
  }
170
- _GuRadioButton({ name: e, buttons: t, id: E = "" }) {
177
+ _GuRadioButton({ name: e, buttons: t, id: o = "" }) {
171
178
  return `
172
179
  <${n.RADIO_BUTTONS}
173
- ${E ? `id="${E}"` : ""}
180
+ ${o ? `id="${o}"` : ""}
174
181
  ${$.RADIO_BUTTONS.name}="${e}">
175
- ${t.map((o) => this._GuRadioButtonItem(o)).join("")}
182
+ ${t.map((a) => this._GuRadioButtonItem(a)).join("")}
176
183
  </${n.RADIO_BUTTONS}>
177
184
  `;
178
185
  }
179
- _GuButton({ name: e, label: t, id: E = "", className: o = "", icon: r = "", disabled: s = !1 }) {
186
+ _GuButton({ name: e, label: t, id: o = "", className: a = "", icon: s = "", disabled: r = !1 }) {
180
187
  return `
181
188
  <${n.BUTTON}
182
189
  ${$.BUTTON.name}="${e}"
183
- ${E ? `id="${E}"` : ""}
184
- ${o ? `class="${o}"` : ""}
185
- ${r ? `${$.BUTTON.icon}="${r}"` : ""}
186
- ${s ? `${$.BUTTON.disabled}="true"` : ""}
190
+ ${o ? `id="${o}"` : ""}
191
+ ${a ? `class="${a}"` : ""}
192
+ ${s ? `${$.BUTTON.icon}="${s}"` : ""}
193
+ ${r ? `${$.BUTTON.disabled}="true"` : ""}
187
194
  ${$.BUTTON.caption}="${t}">
188
195
  </${n.BUTTON}>
189
196
  `;
@@ -201,10 +208,10 @@ class _ extends I {
201
208
  * @param param0
202
209
  * @returns It returns a button with an icon.
203
210
  */
204
- _GuIconButton({ name: e, icon: t, className: E = "" }) {
211
+ _GuIconButton({ name: e, icon: t, className: o = "" }) {
205
212
  return `
206
213
  <${n.BUTTON}
207
- class="${E}"
214
+ class="${o}"
208
215
  ${$.BUTTON.name}="${e}"
209
216
  ${$.BUTTON.icon}="${t}">
210
217
  </${n.BUTTON}>
@@ -232,19 +239,19 @@ class _ extends I {
232
239
  * @returns HTML string for the orderable control
233
240
  */
234
241
  _GuOrderable(e, t) {
235
- let E = "";
236
- t.forEach((r) => {
237
- const s = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
238
- E += `
239
- <${n.ORDERABLE_ITEM} ${s}="${r.key}">
240
- ${r.content}
242
+ let o = "";
243
+ t.forEach((s) => {
244
+ const r = $.ORDERABLE_ITEM && "name" in $.ORDERABLE_ITEM ? $.ORDERABLE_ITEM.name : "name";
245
+ o += `
246
+ <${n.ORDERABLE_ITEM} ${r}="${s.key}">
247
+ ${s.content}
241
248
  </${n.ORDERABLE_ITEM}>
242
249
  `;
243
250
  });
244
- const o = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
251
+ const a = $.ORDERABLE && "name" in $.ORDERABLE ? $.ORDERABLE.name : "name";
245
252
  return `
246
- <${n.ORDERABLE} ${o}="${e}">
247
- ${E}
253
+ <${n.ORDERABLE} ${a}="${e}">
254
+ ${o}
248
255
  </${n.ORDERABLE}>
249
256
  `;
250
257
  }
@@ -285,16 +292,16 @@ class _ extends I {
285
292
  `;
286
293
  }
287
294
  _GuRadioButtons(e, t) {
288
- const E = t.map((o) => `
295
+ const o = t.map((a) => `
289
296
  <${n.RADIO_ITEM}
290
- ${$.RADIO_ITEM.text}="${o.text}"
291
- ${$.RADIO_ITEM.value}="${o.value}">
297
+ ${$.RADIO_ITEM.text}="${a.text}"
298
+ ${$.RADIO_ITEM.value}="${a.value}">
292
299
  </${n.RADIO_ITEM}>
293
300
  `).join("");
294
301
  return `
295
302
  <${n.RADIO_BUTTONS}
296
303
  ${$.RADIO_BUTTONS.name}="${e}">
297
- ${E}
304
+ ${o}
298
305
  </${n.RADIO_BUTTONS}>
299
306
  `;
300
307
  }
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";.auth-error-modal[data-v-b4d7ae51]{position:relative;z-index:145}.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-b8f24f34] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-87033101]{position:relative;display:inline-block}.new-tag[data-v-87033101]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-87033101] .guido__view-option-selection-desktop svg,[data-v-87033101] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-87033101] .in-segments-wrapper__button_selected,[data-v-87033101] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-87033101] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-6ebabfe4]{position:relative;display:inline-block}.new-tag[data-v-6ebabfe4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-6ebabfe4] .guido__verion-history-view-option-selection-desktop svg,[data-v-6ebabfe4] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-6ebabfe4] .in-segments-wrapper__button_selected,[data-v-6ebabfe4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-6ebabfe4] .in-tooltip-wrapper-v2__icon{cursor:pointer}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-baf7a5dd]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.validation-error-list[data-v-e48cebe9]{gap:16px}.validation-error-row[data-v-e48cebe9]{gap:8px;padding:24px;border:1px solid #E1E1E1;border-radius:8px}.validation-error-row__icon[data-v-e48cebe9]{flex-shrink:0;font-size:24px;line-height:0}.validation-error-row__text[data-v-e48cebe9]{font-size:13px;line-height:16px;color:#292929;word-break:break-word}.guido-editor__wrapper[data-v-c5146fc5]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-c5146fc5]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-c5146fc5]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-eaf8e461]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-eaf8e461]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-eaf8e461]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-eaf8e461]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-eaf8e461]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-cf946232]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-cf946232]{min-height:504px}.iframe-wrapper[data-v-f255b2bb]{width:258px}.iframe-scaled[data-v-f255b2bb]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-19d8cb42] .vueperslides__bullets,[data-v-ec2027ff] .vueperslides__bullets,[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd]{width:100%;max-width:none}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-skeleton{width:100%!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-dropdown-box__container{width:413px}.assign-strategy-drawer .spaced-dot-sep{background-image:linear-gradient(90deg,#91949f 20%,#fff0 0);background-position:center bottom;background-repeat:repeat-x;background-size:5px 1px}.assign-strategy-drawer .spaced-dot-sep--top{background-position:center top}.assign-strategy-drawer .spaced-dot-sep--fc-n:first-child{background:none}.legacy-strategy-updated-modal[data-v-da2225a1]{position:relative;z-index:145}
1
+ @charset "UTF-8";.auth-error-modal[data-v-b4d7ae51]{position:relative;z-index:145}.gap-16[data-v-5553d071],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-b8f24f34] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-2cb418af] .in-progress-wrapper__progress p span:last-child{display:none!important}[data-v-2cb418af] .in-progress-description-status{display:none!important}.view-options-wrapper[data-v-87033101]{position:relative;display:inline-block}.new-tag[data-v-87033101]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-87033101] .guido__view-option-selection-desktop svg,[data-v-87033101] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-87033101] .in-segments-wrapper__button_selected,[data-v-87033101] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-87033101] .in-tooltip-wrapper-v2__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-fad98586]{gap:8px}.version-history__toolbar[data-v-fad98586]{gap:4px}.view-options-wrapper[data-v-6ebabfe4]{position:relative;display:inline-block}.new-tag[data-v-6ebabfe4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-6ebabfe4] .guido__verion-history-view-option-selection-desktop svg,[data-v-6ebabfe4] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-6ebabfe4] .in-segments-wrapper__button_selected,[data-v-6ebabfe4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-6ebabfe4] .in-tooltip-wrapper-v2__icon{cursor:pointer}.auto-save-toggle[data-v-2c964af4]{position:relative}.auto-save-toggle__info-box[data-v-2c964af4]{position:absolute;top:100%;left:0;z-index:10;width:280px}.editor-actions[data-v-baf7a5dd]{gap:4px}.header-wrapper[data-v-d11dd577]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.validation-error-list[data-v-e48cebe9]{gap:16px}.validation-error-row[data-v-e48cebe9]{gap:8px;padding:24px;border:1px solid #E1E1E1;border-radius:8px}.validation-error-row__icon[data-v-e48cebe9]{flex-shrink:0;font-size:24px;line-height:0}.validation-error-row__text[data-v-e48cebe9]{font-size:13px;line-height:16px;color:#292929;word-break:break-word}.guido-editor__wrapper[data-v-c5146fc5]{--ribbon-offset: 0px;position:relative;width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__container[data-v-c5146fc5]{width:100%;height:calc(100vh - 128px - var(--ribbon-offset))}.guido-editor__no-header[data-v-c5146fc5]{height:calc(100vh - 75px - var(--ribbon-offset))}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-91a26acd]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-91a26acd]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-91a26acd]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-91a26acd]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-91a26acd]{object-fit:cover;transform:scale(1)}[data-v-b9a93c6e] .guido__verion-history-view-option-selection-desktop svg,[data-v-b9a93c6e] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-b9a93c6e] .in-segments-wrapper__button_selected,[data-v-b9a93c6e] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-cf946232]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-cf946232]{min-height:504px}.iframe-wrapper[data-v-f255b2bb]{width:258px}.iframe-scaled[data-v-f255b2bb]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-6bcaca8a] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-f16f20f8] .vueperslides__bullets{pointer-events:none!important}[data-v-f16f20f8] .vueperslides__parallax-wrapper{padding-bottom:110px!important}[data-v-bb3cca55] .vueperslides__bullets{pointer-events:none!important}[data-v-bb3cca55] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-19d8cb42] .vueperslides__bullets,[data-v-ec2027ff] .vueperslides__bullets,[data-v-b09e80c4] .vueperslides__bullets{pointer-events:none!important}[data-v-b09e80c4] .vueperslides__parallax-wrapper{height:110px!important;padding-bottom:110px!important}[data-v-9bdef600] .vueperslides__parallax-wrapper{padding-bottom:110px!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd]{width:100%;max-width:none}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-skeleton{width:100%!important}.assign-strategy-drawer-content .assign-strategy-select[data-v-6ce48dfd] .in-dropdown-box__container{width:413px}.assign-strategy-drawer .spaced-dot-sep{background-image:linear-gradient(90deg,#91949f 20%,#fff0 0);background-position:center bottom;background-repeat:repeat-x;background-size:5px 1px}.assign-strategy-drawer .spaced-dot-sep--top{background-position:center top}.assign-strategy-drawer .spaced-dot-sep--fc-n:first-child{background:none}.legacy-strategy-updated-modal[data-v-da2225a1]{position:relative;z-index:145}
@@ -11,7 +11,6 @@ export declare class ItemsBlockCardCompositionControl extends CommonControl {
11
11
  name: string;
12
12
  label: string;
13
13
  }): string;
14
- _initializeToggles(): void;
15
14
  _updateTogglesFromState(): void;
16
15
  _syncVisibilityFromAttributes(): void;
17
16
  /**
@@ -42,7 +42,7 @@ export declare class RecommendationBlockControl extends CommonControl {
42
42
  private get _subControls();
43
43
  getTemplate(): string;
44
44
  private _showControlsForBlock;
45
- onRender(): Promise<void>;
45
+ onRender(): void;
46
46
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
47
47
  onDestroy(): void;
48
48
  /**
@@ -50,6 +50,7 @@ export declare class RecommendationBlockControl extends CommonControl {
50
50
  * Each sub-control manages its own form values and event listeners
51
51
  */
52
52
  private _initializeSubControls;
53
+ private _renderWithPanelNode;
53
54
  /**
54
55
  * Syncs persisted node config into the Pinia store's block state.
55
56
  *
@@ -115,7 +116,7 @@ export declare class RecommendationBlockControl extends CommonControl {
115
116
  * 2. Smart defaults for new blocks (currency, algorithm) — sequential
116
117
  * 3. Product data with correct defaults — sequential
117
118
  *
118
- * Shared by onRender() and onTemplateNodeUpdated() to avoid duplication.
119
+ * Called from onTemplateNodeUpdated() once the node config is synced.
119
120
  * Marks the block as initialized to prevent redundant fetches on re-selection.
120
121
  */
121
122
  private _fetchBlockData;
@@ -67,12 +67,14 @@ interface ButtonProps {
67
67
  export declare abstract class CommonControl extends Control {
68
68
  currentNode?: ImmutableHtmlNode;
69
69
  protected lastBlockInstanceId: string | null;
70
+ protected isAwaitingPanelNode: boolean;
70
71
  abstract getId(): string;
71
72
  abstract getTemplate(): string;
72
73
  abstract onRender(): Promise<void> | void;
73
74
  getContainer(): ShadowRoot;
74
75
  onTemplateNodeUpdated(node: ImmutableHtmlNode): void;
75
76
  onDestroy(): void;
77
+ protected forgetLastPanelNode(): void;
76
78
  /**
77
79
  * Gets the Items block container element from the current node.
78
80
  * @returns The container element or null if not found