vviinn-widgets 2.48.0 → 2.48.1
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/{package-60884765.js → package-504b33d0.js} +1 -1
- package/dist/cjs/vviinn-carousel_4.cjs.entry.js +18 -9
- package/dist/cjs/vviinn-vpr-button.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-vps-button.cjs.entry.js +1 -1
- package/dist/cjs/vviinn-vps-widget.cjs.entry.js +2 -2
- package/dist/collection/components/vviinn-carousel/constants.js +1 -0
- package/dist/collection/components/vviinn-carousel/vviinn-carousel.css +28 -32
- package/dist/collection/components/vviinn-carousel/vviinn-carousel.js +11 -3
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.css +37 -14
- package/dist/collection/components/vviinn-product-card/vviinn-product-card.js +1 -1
- package/dist/collection/components/vviinn-skeleton/vviinn-skeleton.css +1 -1
- package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-widget.css +8 -0
- package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-widget.js +1 -1
- package/dist/collection/components/vviinn-vps-widget/vviinn-vps-widget.js +1 -1
- package/dist/esm/{package-f211a164.js → package-411cd846.js} +1 -1
- package/dist/esm/vviinn-carousel_4.entry.js +18 -9
- package/dist/esm/vviinn-vpr-button.entry.js +1 -1
- package/dist/esm/vviinn-vps-button.entry.js +1 -1
- package/dist/esm/vviinn-vps-widget.entry.js +2 -2
- package/dist/types/components/vviinn-carousel/constants.d.ts +1 -0
- package/dist/types/components/vviinn-carousel/vviinn-carousel.d.ts +2 -0
- package/dist/vviinn-widgets/p-80c039c8.js +1 -0
- package/{www/build/p-611134af.entry.js → dist/vviinn-widgets/p-b0da4c4c.entry.js} +1 -1
- package/dist/vviinn-widgets/p-ccad6b6b.entry.js +1 -0
- package/{www/build/p-6a4cca13.entry.js → dist/vviinn-widgets/p-d0b47939.entry.js} +1 -1
- package/dist/vviinn-widgets/p-decd641b.entry.js +1 -0
- package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
- package/package.json +1 -1
- package/www/build/p-80c039c8.js +1 -0
- package/{dist/vviinn-widgets/p-611134af.entry.js → www/build/p-b0da4c4c.entry.js} +1 -1
- package/www/build/p-ccad6b6b.entry.js +1 -0
- package/{dist/vviinn-widgets/p-6a4cca13.entry.js → www/build/p-d0b47939.entry.js} +1 -1
- package/www/build/p-decd641b.entry.js +1 -0
- package/www/build/vviinn-widgets.esm.js +1 -1
- package/dist/vviinn-widgets/p-8caa4f35.js +0 -1
- package/dist/vviinn-widgets/p-9b410195.entry.js +0 -1
- package/dist/vviinn-widgets/p-e3625408.entry.js +0 -1
- package/www/build/p-8caa4f35.js +0 -1
- package/www/build/p-9b410195.entry.js +0 -1
- package/www/build/p-e3625408.entry.js +0 -1
|
@@ -6,7 +6,7 @@ const index = require('./index-5619b5ec.js');
|
|
|
6
6
|
const search_store = require('./search.store-0b319593.js');
|
|
7
7
|
const i18next = require('./i18next-74ff3413.js');
|
|
8
8
|
const customizedSlots = require('./customized-slots-1b59bd38.js');
|
|
9
|
-
const _package = require('./package-
|
|
9
|
+
const _package = require('./package-504b33d0.js');
|
|
10
10
|
const index$1 = require('./index-279a6a0f.js');
|
|
11
11
|
|
|
12
12
|
const BasketIcon = () => (index.h("svg", { width: "25", height: "24", viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
@@ -25,6 +25,7 @@ const UpdateIcon = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg",
|
|
|
25
25
|
const COLUMNS_NUMBER_CSS_VAR = "--vviinn-carousel-columns-internal";
|
|
26
26
|
const CAROUSEL_WIDTH_CSS_VAR = "--vviinn-carousel-content-width";
|
|
27
27
|
const CAROUSEL_IMAGE_WIDTH_CSS_VAR = "--vviinn-carousel-image-width";
|
|
28
|
+
const SET_MODE_IMAGE_WIDTH = "--vviinn-set-mode-image-width";
|
|
28
29
|
const CONTENT_GROUP_CSS_CLASS = "items-group";
|
|
29
30
|
const SET_MODE_INITIAL_DISCOUNT = 5;
|
|
30
31
|
const SET_MODE_MAX_DISCOUNT = 15;
|
|
@@ -41,7 +42,7 @@ const generateRandomNumber = (min, max) => {
|
|
|
41
42
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
42
43
|
};
|
|
43
44
|
|
|
44
|
-
const vviinnCarouselCss = ":host{--vviinn-progressbar-width:0;--vviinn-carousel-
|
|
45
|
+
const vviinnCarouselCss = ":host{--vviinn-progressbar-width:0;--vviinn-carousel-columns-internal:var(--vviinn-carousel-columns, 4)}.body{display:flex;position:relative;flex-direction:column}.bullets{margin-top:16px;display:flex;flex-direction:row;grid-gap:24px;justify-content:center}.bullet{width:10px;height:10px;background:#e0e0e0;border-radius:50%;cursor:pointer}.bullet.active{background:#161616}.content:not(.show-scrollbar),.content.grid{scrollbar-color:#fff0 #fff0}.content:not(.show-scrollbar)::-webkit-scrollbar,.content.grid::-webkit-scrollbar{opacity:0}.content{display:flex;flex-direction:row;grid-gap:8px;overflow-y:hidden;overflow-x:auto;flex-grow:1;padding-bottom:16px}.content.left>*{scroll-snap-align:start}.content.right>*{scroll-snap-align:end}:host(.continuity) .prev,:host(.continuity) .next{border-radius:2px}:host(.grid) .prev,:host(.grid) .next{border-radius:50%}.prev,.next{align-items:center;background-color:white;border:none;box-shadow:0px 2px 6px rgba(0, 0, 0, 0.15);fill:#525252;cursor:pointer;display:grid;height:40px;justify-items:center;position:absolute;top:calc(50% - 20px);width:40px;z-index:1;padding:0;margin:0}.next:disabled,.prev:disabled{display:none}.prev svg{transform:rotate(180deg);margin-left:-5px}.prev{left:0}.next{right:0}.items-group{display:grid;grid-gap:16px;grid-template-columns:repeat(var(--vviinn-carousel-columns-internal), 1fr);min-width:100%}vviinn-product-card::part(price-container){text-align:center}@media (max-width: 480px){.items-group{grid-template-columns:repeat(2, 1fr)}}.body.set{max-width:100%;justify-content:space-between;margin-left:auto;display:flex;flex-direction:row;gap:112px}.body.set::-webkit-scrollbar{display:none}@media (max-width: 768px){.body.set{gap:40px}}.content.set{grid-gap:20px;height:-moz-fit-content;height:fit-content;max-width:-moz-fit-content;max-width:fit-content;overflow:unset}";
|
|
45
46
|
|
|
46
47
|
const VviinnCarousel = class {
|
|
47
48
|
constructor(hostRef) {
|
|
@@ -50,6 +51,7 @@ const VviinnCarousel = class {
|
|
|
50
51
|
this.resizeObserver = new ResizeObserver(() => this.handleResize());
|
|
51
52
|
this.defaultAnimationInterval = 2000;
|
|
52
53
|
this.mutationObserver = new MutationObserver(() => this.cloneSlottedContent());
|
|
54
|
+
this.handleWindowResize = () => this.setImageWidthSetMode("100%");
|
|
53
55
|
this.isLastGroup = () => this.activeContentGroup === this.getContentGroups().length - 1 &&
|
|
54
56
|
this.isGridMode;
|
|
55
57
|
this.isFirstGroup = () => this.activeContentGroup === 0 && this.isGridMode;
|
|
@@ -61,10 +63,12 @@ const VviinnCarousel = class {
|
|
|
61
63
|
if (recommendationIndex + step < this.recommendations.length) {
|
|
62
64
|
newCrossSellingRecommendations[crossSellingIndex] =
|
|
63
65
|
this.recommendations[recommendationIndex + step];
|
|
66
|
+
this.crossSellingRecommendations = [...newCrossSellingRecommendations];
|
|
64
67
|
let element = this.el.querySelector(`[data-id="${productId}"]`);
|
|
65
68
|
const button = element.shadowRoot.querySelector(".update-button");
|
|
66
69
|
button === null || button === void 0 ? void 0 : button.classList.add("hidden");
|
|
67
|
-
|
|
70
|
+
const imageWidth = element.getBoundingClientRect().width;
|
|
71
|
+
this.setImageWidthSetMode(`${imageWidth}px`);
|
|
68
72
|
const animationTimer = setTimeout(() => {
|
|
69
73
|
if (recommendationIndex + step * 2 <= this.recommendations.length - 1) {
|
|
70
74
|
button === null || button === void 0 ? void 0 : button.classList.remove("hidden");
|
|
@@ -102,6 +106,7 @@ const VviinnCarousel = class {
|
|
|
102
106
|
this.isContinuityMode = this.mode === "continuity";
|
|
103
107
|
const columnsNumber = this.getColumnsNumber();
|
|
104
108
|
if (this.isSetMode) {
|
|
109
|
+
window.addEventListener("resize", this.handleWindowResize);
|
|
105
110
|
this.sourceProduct = this.recommendations[0];
|
|
106
111
|
this.recommendations = this.recommendations.slice(1);
|
|
107
112
|
}
|
|
@@ -111,6 +116,7 @@ const VviinnCarousel = class {
|
|
|
111
116
|
}
|
|
112
117
|
disconnectedCallback() {
|
|
113
118
|
this.resizeObserver.disconnect();
|
|
119
|
+
window.removeEventListener("resize", this.handleWindowResize);
|
|
114
120
|
}
|
|
115
121
|
componentDidLoad() {
|
|
116
122
|
this.setWidth();
|
|
@@ -155,6 +161,9 @@ const VviinnCarousel = class {
|
|
|
155
161
|
: widthInDocument;
|
|
156
162
|
this.el.style.setProperty(CAROUSEL_IMAGE_WIDTH_CSS_VAR, `${itemWidth}px`);
|
|
157
163
|
}
|
|
164
|
+
setImageWidthSetMode(width) {
|
|
165
|
+
this.el.style.setProperty(SET_MODE_IMAGE_WIDTH, width);
|
|
166
|
+
}
|
|
158
167
|
getContentClassMap() {
|
|
159
168
|
return {
|
|
160
169
|
content: true,
|
|
@@ -292,7 +301,7 @@ const VviinnCarousel = class {
|
|
|
292
301
|
const salePrice = this.isSetMode
|
|
293
302
|
? setModeDiscount
|
|
294
303
|
: recommendation.price.sale;
|
|
295
|
-
return (index.h("vviinn-product-card", { part: "product-part", productId: recommendation.productId, productTitle: recommendation.title, productType: recommendation.productType, deeplink: recommendation.deeplink, image: recommendation.image.thumbnail, brand: recommendation.brand, imageWidth: this.imageWidth, imageRatio: 1, price: recommendation.price.actual, salePrice: salePrice, responsive: this.isGridMode
|
|
304
|
+
return (index.h("vviinn-product-card", { part: "product-part", productId: recommendation.productId, productTitle: recommendation.title, productType: recommendation.productType, deeplink: recommendation.deeplink, image: recommendation.image.thumbnail, brand: recommendation.brand, imageWidth: this.imageWidth, imageRatio: 1, price: recommendation.price.actual, salePrice: salePrice, responsive: this.isGridMode, dimmedBackground: this.isContinuityMode || this.isSetMode, campaignTypeId: this.campaignTypeId, index: rank, widgetElementId: this.widgetElementId, widgetVersion: this.widgetVersion, addToBasketShow: this.addToBasketShow, mode: this.mode, "data-id": recommendation.productId, updatingAllCards: this.updatingAllCards, defaultAnimationInterval: this.defaultAnimationInterval, updateButtonLocation: this.updateButtonLocation, appliedDiscountPercentage: appliedDiscount, currentDiscountPercentage: this.setModeDiscount }));
|
|
296
305
|
}
|
|
297
306
|
renderRecommendationGroup(elements) {
|
|
298
307
|
return (index.h("div", { class: CONTENT_GROUP_CSS_CLASS, part: "items-group" }, ...elements));
|
|
@@ -519,7 +528,7 @@ const Image = (props, onLoadEnd = () => undefined) => (index.h("picture", null,
|
|
|
519
528
|
const ResponsiveImage = (props, onLoadEnd = () => undefined) => (index.h("picture", null,
|
|
520
529
|
index.h("img", { loading: props.lazy ? "lazy" : "eager", part: "image", class: "image responsive", src: processWidth(props.src, props.width), alt: props.title, ref: props.ref, onLoad: onLoadEnd })));
|
|
521
530
|
|
|
522
|
-
const vviinnProductCardCss = ":host{align-items:center;display:flex;flex-direction:column;position:relative;gap:8px;height:100%;--min-image-size-set-mode:155px}.price-container{display:flex;flex-direction:column}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}.image.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}picture::before{content:\"\";opacity:0;width:100%;height:100%;box-sizing:border-box;display:block;top:0;left:0;position:absolute}.update-button{position:absolute;top:8px;right:8px;
|
|
531
|
+
const vviinnProductCardCss = ":host{align-items:center;display:flex;flex-direction:column;position:relative;gap:8px;height:100%;--min-image-size-set-mode:155px}.price-container{display:flex;flex-direction:column}.price-sale,.price-regular{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#161616}.price-outdated{font-style:normal;font-weight:normal;font-size:16px;line-height:24px;color:#757575;text-decoration:line-through}.product-type{word-wrap:anywhere}.image{display:grid;align-content:center;-o-object-position:50% 50%;object-position:50% 50%;-o-object-fit:contain;object-fit:contain;text-align:center;box-sizing:border-box}.image.responsive{width:100%;height:auto;aspect-ratio:1}.brand,.type{display:none}.title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#161616;display:-webkit-box;font-size:16px;font-style:normal;font-weight:500;line-height:24px;overflow:hidden}.deeplink{text-decoration:none;max-width:100%}.image-link{display:contents}picture{position:relative;width:100%}picture::before{content:\"\";opacity:0;width:100%;height:100%;box-sizing:border-box;display:block;top:0;left:0;position:absolute}.update-button{position:absolute;top:8px;right:8px;padding:6px;width:32px;height:32px;z-index:1;background-color:rgba(127, 127, 127, 0.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:none;color:white;cursor:pointer}.update-button svg{width:20px;height:20px}.update-button::after{content:\"\";position:absolute;top:-4px;right:-4px;width:calc(100% + 8px);height:calc(100% + 8px)}.update-button:hover{background-color:rgba(127, 127, 127, 0.5)}.update-button.hidden{display:none}.basket-button{height:44px;font-size:16px;padding:10px 12px;box-sizing:border-box;border:none;cursor:pointer}.basket-button.basket-button-grid{width:100%;background-color:none;border:1px solid #dddddd}.basket-button.basket-button-continuity{align-self:start;background-color:#f7f7f7}.basket-button-continuity:hover{background-color:#eaeaea}.basket-button-grid:hover{background-color:#f7f7f7}:host(.dimmed) picture::after{content:\"\";width:100%;height:100%;box-sizing:border-box;background-color:#f7f7f7;display:block;top:0;left:0;position:absolute;mix-blend-mode:multiply}:host(.animated) picture::after{mix-blend-mode:normal}:host(.animated) picture::before{opacity:1;animation:pulse 1.8s infinite}:host(.animated) picture::after{content:url(\"data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_810_154)'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M64.7332 1.23333C66.2665 12.2667 67.9665 13.9667 78.6665 15.2333C79.4332 15.3333 79.9999 15.9333 79.9999 16.6667C79.9999 17.4 79.4665 17.9333 78.6665 18.0667C67.9665 19.3667 66.2999 21.0333 64.7332 32.0667C64.6332 32.8 64.0665 33.3333 63.3665 33.3333C62.6665 33.3333 62.0999 32.8 61.9665 32.0667C60.4665 21.0333 58.7665 19.3667 48.0332 18.0667C47.2332 17.9667 46.6999 17.4333 46.6999 16.6667C46.6999 15.9 47.2332 15.3667 48.0332 15.2333C58.7665 13.7667 60.3999 12.2 61.9665 1.23333C62.0999 0.5 62.6665 0 63.3665 0C64.0665 0 64.5999 0.5 64.7332 1.23333ZM38.5665 71.5667C38.3665 72.6 37.6665 73.3333 36.6665 73.3333C35.6665 73.3333 34.9665 72.6 34.7998 71.5667C31.9332 50.7 29.0998 47.9 8.49984 45.2C7.39984 45.1 6.6665 44.3 6.6665 43.3C6.6665 42.3 7.39984 41.5333 8.49984 41.4333C29.1332 39.1333 32.0998 35.9333 34.7998 15.0333C34.9665 14.0333 35.6665 13.3333 36.6665 13.3333C37.6665 13.3333 38.3665 14 38.5665 15.0333C41.2665 35.9333 44.1998 39.1333 64.8665 41.4333C65.9332 41.5333 66.6665 42.2667 66.6665 43.3C66.6665 44.3333 65.9332 45.1 64.8665 45.2C44.1998 47.5 41.2665 50.7 38.5665 71.5667Z' fill='white'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_810_154'%3E%3Crect width='80' height='80' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E\");background-color:transparent;position:absolute;width:80px;height:80px;left:calc(50% - 40px);top:calc(50% - 40px)}:host(.animated) .update-button{display:none}:host(.set-mode){line-height:20px;align-items:flex-start;height:auto}:host(.set-mode) .basket-button{display:flex;gap:8px;align-items:center;box-sizing:border-box;justify-content:center;border:none;background-color:#f4f4f4;font-weight:500;color:#525252}:host(.set-mode:not(.animated)) .basket-button{margin-top:auto}:host(.set-mode) .basket-button:hover{background-color:rgb(234, 234, 234)}:host(.set-mode) .title{font-weight:400}:host(.set-mode) .image{width:var(--vviinn-set-mode-image-width, 100%);height:auto;border:none;aspect-ratio:1;min-width:var(--min-image-size-set-mode);min-height:var(--min-image-size-set-mode)}:host(.set-mode.product-card--source){height:-moz-fit-content;height:fit-content;position:relative;flex-grow:1}:host(.set-mode.product-card--source) .image{aspect-ratio:1;width:100%;height:100%}:host(.set-mode.product-card--source)::after{content:url(\"data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.6667 17.3334H8.00002C7.62224 17.3334 7.30558 17.2056 7.05002 16.95C6.79446 16.6945 6.66669 16.3778 6.66669 16C6.66669 15.6222 6.79446 15.3056 7.05002 15.05C7.30558 14.7945 7.62224 14.6667 8.00002 14.6667H14.6667V8.00002C14.6667 7.62224 14.7945 7.30558 15.05 7.05002C15.3056 6.79446 15.6222 6.66669 16 6.66669C16.3778 6.66669 16.6945 6.79446 16.95 7.05002C17.2056 7.30558 17.3334 7.62224 17.3334 8.00002V14.6667H24C24.3778 14.6667 24.6945 14.7945 24.95 15.05C25.2056 15.3056 25.3334 15.6222 25.3334 16C25.3334 16.3778 25.2056 16.6945 24.95 16.95C24.6945 17.2056 24.3778 17.3334 24 17.3334H17.3334V24C17.3334 24.3778 17.2056 24.6945 16.95 24.95C16.6945 25.2056 16.3778 25.3334 16 25.3334C15.6222 25.3334 15.3056 25.2056 15.05 24.95C14.7945 24.6945 14.6667 24.3778 14.6667 24V17.3334Z' fill='%23A8A8A8'/%3E%3C/svg%3E\");background-color:white;position:absolute;padding:16px;top:calc(50% - 48px);right:-88px;outline:1px solid #f4f4f4;border-radius:50%;width:32px;height:32px}@media (max-width: 768px){:host(.set-mode.product-card--source)::after{padding:8px;right:-24px}}:host(.set-mode) .basket-button.applied-discount{background:transparent;border:1px solid #e0e0e0}:host(.set-mode) .price-container{flex-direction:row;gap:12px}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}.discount-label{position:absolute;left:0;top:13px;line-height:20px;padding:2px 4px;border-radius:0px 4px 4px 0px;color:white;background-color:#ff3944;letter-spacing:0.5px}";
|
|
523
532
|
|
|
524
533
|
const VviinnProductCard = class {
|
|
525
534
|
constructor(hostRef) {
|
|
@@ -656,7 +665,7 @@ const VviinnProductCard = class {
|
|
|
656
665
|
dimmed: this.dimmedBackground,
|
|
657
666
|
animated: this.isTransitioning,
|
|
658
667
|
"set-mode": this.isSetMode,
|
|
659
|
-
}, exportparts: "brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button, update-button-item" }, index.h(Linked, { deeplink: this.deeplink, part: "image-link" }, this.renderImage()), this.isTransitioning ? (index.h(index.Fragment, null, index.h("vviinn-skeleton", { height: 20 }), index.h("vviinn-skeleton", { height: 20, halfWidth: true }))) : (index.h(index.Fragment, null, index.h(Linked, { deeplink: this.deeplink, part: "deeplink" }, index.h("span", { class: "title", part: "title" }, this.productTitle)), index.h("span", { class: "brand", part: "brand" }, this.brand), index.h("span", { class: "type", part: "type" }, this.productType), index.h(Price, { prefix: (_a = this.pricePrefix) !== null && _a !== void 0 ? _a : search_store.state.pricePrefix, currency: (_b = this.currency) !== null && _b !== void 0 ? _b : search_store.state.currencySign, price: this.price, salePrice: this.salePrice, locale: (_c = this.locale) !== null && _c !== void 0 ? _c : search_store.state.locale }))), (this.addToBasketShow || this.isSetMode) && (index.h(index.Fragment, null, this.isTransitioning ? (index.h("vviinn-skeleton", { height: 44 })) : (index.h("button", { class: {
|
|
668
|
+
}, exportparts: "brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button, update-button-item" }, index.h(Linked, { deeplink: this.deeplink, part: "image-link" }, this.renderImage()), this.isTransitioning ? (index.h(index.Fragment, null, index.h("vviinn-skeleton", { height: 20 }), index.h("vviinn-skeleton", { height: 20, halfWidth: true }))) : (index.h(index.Fragment, null, index.h(Linked, { deeplink: this.deeplink, part: "deeplink" }, index.h("span", { class: "title", part: "title" }, this.productTitle)), index.h("span", { class: "brand", part: "brand" }, this.brand), index.h("span", { class: "type", part: "type" }, this.productType), index.h(Price, { prefix: (_a = this.pricePrefix) !== null && _a !== void 0 ? _a : search_store.state.pricePrefix, currency: (_b = this.currency) !== null && _b !== void 0 ? _b : search_store.state.currencySign, price: this.price, salePrice: this.salePrice, locale: (_c = this.locale) !== null && _c !== void 0 ? _c : search_store.state.locale }), this.isSetMode && !this.appliedDiscountPercentage && (index.h("div", { class: "discount-label" }, `-${this.currentDiscountPercentage}%`)))), (this.addToBasketShow || this.isSetMode) && (index.h(index.Fragment, null, this.isTransitioning ? (index.h("vviinn-skeleton", { height: 44 })) : (index.h("button", { class: {
|
|
660
669
|
"basket-button": true,
|
|
661
670
|
"basket-button-grid": this.isGridMode || this.isSetMode,
|
|
662
671
|
"basket-button-continuity ": this.isContinuityMode,
|
|
@@ -683,7 +692,7 @@ const VviinnProductCard = class {
|
|
|
683
692
|
};
|
|
684
693
|
VviinnProductCard.style = vviinnProductCardCss;
|
|
685
694
|
|
|
686
|
-
const vviinnSkeletonCss = ":host{display:block;width:100%;height:100
|
|
695
|
+
const vviinnSkeletonCss = ":host{display:block;width:100%;height:100%;line-height:0}.vviinn-skeleton{display:inline-block;animation:pulse 1.2s infinite}@keyframes pulse{0%{background-color:rgb(244, 244, 244)}50%{background-color:rgb(232, 232, 232)}100%{background-color:rgba(244, 244, 244)}}";
|
|
687
696
|
|
|
688
697
|
const VviinnSkeleton = class {
|
|
689
698
|
constructor(hostRef) {
|
|
@@ -1402,7 +1411,7 @@ const resources = {
|
|
|
1402
1411
|
},
|
|
1403
1412
|
};
|
|
1404
1413
|
|
|
1405
|
-
const vviinnVprWidgetCss = ":host{display:grid;grid-gap:1rem;width:100%}:host(:not(.loaded)){position:absolute;visibility:hidden}:host(.grid) vviinn-product-card::part(image){border:1px solid #dddddd;width:100%}.widget-header{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:center}.widget-header h3{margin-top:8px;margin-bottom:0;font-size:14px;font-weight:400;line-height:20px}.update-button{display:flex;align-items:center;justify-content:center;color:#525252;gap:8px;padding:8px 10px;background:rgb(244, 244, 244);border:none;cursor:pointer}.update-button:hover{background:rgb(234, 234, 234)}.update-button svg{color:#6f6f6f}h2{margin:0}vviinn-product-card::part(price-container){align-self:flex-start;text-align:left;display:flex}.results{display:grid;grid-gap:1rem}.no-result-text{font-size:20px}.visually-hidden{position:absolute;top:0;left:0;z-index:-1;height:0;width:0}h2{margin:0}:host(.grid) h2{justify-content:center}:host(.grid) vviinn-product-card::part(image){min-width:100%}:host(.grid) vviinn-product-card::part(image-link){width:100%}:host(.grid) vviinn-product-card::part(title),:host(.grid) vviinn-product-card::part(brand),:host(.grid) vviinn-product-card::part(type){text-align:center}:host(.grid) vviinn-product-card::part(price-container){align-self:center}:host(.continuity) vviinn-product-card::part(title),:host(.continuity) vviinn-product-card::part(brand),:host(.continuity) vviinn-product-card::part(type),:host(.continuity) vviinn-product-card::part(deeplink){text-align:left;max-width:unset;align-self:start}";
|
|
1414
|
+
const vviinnVprWidgetCss = ":host{display:grid;grid-gap:1rem;width:100%}:host(:not(.loaded)){position:absolute;visibility:hidden}:host(.grid) vviinn-product-card::part(image){border:1px solid #dddddd;width:100%}:host(.set) vviinn-carousel{overflow-x:auto}:host(.set) vviinn-carousel::-webkit-scrollbar{display:none}.widget-header{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:center}.widget-header h3{margin-top:8px;margin-bottom:0;font-size:14px;font-weight:400;line-height:20px}.update-button{display:flex;align-items:center;justify-content:center;color:#525252;gap:8px;padding:8px 10px;background:rgb(244, 244, 244);border:none;cursor:pointer}.update-button:hover{background:rgb(234, 234, 234)}.update-button svg{color:#6f6f6f}h2{margin:0}vviinn-product-card::part(price-container){align-self:flex-start;text-align:left;display:flex}.results{display:grid;grid-gap:1rem}.no-result-text{font-size:20px}.visually-hidden{position:absolute;top:0;left:0;z-index:-1;height:0;width:0}h2{margin:0}:host(.grid) h2{justify-content:center}:host(.grid) vviinn-product-card::part(image){min-width:100%}:host(.grid) vviinn-product-card::part(image-link){width:100%}:host(.grid) vviinn-product-card::part(title),:host(.grid) vviinn-product-card::part(brand),:host(.grid) vviinn-product-card::part(type){text-align:center}:host(.grid) vviinn-product-card::part(price-container){align-self:center}:host(.continuity) vviinn-product-card::part(title),:host(.continuity) vviinn-product-card::part(brand),:host(.continuity) vviinn-product-card::part(type),:host(.continuity) vviinn-product-card::part(deeplink){text-align:left;max-width:unset;align-self:start}";
|
|
1406
1415
|
|
|
1407
1416
|
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
1408
1417
|
var t = {};
|
|
@@ -1546,7 +1555,7 @@ const VviinnVprWidget = class {
|
|
|
1546
1555
|
async componentWillLoad() {
|
|
1547
1556
|
await i18next.instance.init({
|
|
1548
1557
|
lng: this.locale,
|
|
1549
|
-
fallbackLng: "
|
|
1558
|
+
fallbackLng: "en",
|
|
1550
1559
|
resources,
|
|
1551
1560
|
});
|
|
1552
1561
|
if (this.excluded) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const _package = require('./package-
|
|
6
|
+
const _package = require('./package-504b33d0.js');
|
|
7
7
|
const VisualSearchIcon = require('./VisualSearchIcon-1180d079.js');
|
|
8
8
|
|
|
9
9
|
const vviinnVprButtonCss = ":host{display:block}";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
|
-
const _package = require('./package-
|
|
6
|
+
const _package = require('./package-504b33d0.js');
|
|
7
7
|
const customizedSlots = require('./customized-slots-1b59bd38.js');
|
|
8
8
|
const constants = require('./constants-7684cbfc.js');
|
|
9
9
|
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const index = require('./index-5619b5ec.js');
|
|
6
6
|
const search_store = require('./search.store-0b319593.js');
|
|
7
7
|
const i18next = require('./i18next-74ff3413.js');
|
|
8
|
-
const _package = require('./package-
|
|
8
|
+
const _package = require('./package-504b33d0.js');
|
|
9
9
|
const customizedSlots = require('./customized-slots-1b59bd38.js');
|
|
10
10
|
const index$1 = require('./index-279a6a0f.js');
|
|
11
11
|
const constants = require('./constants-7684cbfc.js');
|
|
@@ -409,7 +409,7 @@ const VviinnVpsWidget = class {
|
|
|
409
409
|
async componentWillLoad() {
|
|
410
410
|
await i18next.instance.init({
|
|
411
411
|
lng: this.locale,
|
|
412
|
-
fallbackLng: "
|
|
412
|
+
fallbackLng: "en",
|
|
413
413
|
resources,
|
|
414
414
|
});
|
|
415
415
|
customizedSlots.slotChangeListener(this, this.el);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const COLUMNS_NUMBER_CSS_VAR = "--vviinn-carousel-columns-internal";
|
|
2
2
|
export const CAROUSEL_WIDTH_CSS_VAR = "--vviinn-carousel-content-width";
|
|
3
3
|
export const CAROUSEL_IMAGE_WIDTH_CSS_VAR = "--vviinn-carousel-image-width";
|
|
4
|
+
export const SET_MODE_IMAGE_WIDTH = "--vviinn-set-mode-image-width";
|
|
4
5
|
export const CONTENT_GROUP_CSS_CLASS = "items-group";
|
|
5
6
|
export const SET_MODE_INITIAL_DISCOUNT = 5;
|
|
6
7
|
export const SET_MODE_MAX_DISCOUNT = 15;
|
|
@@ -1,42 +1,14 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
--vviinn-progressbar-width: 0;
|
|
3
|
-
--vviinn-carousel-item-width: 150px;
|
|
4
3
|
--vviinn-carousel-columns-internal: var(--vviinn-carousel-columns, 4);
|
|
5
|
-
--vviinn-carousel-image-width-system: 140px;
|
|
6
4
|
}
|
|
7
5
|
|
|
8
6
|
.body {
|
|
9
7
|
display: flex;
|
|
10
8
|
position: relative;
|
|
11
|
-
width: var(--vviinn-carousel-content-width);
|
|
12
9
|
flex-direction: column;
|
|
13
10
|
}
|
|
14
11
|
|
|
15
|
-
.body.set {
|
|
16
|
-
justify-content: space-between;
|
|
17
|
-
overflow-x: auto;
|
|
18
|
-
margin-left: auto;
|
|
19
|
-
display: flex;
|
|
20
|
-
flex-direction: row;
|
|
21
|
-
gap: 112px;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.body.set::-webkit-scrollbar {
|
|
25
|
-
display: none;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
@media (max-width: 768px) {
|
|
29
|
-
.body.set {
|
|
30
|
-
gap: 40px;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.body.set .content {
|
|
35
|
-
max-width: -moz-fit-content;
|
|
36
|
-
max-width: fit-content;
|
|
37
|
-
overflow: unset;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
12
|
.bullets {
|
|
41
13
|
margin-top: 16px;
|
|
42
14
|
display: flex;
|
|
@@ -77,10 +49,6 @@
|
|
|
77
49
|
padding-bottom: 16px;
|
|
78
50
|
}
|
|
79
51
|
|
|
80
|
-
.content.set {
|
|
81
|
-
grid-gap: 20px;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
52
|
.content.left > * {
|
|
85
53
|
scroll-snap-align: start;
|
|
86
54
|
}
|
|
@@ -152,3 +120,31 @@ vviinn-product-card::part(price-container) {
|
|
|
152
120
|
grid-template-columns: repeat(2, 1fr);
|
|
153
121
|
}
|
|
154
122
|
}
|
|
123
|
+
|
|
124
|
+
.body.set {
|
|
125
|
+
max-width: 100%;
|
|
126
|
+
justify-content: space-between;
|
|
127
|
+
margin-left: auto;
|
|
128
|
+
display: flex;
|
|
129
|
+
flex-direction: row;
|
|
130
|
+
gap: 112px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.body.set::-webkit-scrollbar {
|
|
134
|
+
display: none;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@media (max-width: 768px) {
|
|
138
|
+
.body.set {
|
|
139
|
+
gap: 40px;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.content.set {
|
|
144
|
+
grid-gap: 20px;
|
|
145
|
+
height: -moz-fit-content;
|
|
146
|
+
height: fit-content;
|
|
147
|
+
max-width: -moz-fit-content;
|
|
148
|
+
max-width: fit-content;
|
|
149
|
+
overflow: unset;
|
|
150
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Host, h, } from "@stencil/core";
|
|
2
2
|
import { chunksOf } from "fp-ts/lib/Array";
|
|
3
3
|
import { ChevronIcon } from "../vviinn-icons";
|
|
4
|
-
import { CAROUSEL_IMAGE_WIDTH_CSS_VAR, CAROUSEL_WIDTH_CSS_VAR, COLUMNS_NUMBER_CSS_VAR, CONTENT_GROUP_CSS_CLASS, SET_MODE_DISCOUNT_STEP, SET_MODE_INITIAL_DISCOUNT, SET_MODE_MAX_DISCOUNT, } from "./constants";
|
|
4
|
+
import { CAROUSEL_IMAGE_WIDTH_CSS_VAR, CAROUSEL_WIDTH_CSS_VAR, COLUMNS_NUMBER_CSS_VAR, CONTENT_GROUP_CSS_CLASS, SET_MODE_DISCOUNT_STEP, SET_MODE_IMAGE_WIDTH, SET_MODE_INITIAL_DISCOUNT, SET_MODE_MAX_DISCOUNT, } from "./constants";
|
|
5
5
|
import { calculateDiscount } from "../../utils/number";
|
|
6
6
|
/**
|
|
7
7
|
* @part carousel-button
|
|
@@ -12,6 +12,7 @@ export class VviinnCarousel {
|
|
|
12
12
|
this.resizeObserver = new ResizeObserver(() => this.handleResize());
|
|
13
13
|
this.defaultAnimationInterval = 2000;
|
|
14
14
|
this.mutationObserver = new MutationObserver(() => this.cloneSlottedContent());
|
|
15
|
+
this.handleWindowResize = () => this.setImageWidthSetMode("100%");
|
|
15
16
|
this.isLastGroup = () => this.activeContentGroup === this.getContentGroups().length - 1 &&
|
|
16
17
|
this.isGridMode;
|
|
17
18
|
this.isFirstGroup = () => this.activeContentGroup === 0 && this.isGridMode;
|
|
@@ -23,10 +24,12 @@ export class VviinnCarousel {
|
|
|
23
24
|
if (recommendationIndex + step < this.recommendations.length) {
|
|
24
25
|
newCrossSellingRecommendations[crossSellingIndex] =
|
|
25
26
|
this.recommendations[recommendationIndex + step];
|
|
27
|
+
this.crossSellingRecommendations = [...newCrossSellingRecommendations];
|
|
26
28
|
let element = this.el.querySelector(`[data-id="${productId}"]`);
|
|
27
29
|
const button = element.shadowRoot.querySelector(".update-button");
|
|
28
30
|
button === null || button === void 0 ? void 0 : button.classList.add("hidden");
|
|
29
|
-
|
|
31
|
+
const imageWidth = element.getBoundingClientRect().width;
|
|
32
|
+
this.setImageWidthSetMode(`${imageWidth}px`);
|
|
30
33
|
const animationTimer = setTimeout(() => {
|
|
31
34
|
if (recommendationIndex + step * 2 <= this.recommendations.length - 1) {
|
|
32
35
|
button === null || button === void 0 ? void 0 : button.classList.remove("hidden");
|
|
@@ -64,6 +67,7 @@ export class VviinnCarousel {
|
|
|
64
67
|
this.isContinuityMode = this.mode === "continuity";
|
|
65
68
|
const columnsNumber = this.getColumnsNumber();
|
|
66
69
|
if (this.isSetMode) {
|
|
70
|
+
window.addEventListener("resize", this.handleWindowResize);
|
|
67
71
|
this.sourceProduct = this.recommendations[0];
|
|
68
72
|
this.recommendations = this.recommendations.slice(1);
|
|
69
73
|
}
|
|
@@ -73,6 +77,7 @@ export class VviinnCarousel {
|
|
|
73
77
|
}
|
|
74
78
|
disconnectedCallback() {
|
|
75
79
|
this.resizeObserver.disconnect();
|
|
80
|
+
window.removeEventListener("resize", this.handleWindowResize);
|
|
76
81
|
}
|
|
77
82
|
componentDidLoad() {
|
|
78
83
|
this.setWidth();
|
|
@@ -117,6 +122,9 @@ export class VviinnCarousel {
|
|
|
117
122
|
: widthInDocument;
|
|
118
123
|
this.el.style.setProperty(CAROUSEL_IMAGE_WIDTH_CSS_VAR, `${itemWidth}px`);
|
|
119
124
|
}
|
|
125
|
+
setImageWidthSetMode(width) {
|
|
126
|
+
this.el.style.setProperty(SET_MODE_IMAGE_WIDTH, width);
|
|
127
|
+
}
|
|
120
128
|
getContentClassMap() {
|
|
121
129
|
return {
|
|
122
130
|
content: true,
|
|
@@ -254,7 +262,7 @@ export class VviinnCarousel {
|
|
|
254
262
|
const salePrice = this.isSetMode
|
|
255
263
|
? setModeDiscount
|
|
256
264
|
: recommendation.price.sale;
|
|
257
|
-
return (h("vviinn-product-card", { part: "product-part", productId: recommendation.productId, productTitle: recommendation.title, productType: recommendation.productType, deeplink: recommendation.deeplink, image: recommendation.image.thumbnail, brand: recommendation.brand, imageWidth: this.imageWidth, imageRatio: 1, price: recommendation.price.actual, salePrice: salePrice, responsive: this.isGridMode
|
|
265
|
+
return (h("vviinn-product-card", { part: "product-part", productId: recommendation.productId, productTitle: recommendation.title, productType: recommendation.productType, deeplink: recommendation.deeplink, image: recommendation.image.thumbnail, brand: recommendation.brand, imageWidth: this.imageWidth, imageRatio: 1, price: recommendation.price.actual, salePrice: salePrice, responsive: this.isGridMode, dimmedBackground: this.isContinuityMode || this.isSetMode, campaignTypeId: this.campaignTypeId, index: rank, widgetElementId: this.widgetElementId, widgetVersion: this.widgetVersion, addToBasketShow: this.addToBasketShow, mode: this.mode, "data-id": recommendation.productId, updatingAllCards: this.updatingAllCards, defaultAnimationInterval: this.defaultAnimationInterval, updateButtonLocation: this.updateButtonLocation, appliedDiscountPercentage: appliedDiscount, currentDiscountPercentage: this.setModeDiscount }));
|
|
258
266
|
}
|
|
259
267
|
renderRecommendationGroup(elements) {
|
|
260
268
|
return (h("div", { class: CONTENT_GROUP_CSS_CLASS, part: "items-group" }, ...elements));
|
|
@@ -100,9 +100,7 @@ picture::before {
|
|
|
100
100
|
position: absolute;
|
|
101
101
|
top: 8px;
|
|
102
102
|
right: 8px;
|
|
103
|
-
|
|
104
|
-
align-items: center;
|
|
105
|
-
justify-content: center;
|
|
103
|
+
padding: 6px;
|
|
106
104
|
width: 32px;
|
|
107
105
|
height: 32px;
|
|
108
106
|
z-index: 1;
|
|
@@ -114,6 +112,11 @@ picture::before {
|
|
|
114
112
|
cursor: pointer;
|
|
115
113
|
}
|
|
116
114
|
|
|
115
|
+
.update-button svg {
|
|
116
|
+
width: 20px;
|
|
117
|
+
height: 20px;
|
|
118
|
+
}
|
|
119
|
+
|
|
117
120
|
.update-button::after {
|
|
118
121
|
content: "";
|
|
119
122
|
position: absolute;
|
|
@@ -172,10 +175,6 @@ picture::before {
|
|
|
172
175
|
mix-blend-mode: multiply;
|
|
173
176
|
}
|
|
174
177
|
|
|
175
|
-
:host(.set-mode) {
|
|
176
|
-
line-height: 20px;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
178
|
:host(.animated) picture::after {
|
|
180
179
|
mix-blend-mode: normal;
|
|
181
180
|
}
|
|
@@ -199,6 +198,12 @@ picture::before {
|
|
|
199
198
|
display: none;
|
|
200
199
|
}
|
|
201
200
|
|
|
201
|
+
:host(.set-mode) {
|
|
202
|
+
line-height: 20px;
|
|
203
|
+
align-items: flex-start;
|
|
204
|
+
height: auto;
|
|
205
|
+
}
|
|
206
|
+
|
|
202
207
|
:host(.set-mode) .basket-button {
|
|
203
208
|
display: flex;
|
|
204
209
|
gap: 8px;
|
|
@@ -211,24 +216,30 @@ picture::before {
|
|
|
211
216
|
color: #525252;
|
|
212
217
|
}
|
|
213
218
|
|
|
214
|
-
:host(.set-mode) .
|
|
215
|
-
|
|
216
|
-
text-overflow: ellipsis;
|
|
217
|
-
overflow: hidden;
|
|
218
|
-
white-space: nowrap;
|
|
219
|
+
:host(.set-mode:not(.animated)) .basket-button {
|
|
220
|
+
margin-top: auto;
|
|
219
221
|
}
|
|
220
222
|
|
|
221
|
-
:host(.set-mode) {
|
|
222
|
-
|
|
223
|
+
:host(.set-mode) .basket-button:hover {
|
|
224
|
+
background-color: rgb(234, 234, 234);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
:host(.set-mode) .title {
|
|
228
|
+
font-weight: 400;
|
|
223
229
|
}
|
|
224
230
|
|
|
225
231
|
:host(.set-mode) .image {
|
|
232
|
+
width: var(--vviinn-set-mode-image-width, 100%);
|
|
233
|
+
height: auto;
|
|
226
234
|
border: none;
|
|
235
|
+
aspect-ratio: 1;
|
|
227
236
|
min-width: var(--min-image-size-set-mode);
|
|
228
237
|
min-height: var(--min-image-size-set-mode);
|
|
229
238
|
}
|
|
230
239
|
|
|
231
240
|
:host(.set-mode.product-card--source) {
|
|
241
|
+
height: -moz-fit-content;
|
|
242
|
+
height: fit-content;
|
|
232
243
|
position: relative;
|
|
233
244
|
flex-grow: 1;
|
|
234
245
|
}
|
|
@@ -280,3 +291,15 @@ picture::before {
|
|
|
280
291
|
background-color: rgba(244, 244, 244);
|
|
281
292
|
}
|
|
282
293
|
}
|
|
294
|
+
|
|
295
|
+
.discount-label {
|
|
296
|
+
position: absolute;
|
|
297
|
+
left: 0;
|
|
298
|
+
top: 13px;
|
|
299
|
+
line-height: 20px;
|
|
300
|
+
padding: 2px 4px;
|
|
301
|
+
border-radius: 0px 4px 4px 0px;
|
|
302
|
+
color: white;
|
|
303
|
+
background-color: #ff3944;
|
|
304
|
+
letter-spacing: 0.5px;
|
|
305
|
+
}
|
|
@@ -159,7 +159,7 @@ export class VviinnProductCard {
|
|
|
159
159
|
dimmed: this.dimmedBackground,
|
|
160
160
|
animated: this.isTransitioning,
|
|
161
161
|
"set-mode": this.isSetMode,
|
|
162
|
-
}, exportparts: "brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button, update-button-item" }, h(Linked, { deeplink: this.deeplink, part: "image-link" }, this.renderImage()), this.isTransitioning ? (h(Fragment, null, h("vviinn-skeleton", { height: 20 }), h("vviinn-skeleton", { height: 20, halfWidth: true }))) : (h(Fragment, null, h(Linked, { deeplink: this.deeplink, part: "deeplink" }, h("span", { class: "title", part: "title" }, this.productTitle)), h("span", { class: "brand", part: "brand" }, this.brand), h("span", { class: "type", part: "type" }, this.productType), h(Price, { prefix: (_a = this.pricePrefix) !== null && _a !== void 0 ? _a : state.pricePrefix, currency: (_b = this.currency) !== null && _b !== void 0 ? _b : state.currencySign, price: this.price, salePrice: this.salePrice, locale: (_c = this.locale) !== null && _c !== void 0 ? _c : state.locale }))), (this.addToBasketShow || this.isSetMode) && (h(Fragment, null, this.isTransitioning ? (h("vviinn-skeleton", { height: 44 })) : (h("button", { class: {
|
|
162
|
+
}, exportparts: "brand, currency, deeplink, image, image-link, price-amount-sale, price-amount-outdated, price-amount-regular, price-container, price-outdated, price-regular, price-sale, price-prefix, title, basket-button, update-button-item" }, h(Linked, { deeplink: this.deeplink, part: "image-link" }, this.renderImage()), this.isTransitioning ? (h(Fragment, null, h("vviinn-skeleton", { height: 20 }), h("vviinn-skeleton", { height: 20, halfWidth: true }))) : (h(Fragment, null, h(Linked, { deeplink: this.deeplink, part: "deeplink" }, h("span", { class: "title", part: "title" }, this.productTitle)), h("span", { class: "brand", part: "brand" }, this.brand), h("span", { class: "type", part: "type" }, this.productType), h(Price, { prefix: (_a = this.pricePrefix) !== null && _a !== void 0 ? _a : state.pricePrefix, currency: (_b = this.currency) !== null && _b !== void 0 ? _b : state.currencySign, price: this.price, salePrice: this.salePrice, locale: (_c = this.locale) !== null && _c !== void 0 ? _c : state.locale }), this.isSetMode && !this.appliedDiscountPercentage && (h("div", { class: "discount-label" }, `-${this.currentDiscountPercentage}%`)))), (this.addToBasketShow || this.isSetMode) && (h(Fragment, null, this.isTransitioning ? (h("vviinn-skeleton", { height: 44 })) : (h("button", { class: {
|
|
163
163
|
"basket-button": true,
|
|
164
164
|
"basket-button-grid": this.isGridMode || this.isSetMode,
|
|
165
165
|
"basket-button-continuity ": this.isContinuityMode,
|