@useinsider/guido 3.2.0-beta.e69fb3b → 3.2.0-beta.ecc7c6c
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.
- package/dist/@types/config/schemas.js +1 -1
- package/dist/@types/config/validator.js +34 -27
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +81 -76
- package/dist/components/organisms/base/Toaster.vue2.js +11 -10
- package/dist/components/organisms/email-preview/desktop-preview/DesktopPreview.vue2.js +12 -12
- package/dist/components/organisms/email-preview/mobile-preview/ContentView.vue2.js +6 -6
- package/dist/components/organisms/email-preview/mobile-preview/InboxView.vue2.js +15 -9
- package/dist/components/organisms/extensions/recommendation/FilterItem.vue2.js +40 -31
- package/dist/components/organisms/extensions/recommendation/FilterSelectionDrawer.vue2.js +20 -19
- package/dist/components/organisms/extensions/recommendation/Filters.vue2.js +14 -11
- package/dist/components/organisms/header/EditorActions.vue.js +12 -11
- package/dist/components/organisms/header/EditorActions.vue2.js +22 -18
- package/dist/components/organisms/header/HeaderWrapper.vue2.js +15 -12
- package/dist/components/organisms/header/LeftSlot.vue2.js +19 -16
- package/dist/components/organisms/header/MiddleSlot.vue2.js +11 -14
- package/dist/components/organisms/header/RightSlot.vue2.js +17 -14
- package/dist/components/organisms/onboarding/AMPOnboarding.vue.js +12 -11
- package/dist/components/organisms/onboarding/AMPOnboarding.vue2.js +26 -24
- package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +12 -11
- package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +44 -41
- package/dist/components/organisms/onboarding/ItemsOnboarding.vue.js +12 -11
- package/dist/components/organisms/onboarding/ItemsOnboarding.vue2.js +38 -36
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +21 -18
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +31 -27
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +12 -11
- package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +32 -30
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue.js +12 -11
- package/dist/components/organisms/onboarding/VersionHistoryOnboarding.vue2.js +23 -21
- package/dist/components/organisms/save-as-template/SaveAsTemplateDrawer.vue2.js +9 -8
- package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.js +10 -9
- package/dist/composables/useActionsApi.js +38 -37
- package/dist/composables/useBlocksConfig.js +26 -26
- package/dist/composables/useFullStoryBridge.js +9 -8
- package/dist/composables/useHtmlCompiler.js +26 -34
- package/dist/composables/useHtmlValidator.js +114 -101
- package/dist/composables/useHttp.js +30 -30
- package/dist/composables/usePartner.js +1 -1
- package/dist/composables/useRecommendation.js +15 -14
- package/dist/composables/useRibbonOffset.js +15 -15
- package/dist/composables/useSave.js +23 -19
- package/dist/composables/useStripo.js +48 -53
- package/dist/composables/useSyncModuleExtractor.js +29 -31
- package/dist/composables/useTimerClone.js +25 -24
- package/dist/composables/useTranslations.js +3 -2
- package/dist/composables/useValidation.js +8 -7
- package/dist/composables/validators/useCouponBlockValidator.js +24 -0
- package/dist/composables/validators/useLiquidValidator.js +13 -13
- package/dist/config/compiler/recommendationCompilerRules.js +27 -27
- package/dist/config/compiler/unsubscribeCompilerRules.js +19 -17
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +11 -10
- package/dist/config/migrator/checkboxMigrator.js +21 -20
- package/dist/config/migrator/couponBlockMigrator.js +19 -18
- package/dist/config/migrator/itemsBlockMigrator.js +89 -87
- package/dist/config/migrator/radioButtonMigrator.js +63 -42
- package/dist/config/migrator/recommendationMigrator.js +109 -106
- package/dist/config/migrator/unsubscribeMigrator.js +11 -10
- package/dist/enums/unsubscribe.js +19 -18
- package/dist/extensions/Blocks/Items/block.js +9 -9
- package/dist/extensions/Blocks/Items/controls/button/link.js +14 -14
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +97 -89
- package/dist/extensions/Blocks/Items/controls/image/link.js +14 -14
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +24 -23
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +14 -13
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +47 -44
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +38 -38
- package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +11 -11
- package/dist/extensions/Blocks/Items/controls/price/priceOrientation.js +40 -38
- package/dist/extensions/Blocks/Items/controls/price/singlePrice.js +35 -35
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +162 -155
- package/dist/extensions/Blocks/Items/enums/productEnums.js +14 -9
- package/dist/extensions/Blocks/Items/template.js +210 -210
- package/dist/extensions/Blocks/RadioButton/template.js +1 -1
- package/dist/extensions/Blocks/Recommendation/controls/button/index.js +36 -36
- package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +133 -128
- package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/customAttribute/textTrim.js +10 -10
- package/dist/extensions/Blocks/Recommendation/controls/image/index.js +9 -9
- package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +18 -17
- package/dist/extensions/Blocks/Recommendation/controls/main/filters.js +6 -4
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +90 -82
- package/dist/extensions/Blocks/Recommendation/controls/main/layoutOrientation.js +18 -18
- package/dist/extensions/Blocks/Recommendation/controls/main/productCount.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +36 -35
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +135 -134
- package/dist/extensions/Blocks/Recommendation/controls/name/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +10 -10
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +4 -4
- package/dist/extensions/Blocks/Recommendation/controls/price/index.js +24 -24
- package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +32 -32
- package/dist/extensions/Blocks/Recommendation/controls/syncInfoMessage.js +20 -18
- package/dist/extensions/Blocks/Recommendation/extension.js +32 -31
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +16 -8
- package/dist/extensions/Blocks/Recommendation/store/recommendation.js +64 -54
- package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +23 -22
- package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +10 -10
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +10 -10
- package/dist/extensions/Blocks/Recommendation/templates/index.js +6 -6
- package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +25 -24
- package/dist/extensions/Blocks/Recommendation/templates/list/template.js +1 -1
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +47 -45
- package/dist/extensions/Blocks/Recommendation/validation/filterSchema.js +16 -13
- package/dist/extensions/Blocks/Recommendation/validation/requiredFields.js +33 -0
- package/dist/extensions/Blocks/Unsubscribe/control.js +13 -11
- package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +18 -16
- package/dist/extensions/Blocks/common-control.js +26 -25
- package/dist/extensions/DynamicContent/dynamic-content.js +58 -53
- package/dist/guido.css +1 -1
- package/dist/library.js +12 -11
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +234 -233
- package/dist/node_modules/lodash-es/_DataView.js +6 -0
- package/dist/node_modules/lodash-es/_Promise.js +6 -0
- package/dist/node_modules/lodash-es/_Set.js +6 -0
- package/dist/node_modules/lodash-es/_SetCache.js +13 -0
- package/dist/node_modules/lodash-es/_Stack.js +18 -0
- package/dist/node_modules/lodash-es/_Uint8Array.js +5 -0
- package/dist/node_modules/lodash-es/_WeakMap.js +6 -0
- package/dist/node_modules/lodash-es/_arrayFilter.js +10 -0
- package/dist/node_modules/lodash-es/_arrayLikeKeys.js +20 -0
- package/dist/node_modules/lodash-es/_arrayMap.js +8 -0
- package/dist/node_modules/lodash-es/_arrayPush.js +8 -0
- package/dist/node_modules/lodash-es/_arraySome.js +9 -0
- package/dist/node_modules/lodash-es/_baseEach.js +6 -0
- package/dist/node_modules/lodash-es/_baseFlatten.js +13 -0
- package/dist/node_modules/lodash-es/_baseFor.js +5 -0
- package/dist/node_modules/lodash-es/_baseForOwn.js +8 -0
- package/dist/node_modules/lodash-es/_baseGet.js +11 -0
- package/dist/node_modules/lodash-es/_baseGetAllKeys.js +9 -0
- package/dist/node_modules/lodash-es/_baseHasIn.js +6 -0
- package/dist/node_modules/lodash-es/_baseIsArguments.js +9 -0
- package/dist/node_modules/lodash-es/_baseIsEqual.js +8 -0
- package/dist/node_modules/lodash-es/_baseIsEqualDeep.js +32 -0
- package/dist/node_modules/lodash-es/_baseIsMatch.js +29 -0
- package/dist/node_modules/lodash-es/_baseIsTypedArray.js +12 -0
- package/dist/node_modules/lodash-es/_baseIteratee.js +11 -0
- package/dist/node_modules/lodash-es/_baseKeys.js +14 -0
- package/dist/node_modules/lodash-es/_baseMap.js +11 -0
- package/dist/node_modules/lodash-es/_baseMatches.js +12 -0
- package/dist/node_modules/lodash-es/_baseMatchesProperty.js +17 -0
- package/dist/node_modules/lodash-es/_baseProperty.js +8 -0
- package/dist/node_modules/lodash-es/_basePropertyDeep.js +9 -0
- package/dist/node_modules/lodash-es/_baseRange.js +9 -0
- package/dist/node_modules/lodash-es/_baseTimes.js +8 -0
- package/dist/node_modules/lodash-es/_baseToString.js +18 -0
- package/dist/node_modules/lodash-es/_baseTrim.js +8 -0
- package/dist/node_modules/lodash-es/_baseUnary.js +8 -0
- package/dist/node_modules/lodash-es/_cacheHas.js +6 -0
- package/dist/node_modules/lodash-es/_castPath.js +10 -0
- package/dist/node_modules/lodash-es/_createBaseEach.js +15 -0
- package/dist/node_modules/lodash-es/_createBaseFor.js +13 -0
- package/dist/node_modules/lodash-es/_createRange.js +11 -0
- package/dist/node_modules/lodash-es/_equalArrays.js +40 -0
- package/dist/node_modules/lodash-es/_equalByTag.js +45 -0
- package/dist/node_modules/lodash-es/_equalObjects.js +36 -0
- package/dist/node_modules/lodash-es/_getAllKeys.js +9 -0
- package/dist/node_modules/lodash-es/_getMatchData.js +12 -0
- package/dist/node_modules/lodash-es/_getSymbols.js +10 -0
- package/dist/node_modules/lodash-es/_getTag.js +28 -0
- package/dist/node_modules/lodash-es/_getValue.js +1 -1
- package/dist/node_modules/lodash-es/_hasPath.js +19 -0
- package/dist/node_modules/lodash-es/_isFlattenable.js +10 -0
- package/dist/node_modules/lodash-es/_isIndex.js +8 -0
- package/dist/node_modules/lodash-es/_isIterateeCall.js +13 -0
- package/dist/node_modules/lodash-es/_isKey.js +12 -0
- package/dist/node_modules/lodash-es/_isPrototype.js +8 -0
- package/dist/node_modules/lodash-es/_isStrictComparable.js +7 -0
- package/dist/node_modules/lodash-es/_mapToArray.js +9 -0
- package/dist/node_modules/lodash-es/_matchesStrictComparable.js +8 -0
- package/dist/node_modules/lodash-es/_memoizeCapped.js +11 -0
- package/dist/node_modules/lodash-es/_nativeKeys.js +5 -0
- package/dist/node_modules/lodash-es/_nodeUtil.js +11 -0
- package/dist/node_modules/lodash-es/_overArg.js +8 -0
- package/dist/node_modules/lodash-es/_setCacheAdd.js +7 -0
- package/dist/node_modules/lodash-es/_setCacheHas.js +6 -0
- package/dist/node_modules/lodash-es/_setToArray.js +9 -0
- package/dist/node_modules/lodash-es/_stackClear.js +7 -0
- package/dist/node_modules/lodash-es/_stackDelete.js +7 -0
- package/dist/node_modules/lodash-es/_stackGet.js +6 -0
- package/dist/node_modules/lodash-es/_stackHas.js +6 -0
- package/dist/node_modules/lodash-es/_stackSet.js +17 -0
- package/dist/node_modules/lodash-es/_stringToPath.js +10 -0
- package/dist/node_modules/lodash-es/_toKey.js +10 -0
- package/dist/node_modules/lodash-es/_trimmedEndIndex.js +9 -0
- package/dist/node_modules/lodash-es/flatMap.js +8 -0
- package/dist/node_modules/lodash-es/get.js +8 -0
- package/dist/node_modules/lodash-es/hasIn.js +8 -0
- package/dist/node_modules/lodash-es/identity.js +6 -0
- package/dist/node_modules/lodash-es/isArguments.js +10 -0
- package/dist/node_modules/lodash-es/isArray.js +4 -0
- package/dist/node_modules/lodash-es/isArrayLike.js +8 -0
- package/dist/node_modules/lodash-es/isBuffer.js +6 -0
- package/dist/node_modules/lodash-es/isLength.js +7 -0
- package/dist/node_modules/lodash-es/isObjectLike.js +6 -0
- package/dist/node_modules/lodash-es/isSymbol.js +9 -0
- package/dist/node_modules/lodash-es/isTypedArray.js +7 -0
- package/dist/node_modules/lodash-es/keys.js +9 -0
- package/dist/node_modules/lodash-es/map.js +11 -0
- package/dist/node_modules/lodash-es/property.js +10 -0
- package/dist/node_modules/lodash-es/range.js +5 -0
- package/dist/node_modules/lodash-es/stubArray.js +6 -0
- package/dist/node_modules/lodash-es/stubFalse.js +6 -0
- package/dist/node_modules/lodash-es/toFinite.js +14 -0
- package/dist/node_modules/lodash-es/toNumber.js +22 -0
- package/dist/node_modules/lodash-es/toString.js +7 -0
- package/dist/node_modules/valibot/dist/index.js +126 -122
- package/dist/services/recommendationApi.js +17 -14
- package/dist/services/templateLibraryApi.js +40 -38
- package/dist/src/components/wrappers/WpModal.vue.d.ts +1 -1
- package/dist/src/composables/useHtmlCompiler.d.ts +2 -1
- package/dist/src/composables/validators/useCouponBlockValidator.d.ts +3 -0
- package/dist/src/extensions/Blocks/RadioButton/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +7 -1
- package/dist/src/extensions/Blocks/Recommendation/validation/requiredFields.d.ts +21 -0
- package/dist/src/stores/dynamic-content.d.ts +3 -3
- package/dist/stores/config.js +81 -25
- package/dist/stores/dynamic-content.js +11 -6
- package/dist/stores/onboarding.js +1 -1
- package/dist/stores/preview.js +9 -6
- package/dist/stores/unsubscribe.js +4 -1
- package/dist/utils/dateUtil.js +10 -7
- package/dist/utils/genericUtil.js +13 -10
- package/dist/utils/pairProductVariables.js +89 -87
- package/package.json +1 -6
- package/dist/enums/displayConditions.js +0 -80
- package/dist/src/enums/displayConditions.d.ts +0 -2
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var C = (p,
|
|
4
|
-
import { UIElementType as
|
|
5
|
-
import { CommonControl as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
const
|
|
1
|
+
var X = Object.defineProperty;
|
|
2
|
+
var J = (p, _, t) => _ in p ? X(p, _, { enumerable: !0, configurable: !0, writable: !0, value: t }) : p[_] = t;
|
|
3
|
+
var C = (p, _, t) => J(p, typeof _ != "symbol" ? _ + "" : _, t);
|
|
4
|
+
import { UIElementType as f, UEAttr as $, ModificationDescription as A } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
5
|
+
import { CommonControl as Q } from "../../../common-control.js";
|
|
6
|
+
import { ATTR_PRODUCT_IMAGE as L, ATTR_PRODUCT_NAME as Z, ATTR_PRODUCT_PRICE as tt, ATTR_PRODUCT_OLD_PRICE as et, ATTR_PRODUCT_OMNIBUS_PRICE as rt, ATTR_PRODUCT_OMNIBUS_DISCOUNT as ot, ATTR_PRODUCT_BUTTON as D, ATTR_DATA_CUSTOM_ATTRIBUTES as k, ATTR_CUSTOM_PREFIX as m, BUILT_IN_DEFAULT_ATTRIBUTES as st } from "../../constants/selectors.js";
|
|
7
|
+
import { DEFAULT_COMPOSITION as q, DEFAULT_VISIBILITY as P } from "../../constants/defaultConfig.js";
|
|
8
|
+
import { RecommendationConfigService as it } from "../../services/configService.js";
|
|
9
|
+
import { useRecommendationExtensionStore as nt } from "../../store/recommendation.js";
|
|
10
|
+
import { ATTRIBUTE_CELL_CLASS as lt, gridElementRenderer as at, DEFAULT_CELL_PADDING as ct } from "../../templates/grid/elementRenderer.js";
|
|
11
|
+
import { listElementRenderer as ut } from "../../templates/list/elementRenderer.js";
|
|
12
|
+
import { toDisplayName as dt, isDefaultAttribute as mt, buildElementRenderer as F } from "../../templates/utils.js";
|
|
13
|
+
import { getTableDisplayValue as ht } from "../../utils/tagName.js";
|
|
14
|
+
import { getCurrentLayout as pt } from "../main/utils.js";
|
|
15
|
+
const _t = "ui-elements-recommendation-card-composition", S = ".recommendation-attribute-row", N = ".product-card-wrapper > tbody", w = ".product-info-cell > table > tbody", M = "data-card-composition", y = "data-attribute-type", I = "data-visibility", x = {
|
|
16
16
|
ADD_ATTRIBUTE: "addAttribute"
|
|
17
17
|
}, g = 5, v = "reorderIcon_", h = [
|
|
18
18
|
{ key: L, label: "Product Image" },
|
|
19
|
-
{ key:
|
|
20
|
-
{ key:
|
|
21
|
-
{ key:
|
|
22
|
-
{ key:
|
|
23
|
-
{ key:
|
|
19
|
+
{ key: Z, label: "Product Name" },
|
|
20
|
+
{ key: tt, label: "Product Price" },
|
|
21
|
+
{ key: et, label: "Product Original Price" },
|
|
22
|
+
{ key: rt, label: "Omnibus Price" },
|
|
23
|
+
{ key: ot, label: "Omnibus Discount" },
|
|
24
24
|
{ key: D, label: "Product Button" }
|
|
25
|
-
], ft = new Set(h.map((p) => p.key)),
|
|
26
|
-
class
|
|
25
|
+
], ft = new Set(h.map((p) => p.key)), T = "customAttr_", E = "deleteAttr_";
|
|
26
|
+
class Nt extends Q {
|
|
27
27
|
constructor() {
|
|
28
28
|
super(...arguments);
|
|
29
|
-
C(this, "store",
|
|
29
|
+
C(this, "store", nt());
|
|
30
30
|
C(this, "unsubscribeStore", null);
|
|
31
31
|
C(this, "eventController", null);
|
|
32
32
|
/**
|
|
@@ -36,7 +36,7 @@ class Et extends J {
|
|
|
36
36
|
C(this, "reorderInProgress", !1);
|
|
37
37
|
}
|
|
38
38
|
getId() {
|
|
39
|
-
return
|
|
39
|
+
return _t;
|
|
40
40
|
}
|
|
41
41
|
// ========================================================================
|
|
42
42
|
// Lifecycle
|
|
@@ -48,10 +48,10 @@ class Et extends J {
|
|
|
48
48
|
</div>
|
|
49
49
|
`).join(""), r = Array.from(
|
|
50
50
|
{ length: g },
|
|
51
|
-
(l,
|
|
52
|
-
<div data-custom-select-key="${
|
|
51
|
+
(l, u) => `
|
|
52
|
+
<div data-custom-select-key="${T}${u}" style="display: none;">
|
|
53
53
|
${this._GuSelect({
|
|
54
|
-
name: `${
|
|
54
|
+
name: `${T}${u}`,
|
|
55
55
|
placeholder: this.api.translate("Select Attribute"),
|
|
56
56
|
options: []
|
|
57
57
|
})}
|
|
@@ -59,32 +59,32 @@ class Et extends J {
|
|
|
59
59
|
`
|
|
60
60
|
).join(""), e = h.length + g, o = Array.from(
|
|
61
61
|
{ length: e },
|
|
62
|
-
(l,
|
|
63
|
-
<div data-reorder-icon-key="${v}${
|
|
64
|
-
<${
|
|
62
|
+
(l, u) => `
|
|
63
|
+
<div data-reorder-icon-key="${v}${u}" style="display: none;">
|
|
64
|
+
<${f.BUTTON}
|
|
65
65
|
class="drag-handle-btn flat-inline flat-white"
|
|
66
|
-
${$.BUTTON.name}="${v}${
|
|
66
|
+
${$.BUTTON.name}="${v}${u}"
|
|
67
67
|
>
|
|
68
|
-
<${
|
|
68
|
+
<${f.ICON}
|
|
69
69
|
src="reorder"
|
|
70
70
|
class="icon-button"
|
|
71
|
-
></${
|
|
72
|
-
</${
|
|
71
|
+
></${f.ICON}>
|
|
72
|
+
</${f.BUTTON}>
|
|
73
73
|
</div>
|
|
74
74
|
`
|
|
75
75
|
).join(""), s = Array.from(
|
|
76
76
|
{ length: g },
|
|
77
|
-
(l,
|
|
78
|
-
<div data-custom-delete-key="${
|
|
79
|
-
<${
|
|
77
|
+
(l, u) => `
|
|
78
|
+
<div data-custom-delete-key="${E}${u}" style="display: none;">
|
|
79
|
+
<${f.BUTTON}
|
|
80
80
|
class="custom-attr-delete flat-inline flat-white"
|
|
81
|
-
${$.BUTTON.name}="${
|
|
81
|
+
${$.BUTTON.name}="${E}${u}"
|
|
82
82
|
>
|
|
83
|
-
<${
|
|
83
|
+
<${f.ICON}
|
|
84
84
|
src="delete"
|
|
85
85
|
class="icon-button"
|
|
86
|
-
></${
|
|
87
|
-
</${
|
|
86
|
+
></${f.ICON}>
|
|
87
|
+
</${f.BUTTON}>
|
|
88
88
|
</div>
|
|
89
89
|
`
|
|
90
90
|
).join(""), i = "https://academy.insiderone.com/docs/new-editor-email-recommendation-block", n = this.api.translate(
|
|
@@ -120,7 +120,7 @@ class Et extends J {
|
|
|
120
120
|
<div class="orderable-list" data-composition-list></div>
|
|
121
121
|
|
|
122
122
|
${this._GuButton({
|
|
123
|
-
name:
|
|
123
|
+
name: x.ADD_ATTRIBUTE,
|
|
124
124
|
label: this.api.translate("Add Attribute"),
|
|
125
125
|
id: "guido__btn-add-attribute"
|
|
126
126
|
})}
|
|
@@ -150,7 +150,7 @@ class Et extends J {
|
|
|
150
150
|
});
|
|
151
151
|
});
|
|
152
152
|
for (let t = 0; t < g; t++) {
|
|
153
|
-
const r = `${
|
|
153
|
+
const r = `${T}${t}`, e = t;
|
|
154
154
|
this.api.onValueChanged(r, (o) => {
|
|
155
155
|
this._onCustomAttributeChanged(e, o);
|
|
156
156
|
});
|
|
@@ -161,14 +161,14 @@ class Et extends J {
|
|
|
161
161
|
// ========================================================================
|
|
162
162
|
_readCompositionFromNode() {
|
|
163
163
|
if (!this.currentNode || !("getAttribute" in this.currentNode))
|
|
164
|
-
return [...
|
|
165
|
-
const t = this.currentNode.getAttribute(
|
|
166
|
-
return t ? t.split(",").filter(Boolean) : [...
|
|
164
|
+
return [...q];
|
|
165
|
+
const t = this.currentNode.getAttribute(M);
|
|
166
|
+
return t ? t.split(",").filter(Boolean) : [...q];
|
|
167
167
|
}
|
|
168
168
|
_readCustomAttributesFromNode() {
|
|
169
169
|
if (!this.currentNode || !("getAttribute" in this.currentNode))
|
|
170
170
|
return [];
|
|
171
|
-
const t = this.currentNode.getAttribute(
|
|
171
|
+
const t = this.currentNode.getAttribute(k);
|
|
172
172
|
if (!t)
|
|
173
173
|
return [];
|
|
174
174
|
try {
|
|
@@ -180,18 +180,18 @@ class Et extends J {
|
|
|
180
180
|
_readVisibilityFromRows() {
|
|
181
181
|
if (!this.currentNode)
|
|
182
182
|
return this._getDefaultVisibilities();
|
|
183
|
-
const t = Array.from(this.currentNode.querySelectorAll(
|
|
183
|
+
const t = Array.from(this.currentNode.querySelectorAll(S)), r = this._extractVisibilityFromRows(t);
|
|
184
184
|
return this._mergeWithDefaults(r);
|
|
185
185
|
}
|
|
186
186
|
_getDefaultVisibilities() {
|
|
187
|
-
return { ...
|
|
187
|
+
return { ...P };
|
|
188
188
|
}
|
|
189
189
|
_extractVisibilityFromRows(t) {
|
|
190
190
|
const r = {};
|
|
191
191
|
return t.forEach((e) => {
|
|
192
192
|
if (!("getAttribute" in e))
|
|
193
193
|
return;
|
|
194
|
-
const o = e.getAttribute(
|
|
194
|
+
const o = e.getAttribute(y), s = e.getAttribute(I);
|
|
195
195
|
o && s !== null && (r[o] = this._parseVisibilityValue(s));
|
|
196
196
|
}), r;
|
|
197
197
|
}
|
|
@@ -199,7 +199,7 @@ class Et extends J {
|
|
|
199
199
|
return t === "1" || t === "true";
|
|
200
200
|
}
|
|
201
201
|
_mergeWithDefaults(t) {
|
|
202
|
-
return Object.entries(
|
|
202
|
+
return Object.entries(P).forEach(([r, e]) => {
|
|
203
203
|
r in t || (t[r] = e);
|
|
204
204
|
}), t;
|
|
205
205
|
}
|
|
@@ -225,7 +225,7 @@ class Et extends J {
|
|
|
225
225
|
let i = 0, n = 0;
|
|
226
226
|
const c = t.map((a) => {
|
|
227
227
|
if (ft.has(a)) {
|
|
228
|
-
const l = h.find((
|
|
228
|
+
const l = h.find((u) => u.key === a);
|
|
229
229
|
return this._createBuiltInItemHtml(l, n++);
|
|
230
230
|
}
|
|
231
231
|
if (a.startsWith(m)) {
|
|
@@ -257,8 +257,8 @@ class Et extends J {
|
|
|
257
257
|
e.forEach((a) => {
|
|
258
258
|
const { key: l } = a.dataset;
|
|
259
259
|
if (l) {
|
|
260
|
-
const
|
|
261
|
-
|
|
260
|
+
const u = n.get(l) || [];
|
|
261
|
+
u.push(a), n.set(l, u);
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
264
|
const c = /* @__PURE__ */ new Map();
|
|
@@ -266,8 +266,8 @@ class Et extends J {
|
|
|
266
266
|
const l = n.get(a);
|
|
267
267
|
if (!l)
|
|
268
268
|
return;
|
|
269
|
-
const
|
|
270
|
-
c.set(a,
|
|
269
|
+
const u = c.get(a) || 0;
|
|
270
|
+
c.set(a, u + 1), l[u] && t.appendChild(l[u]);
|
|
271
271
|
}), !0;
|
|
272
272
|
}
|
|
273
273
|
_createBuiltInItemHtml(t, r) {
|
|
@@ -315,7 +315,7 @@ class Et extends J {
|
|
|
315
315
|
_initializeCustomSelects(t) {
|
|
316
316
|
t.length !== 0 && setTimeout(() => {
|
|
317
317
|
t.forEach((r, e) => {
|
|
318
|
-
const o = `${
|
|
318
|
+
const o = `${T}${e}`, s = this._getSelectOptions(r, t);
|
|
319
319
|
this.api.setUIEAttribute(o, $.SELECTPICKER.items, s), this.api.updateValues({ [o]: r });
|
|
320
320
|
});
|
|
321
321
|
}, 0);
|
|
@@ -339,7 +339,7 @@ class Et extends J {
|
|
|
339
339
|
*/
|
|
340
340
|
_moveSelectsIntoItems(t, r) {
|
|
341
341
|
for (let e = 0; e < r; e++) {
|
|
342
|
-
const o = `${
|
|
342
|
+
const o = `${T}${e}`, s = t.querySelector(`[data-custom-select-key="${o}"]`), i = t.querySelector(`[data-custom-select-slot="${e}"]`);
|
|
343
343
|
if (s && i) {
|
|
344
344
|
const n = s.querySelector("ue-select");
|
|
345
345
|
n && i.appendChild(n);
|
|
@@ -367,7 +367,7 @@ class Et extends J {
|
|
|
367
367
|
*/
|
|
368
368
|
_rescueSelectsToStore(t) {
|
|
369
369
|
for (let r = 0; r < g; r++) {
|
|
370
|
-
const e = `${
|
|
370
|
+
const e = `${T}${r}`, o = t.querySelector(`[data-custom-select-key="${e}"]`), s = t.querySelector(`[data-custom-select-slot="${r}"]`);
|
|
371
371
|
if (s) {
|
|
372
372
|
const i = s.querySelector("ue-select");
|
|
373
373
|
i && o && o.appendChild(i);
|
|
@@ -380,7 +380,7 @@ class Et extends J {
|
|
|
380
380
|
*/
|
|
381
381
|
_moveDeleteButtonsIntoItems(t, r) {
|
|
382
382
|
for (let e = 0; e < r; e++) {
|
|
383
|
-
const o = `${
|
|
383
|
+
const o = `${E}${e}`, s = t.querySelector(`[data-custom-delete-key="${o}"]`), i = t.querySelector(`[data-custom-delete-slot="${e}"]`);
|
|
384
384
|
if (s && i) {
|
|
385
385
|
const n = s.querySelector("ue-button");
|
|
386
386
|
n && i.appendChild(n);
|
|
@@ -393,7 +393,7 @@ class Et extends J {
|
|
|
393
393
|
*/
|
|
394
394
|
_rescueDeleteButtonsToStore(t) {
|
|
395
395
|
for (let r = 0; r < g; r++) {
|
|
396
|
-
const e = `${
|
|
396
|
+
const e = `${E}${r}`, o = t.querySelector(`[data-custom-delete-key="${e}"]`), s = t.querySelector(`[data-custom-delete-slot="${r}"]`);
|
|
397
397
|
if (s) {
|
|
398
398
|
const i = s.querySelector("ue-button");
|
|
399
399
|
i && o && o.appendChild(i);
|
|
@@ -444,23 +444,24 @@ class Et extends J {
|
|
|
444
444
|
_setupDragAndDrop(t, r) {
|
|
445
445
|
let e = null, o = null;
|
|
446
446
|
t.addEventListener("dragstart", (s) => {
|
|
447
|
+
var c;
|
|
447
448
|
const n = s.target.closest(".orderable-item");
|
|
448
|
-
n && (e = n, n.classList.add("dragging"), s.dataTransfer
|
|
449
|
+
n && (e = n, n.classList.add("dragging"), (c = s.dataTransfer) == null || c.setData("text/plain", n.dataset.key || ""));
|
|
449
450
|
}, { signal: r }), t.addEventListener("dragend", () => {
|
|
450
|
-
e && e.classList.remove("dragging"), e = null, o
|
|
451
|
+
e && e.classList.remove("dragging"), e = null, o == null || o.classList.remove("drag-over"), o = null;
|
|
451
452
|
}, { signal: r }), t.addEventListener("dragover", (s) => {
|
|
452
453
|
s.preventDefault();
|
|
453
454
|
const n = s.target.closest(".orderable-item"), c = n && n !== e ? n : null;
|
|
454
|
-
c !== o && (o
|
|
455
|
+
c !== o && (o == null || o.classList.remove("drag-over"), o = c, o == null || o.classList.add("drag-over"));
|
|
455
456
|
}, { signal: r }), t.addEventListener("drop", (s) => {
|
|
456
457
|
s.preventDefault();
|
|
457
458
|
const n = s.target.closest(".orderable-item");
|
|
458
459
|
if (!n || !e || n === e)
|
|
459
460
|
return;
|
|
460
461
|
const c = n.getBoundingClientRect(), a = c.top + c.height / 2;
|
|
461
|
-
s.clientY < a ? t.insertBefore(e, n) : t.insertBefore(e, n.nextSibling), o
|
|
462
|
-
const
|
|
463
|
-
this._onReorder(
|
|
462
|
+
s.clientY < a ? t.insertBefore(e, n) : t.insertBefore(e, n.nextSibling), o == null || o.classList.remove("drag-over"), o = null, e.classList.remove("dragging");
|
|
463
|
+
const u = t.querySelectorAll(".orderable-item"), d = Array.from(u).map((b) => b.dataset.key).filter(Boolean);
|
|
464
|
+
this._onReorder(d), e = null;
|
|
464
465
|
}, { signal: r });
|
|
465
466
|
}
|
|
466
467
|
_setupDeleteHandler(t, r) {
|
|
@@ -468,7 +469,7 @@ class Et extends J {
|
|
|
468
469
|
const s = e.target.closest(".custom-attr-delete");
|
|
469
470
|
if (!s)
|
|
470
471
|
return;
|
|
471
|
-
const
|
|
472
|
+
const i = s.closest("[data-custom-index]"), n = i == null ? void 0 : i.dataset.customIndex;
|
|
472
473
|
n !== void 0 && this._onDeleteCustomAttribute(Number(n));
|
|
473
474
|
}, { signal: r });
|
|
474
475
|
}
|
|
@@ -525,55 +526,56 @@ class Et extends J {
|
|
|
525
526
|
}
|
|
526
527
|
_injectGridAttributeRow(t, r, e, o) {
|
|
527
528
|
const s = this.currentNode.querySelectorAll(N);
|
|
528
|
-
if (!s
|
|
529
|
+
if (!(s != null && s.length))
|
|
529
530
|
return;
|
|
530
|
-
const i =
|
|
531
|
-
let
|
|
532
|
-
s.forEach((
|
|
533
|
-
|
|
531
|
+
const i = it.getConfig(this.currentNode), c = `0 ${Math.floor(i.columnSpacing / 2)}px`, a = this.api.getDocumentModifier(), l = this.store.recommendationProducts.length;
|
|
532
|
+
let u = 0;
|
|
533
|
+
s.forEach((d) => {
|
|
534
|
+
var U;
|
|
535
|
+
const b = d.querySelector(S), R = ((U = b == null ? void 0 : b.querySelectorAll(`.${lt}`)) == null ? void 0 : U.length) || 1, V = (100 / R).toFixed(2), { bgStyle: j, bgAttr: W } = this._extractSegmentBgFromCard(d), K = o.map((B) => {
|
|
534
536
|
if (B === e) {
|
|
535
|
-
const
|
|
537
|
+
const z = Array.from(
|
|
536
538
|
{ length: R },
|
|
537
|
-
(
|
|
538
|
-
const
|
|
539
|
+
(gt, H) => {
|
|
540
|
+
const G = l > 0 ? (u + H) % l : H, Y = this._resolveAttributeContent(t, r, G);
|
|
539
541
|
return this._getGridCellHtml(
|
|
540
542
|
t,
|
|
541
|
-
|
|
542
|
-
x,
|
|
543
|
+
Y,
|
|
543
544
|
V,
|
|
544
545
|
j,
|
|
546
|
+
W,
|
|
545
547
|
c
|
|
546
548
|
);
|
|
547
549
|
}
|
|
548
550
|
).join("");
|
|
549
|
-
return `<tr class="recommendation-attribute-row" ${
|
|
551
|
+
return `<tr class="recommendation-attribute-row" ${y}="${e}" ${I}="1">${z}</tr>`;
|
|
550
552
|
}
|
|
551
|
-
const
|
|
552
|
-
`${
|
|
553
|
+
const O = d.querySelector(
|
|
554
|
+
`${S}[${y}="${B}"]`
|
|
553
555
|
);
|
|
554
|
-
return
|
|
556
|
+
return O && "getOuterHTML" in O ? O.getOuterHTML() : "";
|
|
555
557
|
}).join("");
|
|
556
|
-
|
|
557
|
-
}), a.apply(new
|
|
558
|
+
u += R, l > 0 && u >= l && (u = 0), a.modifyHtml(d).setInnerHtml(K);
|
|
559
|
+
}), a.apply(new A(`${this.api.translate("Add custom attribute")}: ${r}`));
|
|
558
560
|
}
|
|
559
561
|
_injectListAttributeRow(t, r, e, o) {
|
|
560
|
-
const s = this.currentNode.querySelectorAll(
|
|
561
|
-
if (!s
|
|
562
|
+
const s = this.currentNode.querySelectorAll(w);
|
|
563
|
+
if (!(s != null && s.length))
|
|
562
564
|
return;
|
|
563
565
|
const i = o.filter((c) => c !== L && c !== D), n = this.api.getDocumentModifier();
|
|
564
566
|
s.forEach((c, a) => {
|
|
565
|
-
const l = i.map((
|
|
566
|
-
if (
|
|
567
|
-
const
|
|
568
|
-
return this._getListRowHtml(t,
|
|
567
|
+
const l = i.map((u) => {
|
|
568
|
+
if (u === e) {
|
|
569
|
+
const b = this._resolveAttributeContent(t, r, a);
|
|
570
|
+
return this._getListRowHtml(t, b, e);
|
|
569
571
|
}
|
|
570
|
-
const
|
|
571
|
-
`${
|
|
572
|
+
const d = c.querySelector(
|
|
573
|
+
`${S}[${y}="${u}"]`
|
|
572
574
|
);
|
|
573
|
-
return
|
|
575
|
+
return d && "getOuterHTML" in d ? d.getOuterHTML() : "";
|
|
574
576
|
}).join("");
|
|
575
577
|
n.modifyHtml(c).setInnerHtml(l);
|
|
576
|
-
}), n.apply(new
|
|
578
|
+
}), n.apply(new A(`${this.api.translate("Add custom attribute")}: ${r}`));
|
|
577
579
|
}
|
|
578
580
|
/**
|
|
579
581
|
* Removes a custom attribute by rebuilding product card content without it.
|
|
@@ -583,19 +585,20 @@ class Et extends J {
|
|
|
583
585
|
if (!this.currentNode)
|
|
584
586
|
return;
|
|
585
587
|
const r = this._getCurrentLayout(), e = this.api.getDocumentModifier();
|
|
586
|
-
if (r === "grid")
|
|
587
|
-
this.currentNode.querySelectorAll(N)
|
|
588
|
+
if (r === "grid") {
|
|
589
|
+
const o = this.currentNode.querySelectorAll(N);
|
|
590
|
+
o == null || o.forEach((s) => {
|
|
588
591
|
const i = this._buildCompositionHtml(s, t);
|
|
589
592
|
e.modifyHtml(s).setInnerHtml(i);
|
|
590
593
|
});
|
|
591
|
-
else {
|
|
592
|
-
const o = t.filter((i) => i !== L && i !== D);
|
|
593
|
-
|
|
594
|
+
} else {
|
|
595
|
+
const o = t.filter((i) => i !== L && i !== D), s = this.currentNode.querySelectorAll(w);
|
|
596
|
+
s == null || s.forEach((i) => {
|
|
594
597
|
const n = this._buildCompositionHtml(i, o);
|
|
595
598
|
e.modifyHtml(i).setInnerHtml(n);
|
|
596
599
|
});
|
|
597
600
|
}
|
|
598
|
-
e.apply(new
|
|
601
|
+
e.apply(new A(this.api.translate("Remove custom attribute")));
|
|
599
602
|
}
|
|
600
603
|
// ========================================================================
|
|
601
604
|
// DOM Mutation (Block Root Attributes, Reorder)
|
|
@@ -608,7 +611,7 @@ class Et extends J {
|
|
|
608
611
|
* producing a flicker on the custom attribute dropdowns.
|
|
609
612
|
*/
|
|
610
613
|
_updateBothAttributes(t, r) {
|
|
611
|
-
this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(
|
|
614
|
+
this.currentNode && this.api.getDocumentModifier().modifyHtml(this.currentNode).setAttribute(M, t.join(",")).setAttribute(k, JSON.stringify(r)).apply(new A(this.api.translate("Update card composition")));
|
|
612
615
|
}
|
|
613
616
|
/**
|
|
614
617
|
* Reorders attribute rows within each product card based on composition order.
|
|
@@ -618,13 +621,13 @@ class Et extends J {
|
|
|
618
621
|
if (!this.currentNode)
|
|
619
622
|
return;
|
|
620
623
|
const r = this.currentNode.querySelectorAll(N);
|
|
621
|
-
if (!r
|
|
624
|
+
if (!(r != null && r.length))
|
|
622
625
|
return;
|
|
623
626
|
const e = this.api.getDocumentModifier();
|
|
624
627
|
r.forEach((o) => {
|
|
625
628
|
const s = this._buildCompositionHtml(o, t);
|
|
626
629
|
e.modifyHtml(o).setInnerHtml(s);
|
|
627
|
-
}), e.apply(new
|
|
630
|
+
}), e.apply(new A(this.api.translate("Reorder product attributes")));
|
|
628
631
|
}
|
|
629
632
|
/**
|
|
630
633
|
* Builds HTML string with attributes ordered according to composition.
|
|
@@ -632,7 +635,7 @@ class Et extends J {
|
|
|
632
635
|
*/
|
|
633
636
|
_buildCompositionHtml(t, r) {
|
|
634
637
|
return r.reduce((e, o) => {
|
|
635
|
-
const s = t.querySelector(`${
|
|
638
|
+
const s = t.querySelector(`${S}[${y}="${o}"]`);
|
|
636
639
|
return s && "getOuterHTML" in s ? e + s.getOuterHTML() : e;
|
|
637
640
|
}, "");
|
|
638
641
|
}
|
|
@@ -642,14 +645,14 @@ class Et extends J {
|
|
|
642
645
|
_applyVisibilityToBlock(t, r) {
|
|
643
646
|
if (!this.currentNode)
|
|
644
647
|
return;
|
|
645
|
-
const e = this.currentNode.querySelectorAll(`${
|
|
646
|
-
if (!e
|
|
648
|
+
const e = this.currentNode.querySelectorAll(`${S}[${y}="${t}"]`);
|
|
649
|
+
if (!(e != null && e.length))
|
|
647
650
|
return;
|
|
648
651
|
const o = r ? "1" : "0", s = r ? this.api.translate("visible") : this.api.translate("hidden"), i = `${this.api.translate("Set visibility")}: ${t} → ${s}`, n = this.api.getDocumentModifier();
|
|
649
652
|
e.forEach((c) => {
|
|
650
|
-
const a =
|
|
653
|
+
const a = ht(c), l = r ? a : "none";
|
|
651
654
|
n.modifyHtml(c).setStyle("display", l).setAttribute(I, o);
|
|
652
|
-
}), n.apply(new
|
|
655
|
+
}), n.apply(new A(i));
|
|
653
656
|
}
|
|
654
657
|
// ========================================================================
|
|
655
658
|
// Utilities
|
|
@@ -670,7 +673,7 @@ class Et extends J {
|
|
|
670
673
|
return -1;
|
|
671
674
|
}
|
|
672
675
|
_getCurrentLayout() {
|
|
673
|
-
return this.store.recommendationConfigs.orientation ||
|
|
676
|
+
return this.store.recommendationConfigs.orientation || pt(this.currentNode);
|
|
674
677
|
}
|
|
675
678
|
/**
|
|
676
679
|
* Extracts background color properties from existing card elements.
|
|
@@ -679,20 +682,21 @@ class Et extends J {
|
|
|
679
682
|
* Used when injecting new attribute cells to match the card's current background.
|
|
680
683
|
*/
|
|
681
684
|
_extractSegmentBgFromCard(t) {
|
|
685
|
+
var o;
|
|
682
686
|
const r = t.querySelector(".product-card-segment");
|
|
683
687
|
if (r && "getAttribute" in r) {
|
|
684
|
-
const
|
|
685
|
-
if (
|
|
686
|
-
const
|
|
687
|
-
return { bgStyle: `background-color: ${
|
|
688
|
+
const i = (r.getAttribute("style") || "").match(/background-color:\s*([^;]+)/);
|
|
689
|
+
if (i) {
|
|
690
|
+
const n = r.getAttribute("bgcolor") || "";
|
|
691
|
+
return { bgStyle: `background-color: ${i[1].trim()};`, bgAttr: n };
|
|
688
692
|
}
|
|
689
693
|
}
|
|
690
|
-
const e = this.currentNode
|
|
694
|
+
const e = (o = this.currentNode) == null ? void 0 : o.querySelector(".product-card-wrapper");
|
|
691
695
|
if (e && "getStyle" in e) {
|
|
692
|
-
const
|
|
693
|
-
if (
|
|
694
|
-
const
|
|
695
|
-
return { bgStyle: `background-color: ${
|
|
696
|
+
const s = e.getStyle("background-color");
|
|
697
|
+
if (s && s !== "transparent") {
|
|
698
|
+
const i = "getAttribute" in e && e.getAttribute("bgcolor") || "";
|
|
699
|
+
return { bgStyle: `background-color: ${s};`, bgAttr: i };
|
|
696
700
|
}
|
|
697
701
|
}
|
|
698
702
|
return { bgStyle: "", bgAttr: "" };
|
|
@@ -722,7 +726,7 @@ class Et extends J {
|
|
|
722
726
|
_updateAddButtonState() {
|
|
723
727
|
const t = this._readCustomAttributesFromNode(), r = t.length >= g, e = new Set(t), o = this._getAddableFilters(), s = o.length > 0 && o.every((i) => e.has(i.attributeName));
|
|
724
728
|
this.api.setUIEAttribute(
|
|
725
|
-
|
|
729
|
+
x.ADD_ATTRIBUTE,
|
|
726
730
|
$.BUTTON.disabled,
|
|
727
731
|
r || s ? "true" : "false"
|
|
728
732
|
);
|
|
@@ -746,7 +750,7 @@ class Et extends J {
|
|
|
746
750
|
* excluding default attributes already covered by built-in toggle items.
|
|
747
751
|
*/
|
|
748
752
|
_getAddableFilters() {
|
|
749
|
-
return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" &&
|
|
753
|
+
return Object.values(this.store.filterList).filter((t) => !(t.type === "defaultAttribute" && st.has(t.attributeName)));
|
|
750
754
|
}
|
|
751
755
|
/**
|
|
752
756
|
* Looks up the display name for an attribute from the store's filterList.
|
|
@@ -754,36 +758,37 @@ class Et extends J {
|
|
|
754
758
|
*/
|
|
755
759
|
_getDisplayNameForAttribute(t) {
|
|
756
760
|
const r = Object.values(this.store.filterList).find((e) => e.attributeName === t);
|
|
757
|
-
return r ? r.displayName :
|
|
761
|
+
return r ? r.displayName : dt(t);
|
|
758
762
|
}
|
|
759
763
|
/**
|
|
760
764
|
* Resolves the display content for a custom attribute cell.
|
|
761
765
|
* Uses the real product value from the store when available, falls back to displayName.
|
|
762
766
|
*/
|
|
763
767
|
_resolveAttributeContent(t, r, e) {
|
|
764
|
-
|
|
768
|
+
var n;
|
|
769
|
+
const s = this.store.recommendationProducts[e], i = mt(t, this.store.filterList) ? s == null ? void 0 : s[t] : (n = s == null ? void 0 : s.product_attributes) == null ? void 0 : n[t];
|
|
765
770
|
return typeof i == "string" ? i : typeof i == "number" ? String(i) : r;
|
|
766
771
|
}
|
|
767
772
|
_getGridCellHtml(t, r, e, o = "", s = "", i = "") {
|
|
768
|
-
const n = `${m}${t}`, c =
|
|
773
|
+
const n = `${m}${t}`, c = F(at, [n], this.store.filterList), a = {
|
|
769
774
|
[t]: r,
|
|
770
775
|
product_attributes: { [t]: r }
|
|
771
776
|
};
|
|
772
777
|
let l = c[n](a);
|
|
773
778
|
return l = l.replace("<td", `<td width="${e}%"`), i && (l = l.replace(
|
|
774
|
-
`padding: ${
|
|
779
|
+
`padding: ${ct}`,
|
|
775
780
|
`padding: ${i}`
|
|
776
781
|
)), o && (l = l.replace(/style="table-layout: fixed;"/, `style="table-layout: fixed; ${o}"`)), s && (l = l.replace(/border="0"/, `border="0" bgcolor="${s}"`)), l;
|
|
777
782
|
}
|
|
778
783
|
_getListRowHtml(t, r, e) {
|
|
779
|
-
const o =
|
|
784
|
+
const o = F(ut, [e], this.store.filterList), s = {
|
|
780
785
|
[t]: r,
|
|
781
786
|
product_attributes: { [t]: r }
|
|
782
787
|
}, n = o[e](s).replace(/<tr>/, "").replace(/<\/tr>/, "");
|
|
783
|
-
return `<tr class="recommendation-attribute-row" ${
|
|
788
|
+
return `<tr class="recommendation-attribute-row" ${y}="${e}" ${I}="1">${n}</tr>`;
|
|
784
789
|
}
|
|
785
790
|
}
|
|
786
791
|
export {
|
|
787
|
-
|
|
788
|
-
|
|
792
|
+
_t as COMPOSITION_CONTROL_BLOCK_ID,
|
|
793
|
+
Nt as RecommendationCardCompositionControl
|
|
789
794
|
};
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { TextPaddingsBuiltInControl as d, ButtonBackgroundColorBuiltInControl as i, TextFontFamilyBuiltInControl as u, TextStyleBuiltInControl as c, TextSizeBuiltInControl as C, TextColorBuiltInControl as g, TextAlignBuiltInControl as a } from "../../../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
2
|
-
import {
|
|
2
|
+
import { RecommendationBlockId as l } from "../../constants/blockIds.js";
|
|
3
3
|
import { RecommendationControlId as e } from "../../constants/controlIds.js";
|
|
4
|
-
import { BLOCK_ROOT_SELECTOR as
|
|
5
|
-
import {
|
|
4
|
+
import { BLOCK_ROOT_SELECTOR as A, ATTR_PRODUCT_ATTR as s } from "../../constants/selectors.js";
|
|
5
|
+
import { CustomAttributeTextTrimControl as I } from "./textTrim.js";
|
|
6
6
|
function o(t) {
|
|
7
|
-
const r = t.closest(
|
|
7
|
+
const r = t.closest(A);
|
|
8
8
|
if (!r)
|
|
9
9
|
return [];
|
|
10
|
-
const n = t.asElement().getAttribute(
|
|
10
|
+
const n = t.asElement().getAttribute(s);
|
|
11
11
|
if (n) {
|
|
12
|
-
const T = `[esd-extension-block-id="${
|
|
12
|
+
const T = `[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"][${s}="${n}"]`;
|
|
13
13
|
return r.querySelectorAll(T);
|
|
14
14
|
}
|
|
15
15
|
return r.querySelectorAll(
|
|
16
|
-
`[esd-extension-block-id="${
|
|
16
|
+
`[esd-extension-block-id="${l.CUSTOM_ATTRIBUTE}"]`
|
|
17
17
|
);
|
|
18
18
|
}
|
|
19
19
|
const m = class extends a {
|
|
@@ -73,9 +73,9 @@ const m = class extends a {
|
|
|
73
73
|
fontFamily: O,
|
|
74
74
|
background: R,
|
|
75
75
|
paddings: B,
|
|
76
|
-
textTrim:
|
|
76
|
+
textTrim: I
|
|
77
77
|
};
|
|
78
78
|
export {
|
|
79
79
|
p as CustomAttributeControls,
|
|
80
|
-
|
|
80
|
+
I as CustomAttributeTextTrimControl
|
|
81
81
|
};
|