Skip to content

Commit 47a6f29

Browse files
committed
feat: added variant order handling logic
1 parent 14b1f37 commit 47a6f29

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

src/visualBuilder/eventManager/useVariantsPostMessageEvent.ts

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ interface VariantFieldsEvent {
99
variant_data: {
1010
variant: string;
1111
highlightVariantFields: boolean;
12+
variantOrder: string[];
1213
};
1314
};
1415
}
@@ -34,9 +35,26 @@ interface LocaleEvent {
3435
locale: string;
3536
};
3637
}
38+
39+
function isLowerOrderVariant(variant_uid: string, dataCslp: string, variantOrder: string[]): boolean {
40+
const indexOfVariant = variantOrder.indexOf(variant_uid);
41+
let indexOfDataCslp = -1;
42+
for (let i = variantOrder.length-1; i >= 0; i--) {
43+
if (dataCslp.includes(variantOrder[i])) {
44+
indexOfDataCslp = i;
45+
break;
46+
}
47+
}
48+
if(indexOfDataCslp < 0) {
49+
return false;
50+
}
51+
return indexOfDataCslp < indexOfVariant;
52+
}
53+
3754
export function addVariantFieldClass(
3855
variant_uid: string,
39-
highlightVariantFields: boolean
56+
highlightVariantFields: boolean,
57+
variantOrder: string[]
4058
): void {
4159
const elements = document.querySelectorAll(`[data-cslp]`);
4260
elements.forEach((element) => {
@@ -51,7 +69,11 @@ export function addVariantFieldClass(
5169
element.classList.add("visual-builder__variant-field");
5270
} else if (!dataCslp.startsWith("v2:")) {
5371
element.classList.add("visual-builder__base-field");
54-
} else {
72+
}
73+
else if (isLowerOrderVariant(variant_uid, dataCslp, variantOrder)) {
74+
element.classList.add("visual-builder__variant-field");
75+
}
76+
else {
5577
element.classList.add("visual-builder__disabled-variant-field");
5678
}
5779
});
@@ -125,7 +147,8 @@ export function useVariantFieldsPostMessageEvent(): void {
125147
removeVariantFieldClass();
126148
addVariantFieldClass(
127149
event.data.variant_data.variant,
128-
event.data.variant_data.highlightVariantFields
150+
event.data.variant_data.highlightVariantFields,
151+
event.data.variant_data.variantOrder
129152
);
130153
}
131154
);

0 commit comments

Comments
 (0)