vviinn-widgets 2.212.2 → 2.212.4
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/cjs/{index-CuEyZlCU.js → index-_0g0X5c_.js} +4 -2
- package/dist/cjs/{search.store-DONgsZoB.js → search.store-d2QXWz7H.js} +1 -1
- package/dist/cjs/vviinn-button_6.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-camera_12.cjs.entry.js +2 -2
- package/dist/cjs/vviinn-carousel_10.cjs.entry.js +8 -6
- package/dist/cjs/vviinn-shop-the-look.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-text-search.cjs.entry.js +1 -1
- package/dist/collection/components/vviinn-carousel/vviinn-carousel.js +5 -3
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.js +3 -2
- package/dist/collection/recommendation/index.js +2 -1
- package/dist/esm/{index-BMIjtG2f.js → index-0PZup3PH.js} +4 -3
- package/dist/esm/{search.store-D6GBV7af.js → search.store-KDs2rpoU.js} +1 -1
- package/dist/esm/vviinn-button_6.entry.js +1 -1
- package/dist/esm/vviinn-camera_12.entry.js +2 -2
- package/dist/esm/vviinn-carousel_10.entry.js +9 -7
- package/dist/esm/vviinn-shop-the-look.entry.js +1 -1
- package/dist/esm/vviinn-text-search.entry.js +1 -1
- package/dist/types/recommendation/index.d.ts +1 -0
- package/dist/vviinn-widgets/{p-e6d25c9e.entry.js → p-61b490a2.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-427659f7.entry.js → p-6c99a37d.entry.js} +1 -1
- package/dist/vviinn-widgets/p-76e100e5.entry.js +1 -0
- package/dist/vviinn-widgets/p-Dg7konTz.js +1 -0
- package/dist/vviinn-widgets/{p-B0fYM6b6.js → p-DwYeDk0H.js} +1 -1
- package/dist/vviinn-widgets/{p-3009f50c.entry.js → p-ad077480.entry.js} +1 -1
- package/dist/vviinn-widgets/{p-a38fa5e0.entry.js → p-d7367e02.entry.js} +1 -1
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
- package/package.json +1 -1
- package/www/build/{p-9eddab00.js → p-1ac73229.js} +1 -1
- package/www/build/{p-e6d25c9e.entry.js → p-61b490a2.entry.js} +1 -1
- package/www/build/{p-427659f7.entry.js → p-6c99a37d.entry.js} +1 -1
- package/www/build/p-76e100e5.entry.js +1 -0
- package/www/build/p-Dg7konTz.js +1 -0
- package/www/build/{p-B0fYM6b6.js → p-DwYeDk0H.js} +1 -1
- package/www/build/{p-3009f50c.entry.js → p-ad077480.entry.js} +1 -1
- package/www/build/{p-a38fa5e0.entry.js → p-d7367e02.entry.js} +1 -1
- package/www/build/vviinn-widgets.esm.js +1 -1
- package/www/index.html +1 -1
- package/dist/vviinn-widgets/p-3Gd2O2eN.js +0 -1
- package/dist/vviinn-widgets/p-3cbb3938.entry.js +0 -1
- package/www/build/p-3Gd2O2eN.js +0 -1
- package/www/build/p-3cbb3938.entry.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index = require('./index-OrE9ITel.js');
|
|
4
|
-
var search_store = require('./search.store-
|
|
4
|
+
var search_store = require('./search.store-d2QXWz7H.js');
|
|
5
5
|
var store = require('./store-jPZ4ROqV.js');
|
|
6
6
|
|
|
7
7
|
const PlusIcon = () => (index.h("svg", { width: "32", height: "32", viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: "plus-icon", "aria-hidden": "true" },
|
|
@@ -33,6 +33,7 @@ const getRecommendationsBody = ({ productId, campaigns, color, excluded, dynamic
|
|
|
33
33
|
const staticFilters = Object.assign(Object.assign({}, search_store.addIfNotEmpty("color", color)), search_store.addIfNotEmpty("excluded", search_store.parseStringToExcluded(excluded)));
|
|
34
34
|
return Object.assign(Object.assign(Object.assign({ productId }, search_store.addIfNotEmpty("dynamicFilters", dynamicFilters)), search_store.addIfNotEmpty("campaigns", parseCampaigns(campaigns))), search_store.addIfNotEmpty("staticFilters", staticFilters));
|
|
35
35
|
};
|
|
36
|
+
const CUSTOM_LABELS_DELIMITER = "|";
|
|
36
37
|
const getCustomLabels = (recommendation) => {
|
|
37
38
|
const { custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, } = recommendation;
|
|
38
39
|
return [
|
|
@@ -43,7 +44,7 @@ const getCustomLabels = (recommendation) => {
|
|
|
43
44
|
custom_label_4,
|
|
44
45
|
]
|
|
45
46
|
.map((label) => label !== null && label !== void 0 ? label : "")
|
|
46
|
-
.join(
|
|
47
|
+
.join(CUSTOM_LABELS_DELIMITER);
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
/**
|
|
@@ -371,6 +372,7 @@ const createImageSearchEvent = createTrackingEvent({
|
|
|
371
372
|
exports.CAROUSEL_CONTENT_WIDTH_CSS_VAR = CAROUSEL_CONTENT_WIDTH_CSS_VAR;
|
|
372
373
|
exports.CAROUSEL_IMAGE_WIDTH_CSS_VAR = CAROUSEL_IMAGE_WIDTH_CSS_VAR;
|
|
373
374
|
exports.CONTENT_GROUP_CSS_CLASS = CONTENT_GROUP_CSS_CLASS;
|
|
375
|
+
exports.CUSTOM_LABELS_DELIMITER = CUSTOM_LABELS_DELIMITER;
|
|
374
376
|
exports.DEFAULT_COLUMNS_NUMBER = DEFAULT_COLUMNS_NUMBER;
|
|
375
377
|
exports.FilterIconClose = FilterIconClose;
|
|
376
378
|
exports.PlusIcon = PlusIcon;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./index-OrE9ITel.js');
|
|
4
4
|
var store = require('./store-jPZ4ROqV.js');
|
|
5
|
-
var search_store = require('./search.store-
|
|
5
|
+
var search_store = require('./search.store-d2QXWz7H.js');
|
|
6
6
|
var customizedSlots = require('./customized-slots-CqOPLiML.js');
|
|
7
7
|
var SecondaryActionIcon = require('./SecondaryActionIcon-BZg-ADIW.js');
|
|
8
8
|
var index$1 = require('./index-DLEDOlRe.js');
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./index-OrE9ITel.js');
|
|
4
4
|
var Rectangle = require('./Rectangle-7dF6_xf3.js');
|
|
5
|
-
var search_store = require('./search.store-
|
|
5
|
+
var search_store = require('./search.store-d2QXWz7H.js');
|
|
6
6
|
var customizedSlots = require('./customized-slots-CqOPLiML.js');
|
|
7
|
-
var index$1 = require('./index-
|
|
7
|
+
var index$1 = require('./index-_0g0X5c_.js');
|
|
8
8
|
var store = require('./store-jPZ4ROqV.js');
|
|
9
9
|
var cropperUtils = require('./cropperUtils-DCDOLeBS.js');
|
|
10
10
|
var index$2 = require('./index-DLEDOlRe.js');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index = require('./index-OrE9ITel.js');
|
|
4
|
-
var search_store = require('./search.store-
|
|
4
|
+
var search_store = require('./search.store-d2QXWz7H.js');
|
|
5
5
|
var Rectangle = require('./Rectangle-7dF6_xf3.js');
|
|
6
6
|
var store = require('./store-jPZ4ROqV.js');
|
|
7
|
-
var index$2 = require('./index-
|
|
7
|
+
var index$2 = require('./index-_0g0X5c_.js');
|
|
8
8
|
var index$1 = require('./index-DLEDOlRe.js');
|
|
9
9
|
var customizedSlots = require('./customized-slots-CqOPLiML.js');
|
|
10
10
|
var index$3 = require('./index-CzqCGUTk.js');
|
|
@@ -281,6 +281,8 @@ const VviinnCarousel = class {
|
|
|
281
281
|
};
|
|
282
282
|
contentNode.addEventListener("scroll", this.scrollHandler);
|
|
283
283
|
}
|
|
284
|
+
// Re-render to recalculate button states with actual DOM dimensions
|
|
285
|
+
index.forceUpdate(this);
|
|
284
286
|
}
|
|
285
287
|
recommendationsWatcher() {
|
|
286
288
|
if (this.isSetMode) {
|
|
@@ -556,10 +558,10 @@ const VviinnCarousel = class {
|
|
|
556
558
|
}
|
|
557
559
|
render() {
|
|
558
560
|
var _a, _b, _c, _d, _e;
|
|
559
|
-
return (index.h(index.Host, { key: '
|
|
561
|
+
return (index.h(index.Host, { key: 'e11e8cfb234d70f22b8ea47021726140d5247253', class: this.getClassMap() }, index.h("div", { key: '5bc27834ea27a3612f35aa5b715d24c38900c654', class: Object.assign(Object.assign({}, this.getClassMap()), this.getBodyClassMap()) }, this.isSetMode && this.crossSellingRecommendations.length > 0 && (index.h("vviinn-product-card", { key: '3d21ba5ad6d7a953b6b17452235c09f155b0b425', class: "set-mode product-card--source", productTitle: this.sourceProduct.title, image: (_b = (_a = this.sourceProduct.image) === null || _a === void 0 ? void 0 : _a.thumbnail) !== null && _b !== void 0 ? _b : (_c = this.sourceProduct.image) === null || _c === void 0 ? void 0 : _c.original, images: this.sourceProduct.images, showMultipleImages: this.showMultipleImages, disableMobileSwiper: true, entityType: this.sourceProduct.entityType, price: this.sourceProduct.price.actual, salePrice: this.sourceProduct.price.sale, basePrice: (_d = this.sourceProduct.basePrice) === null || _d === void 0 ? void 0 : _d.actual, baseSalePrice: (_e = this.sourceProduct.basePrice) === null || _e === void 0 ? void 0 : _e.sale, addPriceContainer: this.addPriceContainer, imageWidth: 300, imageResolutionWidth: this.imageResolutionWidth, isSourceProduct: true, currencySign: this.currencySign, pricePrefix: this.pricePrefix, isSetMode: this.isSetMode, locale: this.locale, numberLocale: this.numberLocale, favoriteShow: this.favoriteShow, customLabels: index$2.getCustomLabels(this.sourceProduct), responsive: true })), index.h("div", { key: 'e36046bb907dd55167ce8decd2a3d2d687158a6a', class: this.getContentClassMap() }, this.renderRecommendations(), this.showArrowButtons() && (index.h(index.Fragment, { key: '15e0e414cc95a022db4c6a65b652012b0a9a52f2' }, index.h("button", { key: 'dcd7427334ffbd97857866ec3b07b8d845eb9361', class: {
|
|
560
562
|
prev: true,
|
|
561
563
|
"grid-arrows-dynamic": this.gridArrowsDynamic && this.isGridMode,
|
|
562
|
-
}, onClick: () => this.handleCarouselButtonClick("left"), part: "carousel-button carousel-button-prev", disabled: this.isFirst(), "aria-label": store.instance.t("buttons.previous") }, index.h(ChevronIcon, { key: '
|
|
564
|
+
}, onClick: () => this.handleCarouselButtonClick("left"), part: "carousel-button carousel-button-prev", disabled: this.isFirst(), "aria-label": store.instance.t("buttons.previous") }, index.h(ChevronIcon, { key: '26ae32a753c9d932cf9c2123ea10584f24c8e953' })), index.h("button", { key: 'e63bcc69a7302ee13da94f9b17f5f7c7c76d3615', class: "next", onClick: () => this.handleCarouselButtonClick("right"), part: "carousel-button carousel-button-next", disabled: this.isLast(), "aria-label": store.instance.t("buttons.next") }, index.h(ChevronIcon, { key: 'dde6c8dec93b6fac3938d11f3542659eec1232b9' })))))), this.showBullets() && (index.h("div", { key: '1fe11a8336061aff451962e99adb59654de0e6e2', class: "bullets" }, this.renderBullets()))));
|
|
563
565
|
}
|
|
564
566
|
get el() { return index.getElement(this); }
|
|
565
567
|
static get watchers() { return {
|
|
@@ -1877,7 +1879,7 @@ const VviinnProductCard = class {
|
|
|
1877
1879
|
animated: this.isTransitioning,
|
|
1878
1880
|
"product-card--source": this.isSourceProduct,
|
|
1879
1881
|
"set-mode": this.isSetMode,
|
|
1880
|
-
}, exportparts: search_store.productCardParts, "data-id": this.productId }, openProductLink.renderExternalCSS(this.cssUrl), index.h("div", { class: "content-container", part: "content-container" }, this.showSkeleton() ? (index.h(index.Fragment, null, index.h("vviinn-skeleton", { height: 40 }), index.h("vviinn-skeleton", { height: 20, halfWidth: true }), index.h("vviinn-skeleton", { height: 40 }))) : (index.h(index.Fragment, null, index.h(Linked, { deeplink: this.deeplink, part: "deeplink", tabindex: 0 }, index.h("span", { class: "title", part: "title" }, this.productTitle)), ((_a = this.brand) === null || _a === void 0 ? void 0 : _a.length) > 0 && (index.h("span", { class: "brand", part: "brand" }, this.brand)), ((_b = this.productType) === null || _b === void 0 ? void 0 : _b.length) > 0 && (index.h("span", { class: "product-type", part: "product-type" }, this.productType)), ((_c = this === null || this === void 0 ? void 0 : this.energyCertifications) !== null && _c !== void 0 ? _c : []).map((energyCertification) => (index.h("vviinn-energy-label", { classIconUrls: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classIconUrls, classDataSheetUrl: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classDataSheetUrl, productType: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.productType, certificationClass: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.certificationClass, classRange: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classRange }))), index.h(Price, { prefix: this.pricePrefix, currency: this.effectiveCurrencySign, numberLocale: this.effectiveNumberLocale, price: this.price, basePrice: parseBasePrice(this.basePrice), salePrice: this.salePrice, baseSalePrice: parseBasePrice(this.baseSalePrice), showInContainer: this.addPriceContainer }), renderCustomLabels(this.customLabels.split(
|
|
1882
|
+
}, exportparts: search_store.productCardParts, "data-id": this.productId }, openProductLink.renderExternalCSS(this.cssUrl), index.h("div", { class: "content-container", part: "content-container" }, this.showSkeleton() ? (index.h(index.Fragment, null, index.h("vviinn-skeleton", { height: 40 }), index.h("vviinn-skeleton", { height: 20, halfWidth: true }), index.h("vviinn-skeleton", { height: 40 }))) : (index.h(index.Fragment, null, index.h(Linked, { deeplink: this.deeplink, part: "deeplink", tabindex: 0 }, index.h("span", { class: "title", part: "title" }, this.productTitle)), ((_a = this.brand) === null || _a === void 0 ? void 0 : _a.length) > 0 && (index.h("span", { class: "brand", part: "brand" }, this.brand)), ((_b = this.productType) === null || _b === void 0 ? void 0 : _b.length) > 0 && (index.h("span", { class: "product-type", part: "product-type" }, this.productType)), ((_c = this === null || this === void 0 ? void 0 : this.energyCertifications) !== null && _c !== void 0 ? _c : []).map((energyCertification) => (index.h("vviinn-energy-label", { classIconUrls: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classIconUrls, classDataSheetUrl: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classDataSheetUrl, productType: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.productType, certificationClass: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.certificationClass, classRange: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classRange }))), index.h(Price, { prefix: this.pricePrefix, currency: this.effectiveCurrencySign, numberLocale: this.effectiveNumberLocale, price: this.price, basePrice: parseBasePrice(this.basePrice), salePrice: this.salePrice, baseSalePrice: parseBasePrice(this.baseSalePrice), showInContainer: this.addPriceContainer }), renderCustomLabels(this.customLabels.split(index$2.CUSTOM_LABELS_DELIMITER), "content")))), index.h("div", { class: {
|
|
1881
1883
|
"basket-button-container": true,
|
|
1882
1884
|
hidden: !this.isShowBasketButton() || this.showSkeleton(),
|
|
1883
1885
|
}, part: "basket-button-container" }, index.h("button", { class: {
|
|
@@ -1925,7 +1927,7 @@ const VviinnProductCard = class {
|
|
|
1925
1927
|
animationInterval: generateRandomNumber(800, 1400),
|
|
1926
1928
|
productData: this.productData,
|
|
1927
1929
|
});
|
|
1928
|
-
}, "aria-label": store.instance.t("a11y.findSimilarProducts") }, index.h("div", null, index.h("slot", { name: "vviinn-update-button-icon" }, index.h(UpdateIcon, { width: 14, height: 14 }))))), index.h("div", { class: "product-card-actions", part: "product-card-actions" }, index.h("slot", { name: "vviinn-product-card-actions" })), renderCustomLabels(this.customLabels.split(
|
|
1930
|
+
}, "aria-label": store.instance.t("a11y.findSimilarProducts") }, index.h("div", null, index.h("slot", { name: "vviinn-update-button-icon" }, index.h(UpdateIcon, { width: 14, height: 14 }))))), index.h("div", { class: "product-card-actions", part: "product-card-actions" }, index.h("slot", { name: "vviinn-product-card-actions" })), renderCustomLabels(this.customLabels.split(index$2.CUSTOM_LABELS_DELIMITER), "image")), this.showFooterArrow && index.h("div", { class: "footer-arrow" })));
|
|
1929
1931
|
}
|
|
1930
1932
|
get el() { return index.getElement(this); }
|
|
1931
1933
|
static get watchers() { return {
|
|
@@ -4,7 +4,7 @@ var index = require('./index-OrE9ITel.js');
|
|
|
4
4
|
var Rectangle = require('./Rectangle-7dF6_xf3.js');
|
|
5
5
|
var cropperUtils = require('./cropperUtils-DCDOLeBS.js');
|
|
6
6
|
var swiperElement = require('./swiper-element-DjtzojCR.js');
|
|
7
|
-
var search_store = require('./search.store-
|
|
7
|
+
var search_store = require('./search.store-d2QXWz7H.js');
|
|
8
8
|
var SecondaryActionIcon = require('./SecondaryActionIcon-BZg-ADIW.js');
|
|
9
9
|
var index$1 = require('./index-CzqCGUTk.js');
|
|
10
10
|
var store = require('./store-jPZ4ROqV.js');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var index = require('./index-OrE9ITel.js');
|
|
4
4
|
var Rectangle = require('./Rectangle-7dF6_xf3.js');
|
|
5
|
-
var search_store = require('./search.store-
|
|
5
|
+
var search_store = require('./search.store-d2QXWz7H.js');
|
|
6
6
|
var customizedSlots = require('./customized-slots-CqOPLiML.js');
|
|
7
7
|
var store = require('./store-jPZ4ROqV.js');
|
|
8
8
|
var index$1 = require('./index-CzqCGUTk.js');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Host, h, Fragment, } from "@stencil/core";
|
|
1
|
+
import { Host, h, Fragment, forceUpdate, } from "@stencil/core";
|
|
2
2
|
import { chunksOf } from "fp-ts/lib/Array";
|
|
3
3
|
import { pipe } from "fp-ts/lib/function";
|
|
4
4
|
import i18next from "i18next";
|
|
@@ -159,6 +159,8 @@ export class VviinnCarousel {
|
|
|
159
159
|
};
|
|
160
160
|
contentNode.addEventListener("scroll", this.scrollHandler);
|
|
161
161
|
}
|
|
162
|
+
// Re-render to recalculate button states with actual DOM dimensions
|
|
163
|
+
forceUpdate(this);
|
|
162
164
|
}
|
|
163
165
|
recommendationsWatcher() {
|
|
164
166
|
if (this.isSetMode) {
|
|
@@ -434,10 +436,10 @@ export class VviinnCarousel {
|
|
|
434
436
|
}
|
|
435
437
|
render() {
|
|
436
438
|
var _a, _b, _c, _d, _e;
|
|
437
|
-
return (h(Host, { key: '
|
|
439
|
+
return (h(Host, { key: 'e11e8cfb234d70f22b8ea47021726140d5247253', class: this.getClassMap() }, h("div", { key: '5bc27834ea27a3612f35aa5b715d24c38900c654', class: Object.assign(Object.assign({}, this.getClassMap()), this.getBodyClassMap()) }, this.isSetMode && this.crossSellingRecommendations.length > 0 && (h("vviinn-product-card", { key: '3d21ba5ad6d7a953b6b17452235c09f155b0b425', class: "set-mode product-card--source", productTitle: this.sourceProduct.title, image: (_b = (_a = this.sourceProduct.image) === null || _a === void 0 ? void 0 : _a.thumbnail) !== null && _b !== void 0 ? _b : (_c = this.sourceProduct.image) === null || _c === void 0 ? void 0 : _c.original, images: this.sourceProduct.images, showMultipleImages: this.showMultipleImages, disableMobileSwiper: true, entityType: this.sourceProduct.entityType, price: this.sourceProduct.price.actual, salePrice: this.sourceProduct.price.sale, basePrice: (_d = this.sourceProduct.basePrice) === null || _d === void 0 ? void 0 : _d.actual, baseSalePrice: (_e = this.sourceProduct.basePrice) === null || _e === void 0 ? void 0 : _e.sale, addPriceContainer: this.addPriceContainer, imageWidth: 300, imageResolutionWidth: this.imageResolutionWidth, isSourceProduct: true, currencySign: this.currencySign, pricePrefix: this.pricePrefix, isSetMode: this.isSetMode, locale: this.locale, numberLocale: this.numberLocale, favoriteShow: this.favoriteShow, customLabels: getCustomLabels(this.sourceProduct), responsive: true })), h("div", { key: 'e36046bb907dd55167ce8decd2a3d2d687158a6a', class: this.getContentClassMap() }, this.renderRecommendations(), this.showArrowButtons() && (h(Fragment, { key: '15e0e414cc95a022db4c6a65b652012b0a9a52f2' }, h("button", { key: 'dcd7427334ffbd97857866ec3b07b8d845eb9361', class: {
|
|
438
440
|
prev: true,
|
|
439
441
|
"grid-arrows-dynamic": this.gridArrowsDynamic && this.isGridMode,
|
|
440
|
-
}, onClick: () => this.handleCarouselButtonClick("left"), part: "carousel-button carousel-button-prev", disabled: this.isFirst(), "aria-label": i18next.t("buttons.previous") }, h(ChevronIcon, { key: '
|
|
442
|
+
}, onClick: () => this.handleCarouselButtonClick("left"), part: "carousel-button carousel-button-prev", disabled: this.isFirst(), "aria-label": i18next.t("buttons.previous") }, h(ChevronIcon, { key: '26ae32a753c9d932cf9c2123ea10584f24c8e953' })), h("button", { key: 'e63bcc69a7302ee13da94f9b17f5f7c7c76d3615', class: "next", onClick: () => this.handleCarouselButtonClick("right"), part: "carousel-button carousel-button-next", disabled: this.isLast(), "aria-label": i18next.t("buttons.next") }, h(ChevronIcon, { key: 'dde6c8dec93b6fac3938d11f3542659eec1232b9' })))))), this.showBullets() && (h("div", { key: '1fe11a8336061aff451962e99adb59654de0e6e2', class: "bullets" }, this.renderBullets()))));
|
|
441
443
|
}
|
|
442
444
|
static get is() { return "vviinn-carousel"; }
|
|
443
445
|
static get originalStyleUrls() {
|
|
@@ -6,6 +6,7 @@ import i18next from "i18next";
|
|
|
6
6
|
import { setupIntersectionObserver, } from "../../dom";
|
|
7
7
|
import { Linked, Price, parseBasePrice, renderCustomLabels, ContentCardContent, ListCardContent, renderProductCardImage, } from "./render-helpers";
|
|
8
8
|
import { HOVER_DELAY_MS, shouldShowMultipleImages, getCurrentImage, createHoverTimerManager, } from "./helpers";
|
|
9
|
+
import { CUSTOM_LABELS_DELIMITER } from "../../recommendation";
|
|
9
10
|
import styles from "./vviinn-product-card.css";
|
|
10
11
|
import { campaignTypeNames } from "../../campaign/Campaign";
|
|
11
12
|
import { slotChangeListener } from "../customized-slots";
|
|
@@ -337,7 +338,7 @@ export class VviinnProductCard {
|
|
|
337
338
|
animated: this.isTransitioning,
|
|
338
339
|
"product-card--source": this.isSourceProduct,
|
|
339
340
|
"set-mode": this.isSetMode,
|
|
340
|
-
}, exportparts: productCardParts, "data-id": this.productId }, renderExternalCSS(this.cssUrl), h("div", { class: "content-container", part: "content-container" }, this.showSkeleton() ? (h(Fragment, null, h("vviinn-skeleton", { height: 40 }), h("vviinn-skeleton", { height: 20, halfWidth: true }), h("vviinn-skeleton", { height: 40 }))) : (h(Fragment, null, h(Linked, { deeplink: this.deeplink, part: "deeplink", tabindex: 0 }, h("span", { class: "title", part: "title" }, this.productTitle)), ((_a = this.brand) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("span", { class: "brand", part: "brand" }, this.brand)), ((_b = this.productType) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h("span", { class: "product-type", part: "product-type" }, this.productType)), ((_c = this === null || this === void 0 ? void 0 : this.energyCertifications) !== null && _c !== void 0 ? _c : []).map((energyCertification) => (h("vviinn-energy-label", { classIconUrls: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classIconUrls, classDataSheetUrl: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classDataSheetUrl, productType: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.productType, certificationClass: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.certificationClass, classRange: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classRange }))), h(Price, { prefix: this.pricePrefix, currency: this.effectiveCurrencySign, numberLocale: this.effectiveNumberLocale, price: this.price, basePrice: parseBasePrice(this.basePrice), salePrice: this.salePrice, baseSalePrice: parseBasePrice(this.baseSalePrice), showInContainer: this.addPriceContainer }), renderCustomLabels(this.customLabels.split(
|
|
341
|
+
}, exportparts: productCardParts, "data-id": this.productId }, renderExternalCSS(this.cssUrl), h("div", { class: "content-container", part: "content-container" }, this.showSkeleton() ? (h(Fragment, null, h("vviinn-skeleton", { height: 40 }), h("vviinn-skeleton", { height: 20, halfWidth: true }), h("vviinn-skeleton", { height: 40 }))) : (h(Fragment, null, h(Linked, { deeplink: this.deeplink, part: "deeplink", tabindex: 0 }, h("span", { class: "title", part: "title" }, this.productTitle)), ((_a = this.brand) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("span", { class: "brand", part: "brand" }, this.brand)), ((_b = this.productType) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h("span", { class: "product-type", part: "product-type" }, this.productType)), ((_c = this === null || this === void 0 ? void 0 : this.energyCertifications) !== null && _c !== void 0 ? _c : []).map((energyCertification) => (h("vviinn-energy-label", { classIconUrls: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classIconUrls, classDataSheetUrl: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classDataSheetUrl, productType: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.productType, certificationClass: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.certificationClass, classRange: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classRange }))), h(Price, { prefix: this.pricePrefix, currency: this.effectiveCurrencySign, numberLocale: this.effectiveNumberLocale, price: this.price, basePrice: parseBasePrice(this.basePrice), salePrice: this.salePrice, baseSalePrice: parseBasePrice(this.baseSalePrice), showInContainer: this.addPriceContainer }), renderCustomLabels(this.customLabels.split(CUSTOM_LABELS_DELIMITER), "content")))), h("div", { class: {
|
|
341
342
|
"basket-button-container": true,
|
|
342
343
|
hidden: !this.isShowBasketButton() || this.showSkeleton(),
|
|
343
344
|
}, part: "basket-button-container" }, h("button", { class: {
|
|
@@ -385,7 +386,7 @@ export class VviinnProductCard {
|
|
|
385
386
|
animationInterval: generateRandomNumber(800, 1400),
|
|
386
387
|
productData: this.productData,
|
|
387
388
|
});
|
|
388
|
-
}, "aria-label": i18next.t("a11y.findSimilarProducts") }, h("div", null, h("slot", { name: "vviinn-update-button-icon" }, h(UpdateIcon, { width: 14, height: 14 }))))), h("div", { class: "product-card-actions", part: "product-card-actions" }, h("slot", { name: "vviinn-product-card-actions" })), renderCustomLabels(this.customLabels.split(
|
|
389
|
+
}, "aria-label": i18next.t("a11y.findSimilarProducts") }, h("div", null, h("slot", { name: "vviinn-update-button-icon" }, h(UpdateIcon, { width: 14, height: 14 }))))), h("div", { class: "product-card-actions", part: "product-card-actions" }, h("slot", { name: "vviinn-product-card-actions" })), renderCustomLabels(this.customLabels.split(CUSTOM_LABELS_DELIMITER), "image")), this.showFooterArrow && h("div", { class: "footer-arrow" })));
|
|
389
390
|
}
|
|
390
391
|
static get is() { return "vviinn-product-card"; }
|
|
391
392
|
static get encapsulation() { return "shadow"; }
|
|
@@ -11,6 +11,7 @@ export const getRecommendationsBody = ({ productId, campaigns, color, excluded,
|
|
|
11
11
|
const staticFilters = Object.assign(Object.assign({}, addIfNotEmpty("color", color)), addIfNotEmpty("excluded", parseStringToExcluded(excluded)));
|
|
12
12
|
return Object.assign(Object.assign(Object.assign({ productId }, addIfNotEmpty("dynamicFilters", dynamicFilters)), addIfNotEmpty("campaigns", parseCampaigns(campaigns))), addIfNotEmpty("staticFilters", staticFilters));
|
|
13
13
|
};
|
|
14
|
+
export const CUSTOM_LABELS_DELIMITER = "|";
|
|
14
15
|
export const getCustomLabels = (recommendation) => {
|
|
15
16
|
const { custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, } = recommendation;
|
|
16
17
|
return [
|
|
@@ -21,5 +22,5 @@ export const getCustomLabels = (recommendation) => {
|
|
|
21
22
|
custom_label_4,
|
|
22
23
|
]
|
|
23
24
|
.map((label) => label !== null && label !== void 0 ? label : "")
|
|
24
|
-
.join(
|
|
25
|
+
.join(CUSTOM_LABELS_DELIMITER);
|
|
25
26
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { h } from './index-C5qrIvmr.js';
|
|
2
|
-
import { a as addIfNotEmpty, t as parseStringToExcluded, w as isValueMatch, x as isIntervalMatch, y as valueToString, z as extractFilterValue } from './search.store-
|
|
2
|
+
import { a as addIfNotEmpty, t as parseStringToExcluded, w as isValueMatch, x as isIntervalMatch, y as valueToString, z as extractFilterValue } from './search.store-KDs2rpoU.js';
|
|
3
3
|
import { i as instance } from './store-BJxQCbNV.js';
|
|
4
4
|
|
|
5
5
|
const PlusIcon = () => (h("svg", { width: "32", height: "32", viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: "plus-icon", "aria-hidden": "true" },
|
|
@@ -31,6 +31,7 @@ const getRecommendationsBody = ({ productId, campaigns, color, excluded, dynamic
|
|
|
31
31
|
const staticFilters = Object.assign(Object.assign({}, addIfNotEmpty("color", color)), addIfNotEmpty("excluded", parseStringToExcluded(excluded)));
|
|
32
32
|
return Object.assign(Object.assign(Object.assign({ productId }, addIfNotEmpty("dynamicFilters", dynamicFilters)), addIfNotEmpty("campaigns", parseCampaigns(campaigns))), addIfNotEmpty("staticFilters", staticFilters));
|
|
33
33
|
};
|
|
34
|
+
const CUSTOM_LABELS_DELIMITER = "|";
|
|
34
35
|
const getCustomLabels = (recommendation) => {
|
|
35
36
|
const { custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, } = recommendation;
|
|
36
37
|
return [
|
|
@@ -41,7 +42,7 @@ const getCustomLabels = (recommendation) => {
|
|
|
41
42
|
custom_label_4,
|
|
42
43
|
]
|
|
43
44
|
.map((label) => label !== null && label !== void 0 ? label : "")
|
|
44
|
-
.join(
|
|
45
|
+
.join(CUSTOM_LABELS_DELIMITER);
|
|
45
46
|
};
|
|
46
47
|
|
|
47
48
|
/**
|
|
@@ -366,4 +367,4 @@ const createImageSearchEvent = createTrackingEvent({
|
|
|
366
367
|
typ: SEARCH_EVENT_TYPE,
|
|
367
368
|
});
|
|
368
369
|
|
|
369
|
-
export { CONTENT_GROUP_CSS_CLASS as C, DEFAULT_COLUMNS_NUMBER as D, FilterIconClose as F, PlusIcon as P, RESULTS_CALCULATED_COLUMNS_CSS_VAR as R, SET_MODE_IMAGE_WIDTH_CSS_VAR as S, createFilterEvent as a, createAddToBasketEvent as b, createWidgetEvent as c, createAddToWishlistEvent as d, createResultEventByType as e, createProductEventByType as f, getRemoveFilterAriaLabel as g, getCustomLabels as h, getIntervalLabel as i, triggerRemoveIntervalFilter as j, announceToScreenReader as k, isSubFilterActive as l, RenderFilterButton as m, createImageSearchEvent as n, CAROUSEL_IMAGE_WIDTH_CSS_VAR as o, CAROUSEL_CONTENT_WIDTH_CSS_VAR as p, SCROLL_POSITION_TOLERANCE as q, triggerResetFilters as r, syncRequestFilters as s, triggerFilter as t, isPriceFilter as u, v4 as v,
|
|
370
|
+
export { CONTENT_GROUP_CSS_CLASS as C, DEFAULT_COLUMNS_NUMBER as D, FilterIconClose as F, PlusIcon as P, RESULTS_CALCULATED_COLUMNS_CSS_VAR as R, SET_MODE_IMAGE_WIDTH_CSS_VAR as S, createFilterEvent as a, createAddToBasketEvent as b, createWidgetEvent as c, createAddToWishlistEvent as d, createResultEventByType as e, createProductEventByType as f, getRemoveFilterAriaLabel as g, getCustomLabels as h, getIntervalLabel as i, triggerRemoveIntervalFilter as j, announceToScreenReader as k, isSubFilterActive as l, RenderFilterButton as m, createImageSearchEvent as n, CAROUSEL_IMAGE_WIDTH_CSS_VAR as o, CAROUSEL_CONTENT_WIDTH_CSS_VAR as p, SCROLL_POSITION_TOLERANCE as q, triggerResetFilters as r, syncRequestFilters as s, triggerFilter as t, isPriceFilter as u, v4 as v, CUSTOM_LABELS_DELIMITER as w, getRecommendationsBody as x };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, r as registerInstance, H as Host, c as createEvent, g as getElement, F as Fragment } from './index-C5qrIvmr.js';
|
|
2
2
|
import { i as instance } from './store-BJxQCbNV.js';
|
|
3
|
-
import { l as getAcceptableFileFormatsForDisplay, c as campaignTypeNames, a as addIfNotEmpty, n as modalParts, o as searchState, p as carouselParts, q as productCardParts, r as recommendationsParts, u as useSearchStore, v as version } from './search.store-
|
|
3
|
+
import { l as getAcceptableFileFormatsForDisplay, c as campaignTypeNames, a as addIfNotEmpty, n as modalParts, o as searchState, p as carouselParts, q as productCardParts, r as recommendationsParts, u as useSearchStore, v as version } from './search.store-KDs2rpoU.js';
|
|
4
4
|
import { s as slotChangeListener } from './customized-slots-5-oNsq_M.js';
|
|
5
5
|
import { S as SecondaryActionIcon } from './SecondaryActionIcon-Co8n0aty.js';
|
|
6
6
|
import { a as SIDEBAR_ANIMATION_DURATION, P as PRODUCT_CARD_IMAGE_WIDTH, D as DISCOVERY_WIDGET_IMAGE_RESOLUTION_WIDTH, L as LOADING_CLASS_DELAY, b as addEventListenersWithSignal } from './index-DlCdKcyY.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { h, r as registerInstance, c as createEvent, H as Host, g as getElement, F as Fragment } from './index-C5qrIvmr.js';
|
|
2
2
|
import { _ as _functionExports, E as EitherExports, f as fold, b as fromImage, a as divideOnSized, e as isLeft, m as match, O as OptionExports } from './Rectangle-dmgo4KMB.js';
|
|
3
|
-
import { A as toFile, g as makeUploadFileRequest, B as getImageSizes, v as version, c as campaignTypeNames, a as addIfNotEmpty, f as makeVisualSearchRequest, u as useSearchStore, C as checkImageType, j as getAcceptableFileFormats, s as setTextSearchQuery, D as resetStore, m as makeTextSearchRequest, E as makeProductListingPageRequest, F as productCardsGridPart, q as productCardParts, G as listCardParts, H as contentCardParts, I as selectedFiltersParts, J as suggestionsParts, K as checkDeviceType, t as parseStringToExcluded, L as filtersParts, M as extendedFiltersParts, n as modalParts, d as searchBarParts, N as searchWidgetFilterParts, O as searchWidgetButtonParts } from './search.store-
|
|
3
|
+
import { A as toFile, g as makeUploadFileRequest, B as getImageSizes, v as version, c as campaignTypeNames, a as addIfNotEmpty, f as makeVisualSearchRequest, u as useSearchStore, C as checkImageType, j as getAcceptableFileFormats, s as setTextSearchQuery, D as resetStore, m as makeTextSearchRequest, E as makeProductListingPageRequest, F as productCardsGridPart, q as productCardParts, G as listCardParts, H as contentCardParts, I as selectedFiltersParts, J as suggestionsParts, K as checkDeviceType, t as parseStringToExcluded, L as filtersParts, M as extendedFiltersParts, n as modalParts, d as searchBarParts, N as searchWidgetFilterParts, O as searchWidgetButtonParts } from './search.store-KDs2rpoU.js';
|
|
4
4
|
import { s as slotChangeListener, p as productCardSlotNames, v as vprIconSlotName, S as SlotSkeleton } from './customized-slots-5-oNsq_M.js';
|
|
5
|
-
import { g as getRemoveFilterAriaLabel, F as FilterIconClose, P as PlusIcon, R as RESULTS_CALCULATED_COLUMNS_CSS_VAR, c as createWidgetEvent, a as createFilterEvent, v as v4, b as createAddToBasketEvent, d as createAddToWishlistEvent, e as createResultEventByType, f as createProductEventByType, h as getCustomLabels, t as triggerFilter, i as getIntervalLabel, j as triggerRemoveIntervalFilter, k as announceToScreenReader, s as syncRequestFilters, l as isSubFilterActive, m as RenderFilterButton, n as createImageSearchEvent } from './index-
|
|
5
|
+
import { g as getRemoveFilterAriaLabel, F as FilterIconClose, P as PlusIcon, R as RESULTS_CALCULATED_COLUMNS_CSS_VAR, c as createWidgetEvent, a as createFilterEvent, v as v4, b as createAddToBasketEvent, d as createAddToWishlistEvent, e as createResultEventByType, f as createProductEventByType, h as getCustomLabels, t as triggerFilter, i as getIntervalLabel, j as triggerRemoveIntervalFilter, k as announceToScreenReader, s as syncRequestFilters, l as isSubFilterActive, m as RenderFilterButton, n as createImageSearchEvent } from './index-0PZup3PH.js';
|
|
6
6
|
import { i as instance, t as trackEvent, a as isTrackingEnabled, d as defaultConfig } from './store-BJxQCbNV.js';
|
|
7
7
|
import { M as MIN_SEARCH_AREA_SIZE, S as SUPPORTED_ASPECT_RATIO, a as MIN_IMAGE_SIDE_FOR_CROPPER, C as Cropper, c as cropperOptions, g as getCropBoxData, i as isCropBoxChangeMinimal, D as DEFAULT_IMAGE_SIZE } from './cropperUtils-CkB6bG3L.js';
|
|
8
8
|
import { b as addEventListenersWithSignal, R as RESULTS_WIDGET_IMAGE_RESOLUTION_WIDTH, f as findSlotElements, g as getSlotNames, c as SCROLL_TO_DISCOVERY_DELAY, s as setElementInteractivity, S as SEARCH_WIDGET_IMAGE_RESOLUTION_WIDTH } from './index-DlCdKcyY.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { h, r as registerInstance, c as createEvent, F as Fragment, H as Host, g as getElement } from './index-C5qrIvmr.js';
|
|
2
|
-
import { c as campaignTypeNames, a as addIfNotEmpty, _ as _ArrayExports, P as energyLabelParts, u as useSearchStore, M as extendedFiltersParts, L as filtersParts, Q as imageParts, R as isMobile, H as contentCardParts, G as listCardParts, q as productCardParts, S as priceRangeParts, T as fromString, U as fold, v as version } from './search.store-
|
|
1
|
+
import { h, r as registerInstance, c as createEvent, f as forceUpdate, F as Fragment, H as Host, g as getElement } from './index-C5qrIvmr.js';
|
|
2
|
+
import { c as campaignTypeNames, a as addIfNotEmpty, _ as _ArrayExports, P as energyLabelParts, u as useSearchStore, M as extendedFiltersParts, L as filtersParts, Q as imageParts, R as isMobile, H as contentCardParts, G as listCardParts, q as productCardParts, S as priceRangeParts, T as fromString, U as fold, v as version } from './search.store-KDs2rpoU.js';
|
|
3
3
|
import { X as has, Y as tuple, _ as _functionExports, g as requireSemigroup, O as OptionExports, v as pipe$1, N as chainW, Z as makeRequest, L as fromEither, $ as resolveApiPath, a0 as createInitPostRequest, a1 as Apply, a2 as TaskEitherExports, E as EitherExports } from './Rectangle-dmgo4KMB.js';
|
|
4
4
|
import { i as instance, d as defaultConfig, t as trackEvent, a as isTrackingEnabled } from './store-BJxQCbNV.js';
|
|
5
|
-
import { S as SET_MODE_IMAGE_WIDTH_CSS_VAR, C as CONTENT_GROUP_CSS_CLASS, o as CAROUSEL_IMAGE_WIDTH_CSS_VAR, p as CAROUSEL_CONTENT_WIDTH_CSS_VAR, R as RESULTS_CALCULATED_COLUMNS_CSS_VAR, D as DEFAULT_COLUMNS_NUMBER, h as getCustomLabels, q as SCROLL_POSITION_TOLERANCE, r as triggerResetFilters, t as triggerFilter, k as announceToScreenReader, i as getIntervalLabel, u as isPriceFilter, l as isSubFilterActive, m as RenderFilterButton, s as syncRequestFilters, P as PlusIcon, v as v4, c as createWidgetEvent, e as createResultEventByType, b as createAddToBasketEvent, d as createAddToWishlistEvent, f as createProductEventByType,
|
|
5
|
+
import { S as SET_MODE_IMAGE_WIDTH_CSS_VAR, C as CONTENT_GROUP_CSS_CLASS, o as CAROUSEL_IMAGE_WIDTH_CSS_VAR, p as CAROUSEL_CONTENT_WIDTH_CSS_VAR, R as RESULTS_CALCULATED_COLUMNS_CSS_VAR, D as DEFAULT_COLUMNS_NUMBER, h as getCustomLabels, q as SCROLL_POSITION_TOLERANCE, r as triggerResetFilters, t as triggerFilter, k as announceToScreenReader, i as getIntervalLabel, u as isPriceFilter, l as isSubFilterActive, m as RenderFilterButton, s as syncRequestFilters, P as PlusIcon, w as CUSTOM_LABELS_DELIMITER, v as v4, c as createWidgetEvent, e as createResultEventByType, b as createAddToBasketEvent, d as createAddToWishlistEvent, f as createProductEventByType, x as getRecommendationsBody } from './index-0PZup3PH.js';
|
|
6
6
|
import { P as PRODUCT_CARD_IMAGE_WIDTH, D as DISCOVERY_WIDGET_IMAGE_RESOLUTION_WIDTH, b as addEventListenersWithSignal, i as isElementInSelector, d as PRODUCT_CARD_IMAGE_RESOLUTION_WIDTH } from './index-DlCdKcyY.js';
|
|
7
7
|
import { s as slotChangeListener, S as SlotSkeleton } from './customized-slots-5-oNsq_M.js';
|
|
8
8
|
import { i as initializeLocale } from './index-T4QhG8cc.js';
|
|
@@ -279,6 +279,8 @@ const VviinnCarousel = class {
|
|
|
279
279
|
};
|
|
280
280
|
contentNode.addEventListener("scroll", this.scrollHandler);
|
|
281
281
|
}
|
|
282
|
+
// Re-render to recalculate button states with actual DOM dimensions
|
|
283
|
+
forceUpdate(this);
|
|
282
284
|
}
|
|
283
285
|
recommendationsWatcher() {
|
|
284
286
|
if (this.isSetMode) {
|
|
@@ -554,10 +556,10 @@ const VviinnCarousel = class {
|
|
|
554
556
|
}
|
|
555
557
|
render() {
|
|
556
558
|
var _a, _b, _c, _d, _e;
|
|
557
|
-
return (h(Host, { key: '
|
|
559
|
+
return (h(Host, { key: 'e11e8cfb234d70f22b8ea47021726140d5247253', class: this.getClassMap() }, h("div", { key: '5bc27834ea27a3612f35aa5b715d24c38900c654', class: Object.assign(Object.assign({}, this.getClassMap()), this.getBodyClassMap()) }, this.isSetMode && this.crossSellingRecommendations.length > 0 && (h("vviinn-product-card", { key: '3d21ba5ad6d7a953b6b17452235c09f155b0b425', class: "set-mode product-card--source", productTitle: this.sourceProduct.title, image: (_b = (_a = this.sourceProduct.image) === null || _a === void 0 ? void 0 : _a.thumbnail) !== null && _b !== void 0 ? _b : (_c = this.sourceProduct.image) === null || _c === void 0 ? void 0 : _c.original, images: this.sourceProduct.images, showMultipleImages: this.showMultipleImages, disableMobileSwiper: true, entityType: this.sourceProduct.entityType, price: this.sourceProduct.price.actual, salePrice: this.sourceProduct.price.sale, basePrice: (_d = this.sourceProduct.basePrice) === null || _d === void 0 ? void 0 : _d.actual, baseSalePrice: (_e = this.sourceProduct.basePrice) === null || _e === void 0 ? void 0 : _e.sale, addPriceContainer: this.addPriceContainer, imageWidth: 300, imageResolutionWidth: this.imageResolutionWidth, isSourceProduct: true, currencySign: this.currencySign, pricePrefix: this.pricePrefix, isSetMode: this.isSetMode, locale: this.locale, numberLocale: this.numberLocale, favoriteShow: this.favoriteShow, customLabels: getCustomLabels(this.sourceProduct), responsive: true })), h("div", { key: 'e36046bb907dd55167ce8decd2a3d2d687158a6a', class: this.getContentClassMap() }, this.renderRecommendations(), this.showArrowButtons() && (h(Fragment, { key: '15e0e414cc95a022db4c6a65b652012b0a9a52f2' }, h("button", { key: 'dcd7427334ffbd97857866ec3b07b8d845eb9361', class: {
|
|
558
560
|
prev: true,
|
|
559
561
|
"grid-arrows-dynamic": this.gridArrowsDynamic && this.isGridMode,
|
|
560
|
-
}, onClick: () => this.handleCarouselButtonClick("left"), part: "carousel-button carousel-button-prev", disabled: this.isFirst(), "aria-label": instance.t("buttons.previous") }, h(ChevronIcon, { key: '
|
|
562
|
+
}, onClick: () => this.handleCarouselButtonClick("left"), part: "carousel-button carousel-button-prev", disabled: this.isFirst(), "aria-label": instance.t("buttons.previous") }, h(ChevronIcon, { key: '26ae32a753c9d932cf9c2123ea10584f24c8e953' })), h("button", { key: 'e63bcc69a7302ee13da94f9b17f5f7c7c76d3615', class: "next", onClick: () => this.handleCarouselButtonClick("right"), part: "carousel-button carousel-button-next", disabled: this.isLast(), "aria-label": instance.t("buttons.next") }, h(ChevronIcon, { key: 'dde6c8dec93b6fac3938d11f3542659eec1232b9' })))))), this.showBullets() && (h("div", { key: '1fe11a8336061aff451962e99adb59654de0e6e2', class: "bullets" }, this.renderBullets()))));
|
|
561
563
|
}
|
|
562
564
|
get el() { return getElement(this); }
|
|
563
565
|
static get watchers() { return {
|
|
@@ -1875,7 +1877,7 @@ const VviinnProductCard = class {
|
|
|
1875
1877
|
animated: this.isTransitioning,
|
|
1876
1878
|
"product-card--source": this.isSourceProduct,
|
|
1877
1879
|
"set-mode": this.isSetMode,
|
|
1878
|
-
}, exportparts: productCardParts, "data-id": this.productId }, renderExternalCSS(this.cssUrl), h("div", { class: "content-container", part: "content-container" }, this.showSkeleton() ? (h(Fragment, null, h("vviinn-skeleton", { height: 40 }), h("vviinn-skeleton", { height: 20, halfWidth: true }), h("vviinn-skeleton", { height: 40 }))) : (h(Fragment, null, h(Linked, { deeplink: this.deeplink, part: "deeplink", tabindex: 0 }, h("span", { class: "title", part: "title" }, this.productTitle)), ((_a = this.brand) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("span", { class: "brand", part: "brand" }, this.brand)), ((_b = this.productType) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h("span", { class: "product-type", part: "product-type" }, this.productType)), ((_c = this === null || this === void 0 ? void 0 : this.energyCertifications) !== null && _c !== void 0 ? _c : []).map((energyCertification) => (h("vviinn-energy-label", { classIconUrls: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classIconUrls, classDataSheetUrl: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classDataSheetUrl, productType: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.productType, certificationClass: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.certificationClass, classRange: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classRange }))), h(Price, { prefix: this.pricePrefix, currency: this.effectiveCurrencySign, numberLocale: this.effectiveNumberLocale, price: this.price, basePrice: parseBasePrice(this.basePrice), salePrice: this.salePrice, baseSalePrice: parseBasePrice(this.baseSalePrice), showInContainer: this.addPriceContainer }), renderCustomLabels(this.customLabels.split(
|
|
1880
|
+
}, exportparts: productCardParts, "data-id": this.productId }, renderExternalCSS(this.cssUrl), h("div", { class: "content-container", part: "content-container" }, this.showSkeleton() ? (h(Fragment, null, h("vviinn-skeleton", { height: 40 }), h("vviinn-skeleton", { height: 20, halfWidth: true }), h("vviinn-skeleton", { height: 40 }))) : (h(Fragment, null, h(Linked, { deeplink: this.deeplink, part: "deeplink", tabindex: 0 }, h("span", { class: "title", part: "title" }, this.productTitle)), ((_a = this.brand) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("span", { class: "brand", part: "brand" }, this.brand)), ((_b = this.productType) === null || _b === void 0 ? void 0 : _b.length) > 0 && (h("span", { class: "product-type", part: "product-type" }, this.productType)), ((_c = this === null || this === void 0 ? void 0 : this.energyCertifications) !== null && _c !== void 0 ? _c : []).map((energyCertification) => (h("vviinn-energy-label", { classIconUrls: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classIconUrls, classDataSheetUrl: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classDataSheetUrl, productType: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.productType, certificationClass: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.certificationClass, classRange: energyCertification === null || energyCertification === void 0 ? void 0 : energyCertification.classRange }))), h(Price, { prefix: this.pricePrefix, currency: this.effectiveCurrencySign, numberLocale: this.effectiveNumberLocale, price: this.price, basePrice: parseBasePrice(this.basePrice), salePrice: this.salePrice, baseSalePrice: parseBasePrice(this.baseSalePrice), showInContainer: this.addPriceContainer }), renderCustomLabels(this.customLabels.split(CUSTOM_LABELS_DELIMITER), "content")))), h("div", { class: {
|
|
1879
1881
|
"basket-button-container": true,
|
|
1880
1882
|
hidden: !this.isShowBasketButton() || this.showSkeleton(),
|
|
1881
1883
|
}, part: "basket-button-container" }, h("button", { class: {
|
|
@@ -1923,7 +1925,7 @@ const VviinnProductCard = class {
|
|
|
1923
1925
|
animationInterval: generateRandomNumber(800, 1400),
|
|
1924
1926
|
productData: this.productData,
|
|
1925
1927
|
});
|
|
1926
|
-
}, "aria-label": instance.t("a11y.findSimilarProducts") }, h("div", null, h("slot", { name: "vviinn-update-button-icon" }, h(UpdateIcon, { width: 14, height: 14 }))))), h("div", { class: "product-card-actions", part: "product-card-actions" }, h("slot", { name: "vviinn-product-card-actions" })), renderCustomLabels(this.customLabels.split(
|
|
1928
|
+
}, "aria-label": instance.t("a11y.findSimilarProducts") }, h("div", null, h("slot", { name: "vviinn-update-button-icon" }, h(UpdateIcon, { width: 14, height: 14 }))))), h("div", { class: "product-card-actions", part: "product-card-actions" }, h("slot", { name: "vviinn-product-card-actions" })), renderCustomLabels(this.customLabels.split(CUSTOM_LABELS_DELIMITER), "image")), this.showFooterArrow && h("div", { class: "footer-arrow" })));
|
|
1927
1929
|
}
|
|
1928
1930
|
get el() { return getElement(this); }
|
|
1929
1931
|
static get watchers() { return {
|
|
@@ -2,7 +2,7 @@ import { h, r as registerInstance, c as createEvent, H as Host, g as getElement
|
|
|
2
2
|
import { a as divideOnSized, E as EitherExports } from './Rectangle-dmgo4KMB.js';
|
|
3
3
|
import { C as Cropper, c as cropperOptions, g as getCropBoxData, i as isCropBoxChangeMinimal } from './cropperUtils-CkB6bG3L.js';
|
|
4
4
|
import { g as getSwiperStyles, c as configureSwiperElement, r as register, e as extractSlideIndex, s as setupIntersectionObserver } from './swiper-element-Er2KrWw1.js';
|
|
5
|
-
import { i as isDesktop$1, e as shopTheLookState, f as makeVisualSearchRequest, g as makeUploadFileRequest, h as imageFromFileTask, j as getAcceptableFileFormats, k as shopTheLookParts } from './search.store-
|
|
5
|
+
import { i as isDesktop$1, e as shopTheLookState, f as makeVisualSearchRequest, g as makeUploadFileRequest, h as imageFromFileTask, j as getAcceptableFileFormats, k as shopTheLookParts } from './search.store-KDs2rpoU.js';
|
|
6
6
|
import { S as SecondaryActionIcon } from './SecondaryActionIcon-Co8n0aty.js';
|
|
7
7
|
import { i as initializeLocale } from './index-T4QhG8cc.js';
|
|
8
8
|
import { d as defaultConfig } from './store-BJxQCbNV.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-C5qrIvmr.js';
|
|
2
2
|
import { _ as _functionExports, f as fold } from './Rectangle-dmgo4KMB.js';
|
|
3
|
-
import { v as version, c as campaignTypeNames, a as addIfNotEmpty, s as setTextSearchQuery, m as makeTextSearchRequest, b as makeAutoSuggestRequest, u as useSearchStore, d as searchBarParts } from './search.store-
|
|
3
|
+
import { v as version, c as campaignTypeNames, a as addIfNotEmpty, s as setTextSearchQuery, m as makeTextSearchRequest, b as makeAutoSuggestRequest, u as useSearchStore, d as searchBarParts } from './search.store-KDs2rpoU.js';
|
|
4
4
|
import { s as slotChangeListener } from './customized-slots-5-oNsq_M.js';
|
|
5
5
|
import { i as instance, d as defaultConfig } from './store-BJxQCbNV.js';
|
|
6
6
|
import { i as initializeLocale } from './index-T4QhG8cc.js';
|
|
@@ -8,5 +8,6 @@ type GetRecommendationsBodyProps = {
|
|
|
8
8
|
dynamicFilters?: RequestDynamicFilterItem[];
|
|
9
9
|
};
|
|
10
10
|
export declare const getRecommendationsBody: ({ productId, campaigns, color, excluded, dynamicFilters, }: GetRecommendationsBodyProps) => SimilarProductsRequest | CrossSellingRequest;
|
|
11
|
+
export declare const CUSTOM_LABELS_DELIMITER = "|";
|
|
11
12
|
export declare const getCustomLabels: (recommendation: Recommendation) => string;
|
|
12
13
|
export {};
|