@colijnit/product 261.20.7 → 261.20.10
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/fesm2022/colijnit-product.mjs +221 -172
- package/fesm2022/colijnit-product.mjs.map +1 -1
- package/index.d.ts +11 -6
- package/package.json +1 -1
|
@@ -34,8 +34,8 @@ class Version {
|
|
|
34
34
|
constructor() {
|
|
35
35
|
this.name = "@colijnit/product";
|
|
36
36
|
this.description = "Product detail page project for iOne";
|
|
37
|
-
this.symVer = "261.20.
|
|
38
|
-
this.publishDate = "
|
|
37
|
+
this.symVer = "261.20.10";
|
|
38
|
+
this.publishDate = "3-7-2026, 10:01:50";
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -962,17 +962,21 @@ class ImageCarouselComponent {
|
|
|
962
962
|
return this._currentIndex;
|
|
963
963
|
}
|
|
964
964
|
set currentIndex(value) {
|
|
965
|
-
this._currentIndex = value;
|
|
965
|
+
this._currentIndex = Math.max(0, Math.min(value, this.images.length - 1));
|
|
966
966
|
this._scrollCarouselToIndex();
|
|
967
|
+
setTimeout(() => this.scrollActiveThumbIntoView(), 0);
|
|
967
968
|
}
|
|
968
|
-
constructor(iconCacheService, _ione, _appEventService, _changeDetector, _domSanitizer) {
|
|
969
|
+
constructor(iconCacheService, _ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
|
|
969
970
|
this.iconCacheService = iconCacheService;
|
|
970
971
|
this._ione = _ione;
|
|
971
972
|
this._appEventService = _appEventService;
|
|
972
973
|
this._changeDetector = _changeDetector;
|
|
973
974
|
this._domSanitizer = _domSanitizer;
|
|
975
|
+
this.iconCache = iconCache;
|
|
974
976
|
this.icons = IconEnum;
|
|
975
977
|
this.isPopupOpen = false;
|
|
978
|
+
this.canScrollThumbsLeft = false;
|
|
979
|
+
this.canScrollThumbsRight = false;
|
|
976
980
|
this.showRefresh = false;
|
|
977
981
|
this.resizing = false;
|
|
978
982
|
this.imageViewModels = [];
|
|
@@ -981,6 +985,7 @@ class ImageCarouselComponent {
|
|
|
981
985
|
this._images = [];
|
|
982
986
|
this._subs = [];
|
|
983
987
|
this._resizeCanvasHeight = 500;
|
|
988
|
+
this.icon = IconEnum;
|
|
984
989
|
this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
|
|
985
990
|
this.showLoader = true;
|
|
986
991
|
this._changeDetector.detectChanges();
|
|
@@ -1008,6 +1013,7 @@ class ImageCarouselComponent {
|
|
|
1008
1013
|
}
|
|
1009
1014
|
handleThumbClick(index) {
|
|
1010
1015
|
this.currentIndex = index;
|
|
1016
|
+
setTimeout(() => this.scrollActiveThumbIntoView(), 0);
|
|
1011
1017
|
}
|
|
1012
1018
|
onForceRenderImage() {
|
|
1013
1019
|
this._appEventService.onForceRenderImage.next();
|
|
@@ -1024,6 +1030,41 @@ class ImageCarouselComponent {
|
|
|
1024
1030
|
this.selectedImage = undefined;
|
|
1025
1031
|
this._changeDetector.markForCheck();
|
|
1026
1032
|
}
|
|
1033
|
+
scrollThumbs(direction) {
|
|
1034
|
+
const element = this.thumbScroller?.nativeElement;
|
|
1035
|
+
if (!element) {
|
|
1036
|
+
return;
|
|
1037
|
+
}
|
|
1038
|
+
const firstThumb = element.querySelector('.carousel-thumb');
|
|
1039
|
+
const scrollAmount = firstThumb ? firstThumb.offsetWidth * 6 : element.clientWidth;
|
|
1040
|
+
element.scrollBy({
|
|
1041
|
+
left: direction * scrollAmount,
|
|
1042
|
+
behavior: 'smooth'
|
|
1043
|
+
});
|
|
1044
|
+
setTimeout(() => this.updateThumbScrollState(), 250);
|
|
1045
|
+
}
|
|
1046
|
+
scrollActiveThumbIntoView() {
|
|
1047
|
+
const element = this.thumbScroller?.nativeElement;
|
|
1048
|
+
const activeThumb = element?.querySelector('.carousel-thumb.active');
|
|
1049
|
+
activeThumb?.scrollIntoView({
|
|
1050
|
+
behavior: 'smooth',
|
|
1051
|
+
inline: 'nearest',
|
|
1052
|
+
block: 'nearest'
|
|
1053
|
+
});
|
|
1054
|
+
setTimeout(() => this.updateThumbScrollState(), 250);
|
|
1055
|
+
}
|
|
1056
|
+
updateThumbScrollState() {
|
|
1057
|
+
const element = this.thumbScroller?.nativeElement;
|
|
1058
|
+
if (!element) {
|
|
1059
|
+
this.canScrollThumbsLeft = false;
|
|
1060
|
+
this.canScrollThumbsRight = false;
|
|
1061
|
+
return;
|
|
1062
|
+
}
|
|
1063
|
+
this.canScrollThumbsLeft = element.scrollLeft > 0;
|
|
1064
|
+
this.canScrollThumbsRight =
|
|
1065
|
+
element.scrollLeft + element.clientWidth < element.scrollWidth - 1;
|
|
1066
|
+
this._changeDetector.markForCheck();
|
|
1067
|
+
}
|
|
1027
1068
|
_filterValidImages(value) {
|
|
1028
1069
|
if (!value) {
|
|
1029
1070
|
return [];
|
|
@@ -1063,6 +1104,10 @@ class ImageCarouselComponent {
|
|
|
1063
1104
|
this._changeDetector.detectChanges();
|
|
1064
1105
|
});
|
|
1065
1106
|
}
|
|
1107
|
+
this._changeDetector.detectChanges();
|
|
1108
|
+
setTimeout(() => {
|
|
1109
|
+
this.updateThumbScrollState();
|
|
1110
|
+
});
|
|
1066
1111
|
}
|
|
1067
1112
|
_resizeAndSanitizeSource(source, imageViewModel) {
|
|
1068
1113
|
const resizeCanvas = document.createElement('canvas');
|
|
@@ -1139,8 +1184,8 @@ class ImageCarouselComponent {
|
|
|
1139
1184
|
}
|
|
1140
1185
|
}
|
|
1141
1186
|
}
|
|
1142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImageCarouselComponent, deps: [{ token: IconCacheService }, { token: ProductConnectorService }, { token: ProductEventService }, { token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ImageCarouselComponent, isStandalone: false, selector: "app-image-carousel", inputs: { showRefresh: "showRefresh", images: "images" }, host: { listeners: { "document:keydown.escape": "onEsc()", "window:resize": "handleWindowResize()", "swipeleft": "gotoNextSlide()", "swiperight": "gotoPrevSlide()" }, properties: { "class.resizing": "this.resizing" } }, viewQueries: [{ propertyName: "carousel", first: true, predicate: ["carousel"], descendants: true, read: ElementRef }], ngImport: i0, template: `
|
|
1187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImageCarouselComponent, deps: [{ token: IconCacheService }, { token: ProductConnectorService }, { token: ProductEventService }, { token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }, { token: IconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ImageCarouselComponent, isStandalone: false, selector: "app-image-carousel", inputs: { showRefresh: "showRefresh", images: "images" }, host: { listeners: { "document:keydown.escape": "onEsc()", "window:resize": "handleWindowResize()", "swipeleft": "gotoNextSlide()", "swiperight": "gotoPrevSlide()" }, properties: { "class.resizing": "this.resizing" } }, viewQueries: [{ propertyName: "carousel", first: true, predicate: ["carousel"], descendants: true, read: ElementRef }, { propertyName: "thumbScroller", first: true, predicate: ["thumbScroller"], descendants: true, read: ElementRef }], ngImport: i0, template: `
|
|
1144
1189
|
<div id="product_page_carousel">
|
|
1145
1190
|
<div id="product_page_carousel_items">
|
|
1146
1191
|
@if (showLoader) {
|
|
@@ -1174,18 +1219,35 @@ class ImageCarouselComponent {
|
|
|
1174
1219
|
|
|
1175
1220
|
<div id="product_page_carousel_thumbs">
|
|
1176
1221
|
@if (imageViewModels && imageViewModels.length > 1) {
|
|
1177
|
-
<
|
|
1222
|
+
<div class="thumbs-pointer left-point">
|
|
1223
|
+
<co-icon
|
|
1224
|
+
[iconData]="iconCache.getIcon(icon.ArrowPointLeft)"
|
|
1225
|
+
class="thumb-scroller prev"
|
|
1226
|
+
[class.visible]="canScrollThumbsLeft"
|
|
1227
|
+
(click)="scrollThumbs(-1)">
|
|
1228
|
+
</co-icon>
|
|
1229
|
+
</div>
|
|
1230
|
+
|
|
1231
|
+
|
|
1232
|
+
<div #thumbScroller class="thumbs-scroll-container" (scroll)="updateThumbScrollState()">
|
|
1178
1233
|
@for (imageViewModel of imageViewModels; track imageViewModel; let index = $index) {
|
|
1179
|
-
<div class="carousel-thumb"
|
|
1180
|
-
|
|
1181
|
-
<img [src]="imageViewModel.source" (click)="handleThumbClick(index)"/>
|
|
1234
|
+
<div class="carousel-thumb" [class.active]="index === currentIndex">
|
|
1235
|
+
<img [src]="imageViewModel.source" (click)="handleThumbClick(index)" />
|
|
1182
1236
|
</div>
|
|
1183
1237
|
}
|
|
1184
|
-
</
|
|
1238
|
+
</div>
|
|
1239
|
+
<div class="thumbs-pointer right-point">
|
|
1240
|
+
<co-icon
|
|
1241
|
+
[iconData]="iconCache.getIcon(icon.ArrowPointRight)"
|
|
1242
|
+
class="thumb-scroller next"
|
|
1243
|
+
[class.visible]="canScrollThumbsRight"
|
|
1244
|
+
(click)="scrollThumbs(1)">
|
|
1245
|
+
</co-icon>
|
|
1246
|
+
</div>
|
|
1185
1247
|
}
|
|
1186
1248
|
</div>
|
|
1187
1249
|
</div>
|
|
1188
|
-
|
|
1250
|
+
|
|
1189
1251
|
<div cdkOverlayOrigin #trigger="cdkOverlayOrigin"></div>
|
|
1190
1252
|
<ng-template
|
|
1191
1253
|
cdkConnectedOverlay
|
|
@@ -1202,7 +1264,7 @@ class ImageCarouselComponent {
|
|
|
1202
1264
|
</div>
|
|
1203
1265
|
</div>
|
|
1204
1266
|
</ng-template>
|
|
1205
|
-
`, isInline: true, styles: [":host{height:100%;position:relative;min-height:600px}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#4e9b7e;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:460px}#product_page_carousel .carousel-item{max-height:460px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:
|
|
1267
|
+
`, isInline: true, styles: [":host{height:100%;position:relative;min-height:600px}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#4e9b7e;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:460px}#product_page_carousel .carousel-item{max-height:460px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;align-items:center;gap:8px}#product_page_carousel .thumbs-scroll-container{display:flex;gap:8px;overflow-x:auto;scroll-behavior:smooth;max-width:528px;scrollbar-width:none}#product_page_carousel .thumbs-scroll-container::-webkit-scrollbar{display:none}#product_page_carousel .carousel-thumb{flex:0 0 80px}#product_page_carousel .thumb-scroller{display:none;width:28px;height:28px;border:0;cursor:pointer}#product_page_carousel .thumb-scroller.visible{display:block}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4;width:80px;height:80px;align-items:center;display:flex}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{max-height:100%;max-width:100%;object-fit:contain}.image-modal{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.image-modal__content{position:relative;max-width:90vw;max-height:90vh}.image-modal__content img{max-width:90vw;max-height:90vh;object-fit:contain;display:block}.image-modal__close{position:fixed;top:15px;right:30px;background:transparent;border:none;color:#fff;font-size:60px;line-height:1;cursor:pointer}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type: i6.LoaderComponent, selector: "co-loader" }, { kind: "directive", type: i6$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i6$1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1206
1268
|
}
|
|
1207
1269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ImageCarouselComponent, decorators: [{
|
|
1208
1270
|
type: Component,
|
|
@@ -1240,18 +1302,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1240
1302
|
|
|
1241
1303
|
<div id="product_page_carousel_thumbs">
|
|
1242
1304
|
@if (imageViewModels && imageViewModels.length > 1) {
|
|
1243
|
-
<
|
|
1305
|
+
<div class="thumbs-pointer left-point">
|
|
1306
|
+
<co-icon
|
|
1307
|
+
[iconData]="iconCache.getIcon(icon.ArrowPointLeft)"
|
|
1308
|
+
class="thumb-scroller prev"
|
|
1309
|
+
[class.visible]="canScrollThumbsLeft"
|
|
1310
|
+
(click)="scrollThumbs(-1)">
|
|
1311
|
+
</co-icon>
|
|
1312
|
+
</div>
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
<div #thumbScroller class="thumbs-scroll-container" (scroll)="updateThumbScrollState()">
|
|
1244
1316
|
@for (imageViewModel of imageViewModels; track imageViewModel; let index = $index) {
|
|
1245
|
-
<div class="carousel-thumb"
|
|
1246
|
-
|
|
1247
|
-
<img [src]="imageViewModel.source" (click)="handleThumbClick(index)"/>
|
|
1317
|
+
<div class="carousel-thumb" [class.active]="index === currentIndex">
|
|
1318
|
+
<img [src]="imageViewModel.source" (click)="handleThumbClick(index)" />
|
|
1248
1319
|
</div>
|
|
1249
1320
|
}
|
|
1250
|
-
</
|
|
1321
|
+
</div>
|
|
1322
|
+
<div class="thumbs-pointer right-point">
|
|
1323
|
+
<co-icon
|
|
1324
|
+
[iconData]="iconCache.getIcon(icon.ArrowPointRight)"
|
|
1325
|
+
class="thumb-scroller next"
|
|
1326
|
+
[class.visible]="canScrollThumbsRight"
|
|
1327
|
+
(click)="scrollThumbs(1)">
|
|
1328
|
+
</co-icon>
|
|
1329
|
+
</div>
|
|
1251
1330
|
}
|
|
1252
1331
|
</div>
|
|
1253
1332
|
</div>
|
|
1254
|
-
|
|
1333
|
+
|
|
1255
1334
|
<div cdkOverlayOrigin #trigger="cdkOverlayOrigin"></div>
|
|
1256
1335
|
<ng-template
|
|
1257
1336
|
cdkConnectedOverlay
|
|
@@ -1268,10 +1347,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1268
1347
|
</div>
|
|
1269
1348
|
</div>
|
|
1270
1349
|
</ng-template>
|
|
1271
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{height:100%;position:relative;min-height:600px}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#4e9b7e;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:460px}#product_page_carousel .carousel-item{max-height:460px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:
|
|
1272
|
-
}], ctorParameters: () => [{ type: IconCacheService }, { type: ProductConnectorService }, { type: ProductEventService }, { type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }], propDecorators: { carousel: [{
|
|
1350
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{height:100%;position:relative;min-height:600px}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#4e9b7e;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:460px}#product_page_carousel .carousel-item{max-height:460px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;align-items:center;gap:8px}#product_page_carousel .thumbs-scroll-container{display:flex;gap:8px;overflow-x:auto;scroll-behavior:smooth;max-width:528px;scrollbar-width:none}#product_page_carousel .thumbs-scroll-container::-webkit-scrollbar{display:none}#product_page_carousel .carousel-thumb{flex:0 0 80px}#product_page_carousel .thumb-scroller{display:none;width:28px;height:28px;border:0;cursor:pointer}#product_page_carousel .thumb-scroller.visible{display:block}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4;width:80px;height:80px;align-items:center;display:flex}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{max-height:100%;max-width:100%;object-fit:contain}.image-modal{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.image-modal__content{position:relative;max-width:90vw;max-height:90vh}.image-modal__content img{max-width:90vw;max-height:90vh;object-fit:contain;display:block}.image-modal__close{position:fixed;top:15px;right:30px;background:transparent;border:none;color:#fff;font-size:60px;line-height:1;cursor:pointer}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
|
|
1351
|
+
}], ctorParameters: () => [{ type: IconCacheService }, { type: ProductConnectorService }, { type: ProductEventService }, { type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }, { type: IconCacheService }], propDecorators: { carousel: [{
|
|
1273
1352
|
type: ViewChild,
|
|
1274
1353
|
args: ['carousel', { read: ElementRef }]
|
|
1354
|
+
}], thumbScroller: [{
|
|
1355
|
+
type: ViewChild,
|
|
1356
|
+
args: ['thumbScroller', { read: ElementRef }]
|
|
1275
1357
|
}], onEsc: [{
|
|
1276
1358
|
type: HostListener,
|
|
1277
1359
|
args: ['document:keydown.escape']
|
|
@@ -2415,117 +2497,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2415
2497
|
type: Input
|
|
2416
2498
|
}] } });
|
|
2417
2499
|
|
|
2418
|
-
class ProductDialogComponent {
|
|
2419
|
-
showClass() {
|
|
2420
|
-
return true;
|
|
2421
|
-
}
|
|
2422
|
-
constructor(iconCache, _sanitizer, _productConnectorService, _productConnectorAdapterService, _appEventService) {
|
|
2423
|
-
this.iconCache = iconCache;
|
|
2424
|
-
this._sanitizer = _sanitizer;
|
|
2425
|
-
this._productConnectorService = _productConnectorService;
|
|
2426
|
-
this._productConnectorAdapterService = _productConnectorAdapterService;
|
|
2427
|
-
this._appEventService = _appEventService;
|
|
2428
|
-
this.icon = IconEnum;
|
|
2429
|
-
this.closeRelatedPopup = new EventEmitter();
|
|
2430
|
-
this.type = SelectorType;
|
|
2431
|
-
}
|
|
2432
|
-
ngOnInit() {
|
|
2433
|
-
}
|
|
2434
|
-
closeCatalog() {
|
|
2435
|
-
// need to emit close
|
|
2436
|
-
this.closeRelatedPopup.emit(false);
|
|
2437
|
-
}
|
|
2438
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDialogComponent, deps: [{ token: IconCacheService }, { token: i1.DomSanitizer }, { token: ProductConnectorService }, { token: ProductConnectorAdapterService }, { token: ProductEventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2439
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductDialogComponent, isStandalone: false, selector: "co-product-dialog", inputs: { refType: "refType", mainArticle: "mainArticle", articles: "articles" }, outputs: { closeRelatedPopup: "closeRelatedPopup" }, host: { properties: { "class.co-product-dialog": "this.showClass" } }, ngImport: i0, template: `
|
|
2440
|
-
<div class="product-dialog-wrap">
|
|
2441
|
-
<div class="product-dialog-container">
|
|
2442
|
-
<div class="container-header">
|
|
2443
|
-
<div class="header-info">
|
|
2444
|
-
<h3>
|
|
2445
|
-
<co-icon [iconData]="iconCache.getIcon(icon.LinkSimpleRegular)"
|
|
2446
|
-
(click)="closeCatalog()"></co-icon>{{ 'SUGGESTION' | localize }} <b>{{ mainArticle.name }}</b> ({{ mainArticle.articleNr }})
|
|
2447
|
-
</h3>
|
|
2448
|
-
</div>
|
|
2449
|
-
<div class="close-icon" (click)="closeCatalog()">
|
|
2450
|
-
<co-icon class="fullscreen-button"
|
|
2451
|
-
[iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
2452
|
-
(click)="closeCatalog()"></co-icon>
|
|
2453
|
-
</div>
|
|
2454
|
-
</div>
|
|
2455
|
-
<div class="related-product-container">
|
|
2456
|
-
@if (articles) {
|
|
2457
|
-
<app-product-related
|
|
2458
|
-
class="no-padding"
|
|
2459
|
-
[articles]="articles">
|
|
2460
|
-
</app-product-related>
|
|
2461
|
-
}
|
|
2462
|
-
</div>
|
|
2463
|
-
<div class="close-button-container">
|
|
2464
|
-
<button class="ok-button" (click)="closeCatalog()">
|
|
2465
|
-
<co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)"
|
|
2466
|
-
(click)="closeCatalog()"></co-icon>
|
|
2467
|
-
</button>
|
|
2468
|
-
<button class="close-button" (click)="closeCatalog()">
|
|
2469
|
-
<co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
2470
|
-
(click)="closeCatalog()"></co-icon>
|
|
2471
|
-
</button>
|
|
2472
|
-
</div>
|
|
2473
|
-
</div>
|
|
2474
|
-
</div>
|
|
2475
|
-
`, isInline: true, styles: [".product-dialog-wrap{display:flex;justify-content:center;position:absolute;z-index:800;top:0}.product-dialog-wrap .product-dialog-container{background:#fff;min-width:75vw;max-height:90vh;border:1px solid #F8F8F8}.product-dialog-wrap .product-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3{display:flex;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}.product-dialog-wrap .product-dialog-container .container-header .close-icon{cursor:pointer}.product-dialog-wrap .product-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}.product-dialog-wrap .product-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon{height:20px;width:20px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg polygon{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container .ok-button{background:#1a73e8}.product-dialog-wrap .product-dialog-container .close-button-container .close-button{background:#475060}::ng-deep .content-wrapper{width:auto!important}\n"], dependencies: [{ kind: "component", type: ProductRelatedComponent, selector: "app-product-related", inputs: ["refType", "label", "externalSource", "isSmallModus", "createFrozenArticle", "articles"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
2476
|
-
}
|
|
2477
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDialogComponent, decorators: [{
|
|
2478
|
-
type: Component,
|
|
2479
|
-
args: [{ selector: 'co-product-dialog', template: `
|
|
2480
|
-
<div class="product-dialog-wrap">
|
|
2481
|
-
<div class="product-dialog-container">
|
|
2482
|
-
<div class="container-header">
|
|
2483
|
-
<div class="header-info">
|
|
2484
|
-
<h3>
|
|
2485
|
-
<co-icon [iconData]="iconCache.getIcon(icon.LinkSimpleRegular)"
|
|
2486
|
-
(click)="closeCatalog()"></co-icon>{{ 'SUGGESTION' | localize }} <b>{{ mainArticle.name }}</b> ({{ mainArticle.articleNr }})
|
|
2487
|
-
</h3>
|
|
2488
|
-
</div>
|
|
2489
|
-
<div class="close-icon" (click)="closeCatalog()">
|
|
2490
|
-
<co-icon class="fullscreen-button"
|
|
2491
|
-
[iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
2492
|
-
(click)="closeCatalog()"></co-icon>
|
|
2493
|
-
</div>
|
|
2494
|
-
</div>
|
|
2495
|
-
<div class="related-product-container">
|
|
2496
|
-
@if (articles) {
|
|
2497
|
-
<app-product-related
|
|
2498
|
-
class="no-padding"
|
|
2499
|
-
[articles]="articles">
|
|
2500
|
-
</app-product-related>
|
|
2501
|
-
}
|
|
2502
|
-
</div>
|
|
2503
|
-
<div class="close-button-container">
|
|
2504
|
-
<button class="ok-button" (click)="closeCatalog()">
|
|
2505
|
-
<co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)"
|
|
2506
|
-
(click)="closeCatalog()"></co-icon>
|
|
2507
|
-
</button>
|
|
2508
|
-
<button class="close-button" (click)="closeCatalog()">
|
|
2509
|
-
<co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
2510
|
-
(click)="closeCatalog()"></co-icon>
|
|
2511
|
-
</button>
|
|
2512
|
-
</div>
|
|
2513
|
-
</div>
|
|
2514
|
-
</div>
|
|
2515
|
-
`, standalone: false, styles: [".product-dialog-wrap{display:flex;justify-content:center;position:absolute;z-index:800;top:0}.product-dialog-wrap .product-dialog-container{background:#fff;min-width:75vw;max-height:90vh;border:1px solid #F8F8F8}.product-dialog-wrap .product-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3{display:flex;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}.product-dialog-wrap .product-dialog-container .container-header .close-icon{cursor:pointer}.product-dialog-wrap .product-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}.product-dialog-wrap .product-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon{height:20px;width:20px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg polygon{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container .ok-button{background:#1a73e8}.product-dialog-wrap .product-dialog-container .close-button-container .close-button{background:#475060}::ng-deep .content-wrapper{width:auto!important}\n"] }]
|
|
2516
|
-
}], ctorParameters: () => [{ type: IconCacheService }, { type: i1.DomSanitizer }, { type: ProductConnectorService }, { type: ProductConnectorAdapterService }, { type: ProductEventService }], propDecorators: { refType: [{
|
|
2517
|
-
type: Input
|
|
2518
|
-
}], mainArticle: [{
|
|
2519
|
-
type: Input
|
|
2520
|
-
}], articles: [{
|
|
2521
|
-
type: Input
|
|
2522
|
-
}], closeRelatedPopup: [{
|
|
2523
|
-
type: Output
|
|
2524
|
-
}], showClass: [{
|
|
2525
|
-
type: HostBinding,
|
|
2526
|
-
args: ['class.co-product-dialog']
|
|
2527
|
-
}] } });
|
|
2528
|
-
|
|
2529
2500
|
class VectorObject {
|
|
2530
2501
|
}
|
|
2531
2502
|
class RenderParameters {
|
|
@@ -2769,7 +2740,6 @@ class ProductPageComponent {
|
|
|
2769
2740
|
this.icon = IconEnum;
|
|
2770
2741
|
this.createFrozenArticle = true;
|
|
2771
2742
|
this.isReturn = false;
|
|
2772
|
-
this.showRelatedProductsPopup = false;
|
|
2773
2743
|
this.openStockEvent = new EventEmitter();
|
|
2774
2744
|
this.configurable = true;
|
|
2775
2745
|
this.threeD = false;
|
|
@@ -2876,14 +2846,10 @@ class ProductPageComponent {
|
|
|
2876
2846
|
});
|
|
2877
2847
|
}
|
|
2878
2848
|
});
|
|
2879
|
-
this.showRelatedProductsPopup = false;
|
|
2880
2849
|
}
|
|
2881
2850
|
openStock() {
|
|
2882
2851
|
this.openStockEvent.emit();
|
|
2883
2852
|
}
|
|
2884
|
-
handlePopUpChange(event) {
|
|
2885
|
-
this.showRelatedProductsPopup = event;
|
|
2886
|
-
}
|
|
2887
2853
|
handleObjectAddedToScene(build) {
|
|
2888
2854
|
if (this.threeD && this.enableRenderCarousel) {
|
|
2889
2855
|
this._buildResult = build;
|
|
@@ -2927,7 +2893,7 @@ class ProductPageComponent {
|
|
|
2927
2893
|
this._configuringService.renderImage(this._buildResult, renderOptions, false);
|
|
2928
2894
|
}
|
|
2929
2895
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageComponent, deps: [{ token: IconCacheService }, { token: ProductSettingsService }, { token: ProductEventService }, { token: i0.ChangeDetectorRef }, { token: ProductConnectorService }, { token: i5.ConfiguratorEventService }, { token: i5.ConfiguratorConnectorService }, { token: i5.ConfiguringService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2930
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductPageComponent, isStandalone: false, selector: "app-product-page", inputs: { sku: "sku", settings: "settings", externalSource: "externalSource", createFrozenArticle: "createFrozenArticle", isReturn: "isReturn",
|
|
2896
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductPageComponent, isStandalone: false, selector: "app-product-page", inputs: { sku: "sku", settings: "settings", externalSource: "externalSource", createFrozenArticle: "createFrozenArticle", isReturn: "isReturn", enableRenderCarousel: "enableRenderCarousel" }, outputs: { openStockEvent: "openStockEvent" }, host: { properties: { "class.co-product-page": "this.showClass" } }, viewQueries: [{ propertyName: "fullscreenbutton", first: true, predicate: ["fullscreenbutton"], descendants: true, read: ElementRef }], ngImport: i0, template: `
|
|
2931
2897
|
@if (settingsLoaded) {
|
|
2932
2898
|
<div class="page-wrapper">
|
|
2933
2899
|
<div class="page-wrapper-content">
|
|
@@ -3026,8 +2992,7 @@ class ProductPageComponent {
|
|
|
3026
2992
|
[article]="article"
|
|
3027
2993
|
[externalSource]="externalSource"
|
|
3028
2994
|
[isReturn]="isReturn"
|
|
3029
|
-
(startConfiguration)="handleStartConfiguration()"
|
|
3030
|
-
(showRelatedPopup)="handlePopUpChange($event)">
|
|
2995
|
+
(startConfiguration)="handleStartConfiguration()">
|
|
3031
2996
|
</app-product-addtocart>
|
|
3032
2997
|
</div>
|
|
3033
2998
|
}
|
|
@@ -3100,19 +3065,9 @@ class ProductPageComponent {
|
|
|
3100
3065
|
</div>
|
|
3101
3066
|
</div>
|
|
3102
3067
|
</div>
|
|
3103
|
-
@if (showRelatedProductsPopup) {
|
|
3104
|
-
<div>
|
|
3105
|
-
<co-product-dialog
|
|
3106
|
-
[mainArticle]="article"
|
|
3107
|
-
[articles]="article?.relatedArticles"
|
|
3108
|
-
[refType]="1"
|
|
3109
|
-
(closeRelatedPopup)="handlePopUpChange($event)">
|
|
3110
|
-
</co-product-dialog>
|
|
3111
|
-
</div>
|
|
3112
|
-
}
|
|
3113
3068
|
</div>
|
|
3114
3069
|
}
|
|
3115
|
-
`, isInline: true, styles: [".co-product-page .page-wrapper{font-family:Public Sans;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 10px;margin:0 auto}.co-product-page .page-wrapper-content{display:flex;flex-direction:row;margin:0 0 10px;gap:10px}.co-product-page .page-wrapper-content:first-child{margin-top:10px}.co-product-page .page-wrapper-content.no-top-margin{margin-top:0}.co-product-page .swimming-lane{display:flex;box-shadow:1px 1px 4px #0000001a;padding:30px;background:#fff}.co-product-page .page-wrapper-left{display:flex;width:65%;flex-direction:column}.co-product-page .page-wrapper-right{display:flex;width:35%;flex-direction:column}.co-product-page .page-wrapper-right .product-page-scroll-container{max-height:100vh;overflow-y:scroll}.co-product-page .page-wrapper-full{display:flex;width:100%;flex-direction:column}.co-product-page .page-wrapper-66{display:flex;width:60%;flex-direction:column}.co-product-page .page-wrapper-33{display:flex;width:40%;flex-direction:column}.co-product-page .product-action-buttons{position:relative}.co-product-page .product-action-buttons.full-screen{z-index:10}.co-product-page .product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.co-product-page .product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.co-product-page .product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.co-product-page .product-page-block-image .co-configurator-scene{width:100%;height:300px;display:block;position:relative}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container{position:relative;height:650px;width:100%}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer{min-height:0;min-width:0;width:auto;height:auto}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer canvas{width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.hide-3d-scene{visibility:hidden;overflow:hidden;height:0}.co-product-page .product-page-block-image .co-configurator-scene.show-3d-scene{min-height:650px;position:relative}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen{position:fixed;inset:0;width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen .configurator-bundle-container{height:100%}.co-product-page .product-page-block-image .co-configurator-scene canvas{height:100%;width:unset}.co-product-page .product-page-block-image app-image-carousel.show-animated,.co-product-page .product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.co-product-page .product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.co-product-page .product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.co-product-page .product-page-block-description{grid-column:7/12;grid-row:1/1}.co-product-page .product-page-block-additional,.co-product-page .product-page-block-additional-description{width:100%}.co-product-page .product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.co-product-page .product-page-block-price.full{grid-column:1/5}.co-product-page .product-page-block-price .hide-configurator{display:none}.co-product-page .product-page-block-price .show-configurator{display:block}.co-product-page .product-page-block-price .show-configurator .co-lite-selector.floating co-selections-summary{position:relative}.co-product-page .product-page-block-price .show-configurator .co-lite-selector:not(.custom-dimensions).floating co-selections-summary{top:auto;background:none}.co-product-page .product-page-block-price .show-configurator .co-selections-summary .selections-content{gap:10px;box-sizing:border-box;padding:10px}.co-product-page .product-page-block-price .show-configurator .co-product-configurator .product-configurator-container{position:relative;width:auto;top:auto;right:auto;padding-left:0;padding-right:0;height:auto;max-height:100%}.co-product-page .preset-container{display:flex;justify-content:right}.co-product-page .preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.co-product-page .preset-container .save-preset-button:hover{background:#4e9b7e}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#4e9b7e}.co-product-page .addtocart-reserved{grid-column:1/3;grid-row:3/3}.co-product-page .product-page-block-stock{grid-column:1/3;grid-row:4/4}.co-product-page .product-page-block-delivery{grid-column:3/5;grid-row:4/4}.co-product-page ::ng-deep co-scroll-container{overflow:hidden;position:relative}.co-product-page ::ng-deep co-scroll-container .content-wrapper{padding:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer{left:0;top:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.co-product-page .product-page-block-variants{margin:20px 0 0}.co-product-page .product-page-block-variants app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.co-product-page .product-page-block-variants app-product-related>div app-header h3{font-size:14px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container{width:320px;max-width:100%;padding:0 16px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller{width:26px;height:26px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll{left:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll{right:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.co-product-page .product-page-block-variants co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.co-product-page .product-page-block-variants co-tile.small:hover{border-color:#22313c}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper{padding:0}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-top{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-bottom{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-extra-bottom{display:none}.co-product-page .product-page-block-alternatives .co-scroll-container,.co-product-page .product-page-block-alternatives .co-scroll-container .content-wrapper{width:auto}.co-product-page .product-page-block-alternatives .article-wrapper{margin:0 20px 0 0}.co-product-page .product-page-block-alternatives .article-wrapper:last-child{margin:0}.co-product-page .product-page-block-alternatives .co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.co-product-page .product-page-block-alternatives .co-tile:hover{box-shadow:none;border-color:#f6f5f4}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper .tile-bottom{margin:0}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;object-fit:contain;transition:all .2s ease}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom{outline:none;padding:5px 0;background:transparent!important;min-height:60px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button{margin:0 0 5px!important;width:34px;height:34px;border:none;background:#1a73e8;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button .co-icon{width:28px;height:28px;margin:0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main{padding:0 10px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#1a73e8}.co-product-page .product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.co-product-page .product-page-block-properties{grid-column:7/10;grid-row:3/3}.co-product-page .product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.co-product-page .product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.co-product-page .product-page-block-documents{grid-column:2/6;grid-row:5/5}.co-product-page .product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.co-product-page .default-padding{padding-top:20px;padding-bottom:20px}.co-product-page .m-padding{padding-top:15px;padding-bottom:15px}.co-product-page .s-padding{padding-top:5px;padding-bottom:5px}.co-product-page .page-wrapper{max-width:650px}.co-product-page .page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-left,.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.co-product-page .product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){.co-product-page [class*=-padding]{padding-left:0!important;padding-right:0!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"], dependencies: [{ kind: "component", type: ProductSelectorTypeComponent, selector: "app-product-selector-type", inputs: ["show2D", "show3D", "showRenderCarousel", "currentType"], outputs: ["onIconClick", "currentTypeChange"] }, { kind: "component", type: ImageCarouselComponent, selector: "app-image-carousel", inputs: ["showRefresh", "images"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ProductDescriptionComponent, selector: "app-product-description", inputs: ["article", "configuring"] }, { kind: "component", type: ProductAdditionalDescriptionComponent, selector: "app-product-additional-description", inputs: ["article"] }, { kind: "component", type: ProductPriceComponent, selector: "app-product-price", inputs: ["pricing", "configurable"] }, { kind: "component", type: ProductAddtocartComponent, selector: "app-product-addtocart", inputs: ["article", "externalSource", "createFrozenArticle", "configurable", "configuring", "showAddToCart", "isReturn", "fullscreen", "quantity"], outputs: ["startConfiguration", "addToCartClick", "addToQuoteClick", "showRelatedPopup"] }, { kind: "component", type: ProductRelatedComponent, selector: "app-product-related", inputs: ["refType", "label", "externalSource", "isSmallModus", "createFrozenArticle", "articles"] }, { kind: "component", type: ProductStockComponent, selector: "app-product-stock", inputs: ["goodId"], outputs: ["openStockEvent"] }, { kind: "component", type: ProductInfoTabsComponent, selector: "app-product-info-tabs", inputs: ["article"] }, { kind: "component", type: ProductDialogComponent, selector: "co-product-dialog", inputs: ["refType", "mainArticle", "articles"], outputs: ["closeRelatedPopup"] }, { kind: "component", type: RenderCarouselComponent, selector: "app-render-carousel", inputs: ["showRefresh", "article"] }, { kind: "component", type: i5.ConfiguratorComponent, selector: "co-configurator", inputs: ["show", "sku", "instanceId", "settings", "scene", "showLoader", "showProgressBar", "showErrorMessages", "outputErrorMessages", "canCloseConfigurator", "animateSlideout", "showHeaderInformation"], outputs: ["isLoading", "updateProgressBar", "errorMessages", "showChange"] }, { kind: "component", type: i5.ConfiguratorSceneComponent, selector: "co-configurator-scene" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
|
|
3070
|
+
`, isInline: true, styles: [".co-product-page .page-wrapper{font-family:Public Sans;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 10px;margin:0 auto}.co-product-page .page-wrapper-content{display:flex;flex-direction:row;margin:0 0 10px;gap:10px}.co-product-page .page-wrapper-content:first-child{margin-top:10px}.co-product-page .page-wrapper-content.no-top-margin{margin-top:0}.co-product-page .swimming-lane{display:flex;box-shadow:1px 1px 4px #0000001a;padding:30px;background:#fff}.co-product-page .page-wrapper-left{display:flex;width:65%;flex-direction:column}.co-product-page .page-wrapper-right{display:flex;width:35%;flex-direction:column}.co-product-page .page-wrapper-right .product-page-scroll-container{max-height:100vh;overflow-y:scroll}.co-product-page .page-wrapper-full{display:flex;width:100%;flex-direction:column}.co-product-page .page-wrapper-66{display:flex;width:60%;flex-direction:column}.co-product-page .page-wrapper-33{display:flex;width:40%;flex-direction:column}.co-product-page .product-action-buttons{position:relative}.co-product-page .product-action-buttons.full-screen{z-index:10}.co-product-page .product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.co-product-page .product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.co-product-page .product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.co-product-page .product-page-block-image .co-configurator-scene{width:100%;height:300px;display:block;position:relative}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container{position:relative;height:650px;width:100%}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer{min-height:0;min-width:0;width:auto;height:auto}.co-product-page .product-page-block-image .co-configurator-scene .configurator-bundle-container .threedviewer canvas{width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.hide-3d-scene{visibility:hidden;overflow:hidden;height:0}.co-product-page .product-page-block-image .co-configurator-scene.show-3d-scene{min-height:650px;position:relative}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen{position:fixed;inset:0;width:100%;height:100%}.co-product-page .product-page-block-image .co-configurator-scene.show-full-screen .configurator-bundle-container{height:100%}.co-product-page .product-page-block-image .co-configurator-scene canvas{height:100%;width:unset}.co-product-page .product-page-block-image app-image-carousel.show-animated,.co-product-page .product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.co-product-page .product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.co-product-page .product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.co-product-page .product-page-block-description{grid-column:7/12;grid-row:1/1}.co-product-page .product-page-block-additional,.co-product-page .product-page-block-additional-description{width:100%}.co-product-page .product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.co-product-page .product-page-block-price.full{grid-column:1/5}.co-product-page .product-page-block-price .hide-configurator{display:none}.co-product-page .product-page-block-price .show-configurator{display:block}.co-product-page .product-page-block-price .show-configurator .co-lite-selector.floating co-selections-summary{position:relative}.co-product-page .product-page-block-price .show-configurator .co-lite-selector:not(.custom-dimensions).floating co-selections-summary{top:auto;background:none}.co-product-page .product-page-block-price .show-configurator .co-selections-summary .selections-content{gap:10px;box-sizing:border-box;padding:10px}.co-product-page .product-page-block-price .show-configurator .co-product-configurator .product-configurator-container{position:relative;width:auto;top:auto;right:auto;padding-left:0;padding-right:0;height:auto;max-height:100%}.co-product-page .preset-container{display:flex;justify-content:right}.co-product-page .preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.co-product-page .preset-container .save-preset-button:hover{background:#4e9b7e}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#4e9b7e}.co-product-page .addtocart-reserved{grid-column:1/3;grid-row:3/3}.co-product-page .product-page-block-stock{grid-column:1/3;grid-row:4/4}.co-product-page .product-page-block-delivery{grid-column:3/5;grid-row:4/4}.co-product-page ::ng-deep co-scroll-container{overflow:hidden;position:relative}.co-product-page ::ng-deep co-scroll-container .content-wrapper{padding:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer{left:0;top:0}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}.co-product-page ::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.co-product-page .product-page-block-variants{margin:20px 0 0}.co-product-page .product-page-block-variants app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.co-product-page .product-page-block-variants app-product-related>div app-header h3{font-size:14px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container{width:320px;max-width:100%;padding:0 16px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller{width:26px;height:26px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll{left:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll{right:5px}.co-product-page .product-page-block-variants app-product-related>div co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.co-product-page .product-page-block-variants co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.co-product-page .product-page-block-variants co-tile.small:hover{border-color:#22313c}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper{padding:0}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-top{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.co-product-page .product-page-block-variants co-tile.small .tile-wrapper .tile-bottom{display:none}.co-product-page .product-page-block-variants co-tile.small .tile-extra-bottom{display:none}.co-product-page .product-page-block-alternatives .co-scroll-container,.co-product-page .product-page-block-alternatives .co-scroll-container .content-wrapper{width:auto}.co-product-page .product-page-block-alternatives .article-wrapper{margin:0 20px 0 0}.co-product-page .product-page-block-alternatives .article-wrapper:last-child{margin:0}.co-product-page .product-page-block-alternatives .co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.co-product-page .product-page-block-alternatives .co-tile:hover{box-shadow:none;border-color:#f6f5f4}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-wrapper .tile-bottom{margin:0}.co-product-page .product-page-block-alternatives .co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;object-fit:contain;transition:all .2s ease}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.co-product-page .product-page-block-alternatives .co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom{outline:none;padding:5px 0;background:transparent!important;min-height:60px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button{margin:0 0 5px!important;width:34px;height:34px;border:none;background:#1a73e8;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .co-button .co-icon{width:28px;height:28px;margin:0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main{padding:0 10px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.co-product-page .product-page-block-alternatives .co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#1a73e8}.co-product-page .product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.co-product-page .product-page-block-properties{grid-column:7/10;grid-row:3/3}.co-product-page .product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.co-product-page .product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.co-product-page .product-page-block-documents{grid-column:2/6;grid-row:5/5}.co-product-page .product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.co-product-page .default-padding{padding-top:20px;padding-bottom:20px}.co-product-page .m-padding{padding-top:15px;padding-bottom:15px}.co-product-page .s-padding{padding-top:5px;padding-bottom:5px}.co-product-page .page-wrapper{max-width:650px}.co-product-page .page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-left,.co-product-page .page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.co-product-page .product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){.co-product-page [class*=-padding]{padding-left:0!important;padding-right:0!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.co-product-page .product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"], dependencies: [{ kind: "component", type: ProductSelectorTypeComponent, selector: "app-product-selector-type", inputs: ["show2D", "show3D", "showRenderCarousel", "currentType"], outputs: ["onIconClick", "currentTypeChange"] }, { kind: "component", type: ImageCarouselComponent, selector: "app-image-carousel", inputs: ["showRefresh", "images"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "component", type: ProductDescriptionComponent, selector: "app-product-description", inputs: ["article", "configuring"] }, { kind: "component", type: ProductAdditionalDescriptionComponent, selector: "app-product-additional-description", inputs: ["article"] }, { kind: "component", type: ProductPriceComponent, selector: "app-product-price", inputs: ["pricing", "configurable"] }, { kind: "component", type: ProductAddtocartComponent, selector: "app-product-addtocart", inputs: ["article", "externalSource", "createFrozenArticle", "configurable", "configuring", "showAddToCart", "isReturn", "fullscreen", "quantity"], outputs: ["startConfiguration", "addToCartClick", "addToQuoteClick", "showRelatedPopup"] }, { kind: "component", type: ProductRelatedComponent, selector: "app-product-related", inputs: ["refType", "label", "externalSource", "isSmallModus", "createFrozenArticle", "articles"] }, { kind: "component", type: ProductStockComponent, selector: "app-product-stock", inputs: ["goodId"], outputs: ["openStockEvent"] }, { kind: "component", type: ProductInfoTabsComponent, selector: "app-product-info-tabs", inputs: ["article"] }, { kind: "component", type: RenderCarouselComponent, selector: "app-render-carousel", inputs: ["showRefresh", "article"] }, { kind: "component", type: i5.ConfiguratorComponent, selector: "co-configurator", inputs: ["show", "sku", "instanceId", "settings", "scene", "showLoader", "showProgressBar", "showErrorMessages", "outputErrorMessages", "canCloseConfigurator", "animateSlideout", "showHeaderInformation"], outputs: ["isLoading", "updateProgressBar", "errorMessages", "showChange"] }, { kind: "component", type: i5.ConfiguratorSceneComponent, selector: "co-configurator-scene" }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
|
|
3116
3071
|
trigger('toggleFullScreen', [
|
|
3117
3072
|
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
|
|
3118
3073
|
state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
|
|
@@ -3247,8 +3202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3247
3202
|
[article]="article"
|
|
3248
3203
|
[externalSource]="externalSource"
|
|
3249
3204
|
[isReturn]="isReturn"
|
|
3250
|
-
(startConfiguration)="handleStartConfiguration()"
|
|
3251
|
-
(showRelatedPopup)="handlePopUpChange($event)">
|
|
3205
|
+
(startConfiguration)="handleStartConfiguration()">
|
|
3252
3206
|
</app-product-addtocart>
|
|
3253
3207
|
</div>
|
|
3254
3208
|
}
|
|
@@ -3321,16 +3275,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3321
3275
|
</div>
|
|
3322
3276
|
</div>
|
|
3323
3277
|
</div>
|
|
3324
|
-
@if (showRelatedProductsPopup) {
|
|
3325
|
-
<div>
|
|
3326
|
-
<co-product-dialog
|
|
3327
|
-
[mainArticle]="article"
|
|
3328
|
-
[articles]="article?.relatedArticles"
|
|
3329
|
-
[refType]="1"
|
|
3330
|
-
(closeRelatedPopup)="handlePopUpChange($event)">
|
|
3331
|
-
</co-product-dialog>
|
|
3332
|
-
</div>
|
|
3333
|
-
}
|
|
3334
3278
|
</div>
|
|
3335
3279
|
}
|
|
3336
3280
|
`, encapsulation: ViewEncapsulation.None, animations: [
|
|
@@ -3382,8 +3326,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3382
3326
|
type: Input
|
|
3383
3327
|
}], isReturn: [{
|
|
3384
3328
|
type: Input
|
|
3385
|
-
}], showRelatedProductsPopup: [{
|
|
3386
|
-
type: Input
|
|
3387
3329
|
}], enableRenderCarousel: [{
|
|
3388
3330
|
type: Input
|
|
3389
3331
|
}], openStockEvent: [{
|
|
@@ -3496,7 +3438,7 @@ class IoneProductComponent {
|
|
|
3496
3438
|
this.openStockEvent.emit();
|
|
3497
3439
|
}
|
|
3498
3440
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IoneProductComponent, deps: [{ token: ProductEventService }, { token: ProductSettingsService }, { token: ProductConnectorService }, { token: LocalStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3499
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: IoneProductComponent, isStandalone: false, selector: "app-ione-product", inputs: { sku: "sku", isReturn: "isReturn",
|
|
3441
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: IoneProductComponent, isStandalone: false, selector: "app-ione-product", inputs: { sku: "sku", isReturn: "isReturn", enableRenderCarousel: "enableRenderCarousel", settings: "settings", handleAddArticleInternally: "handleAddArticleInternally", handleAddToCartInternally: "handleAddToCartInternally" }, outputs: { onAddToCart: "onAddToCart", forceRenderImage: "forceRenderImage", getRenderForRenderCarousel: "getRenderForRenderCarousel", onAlternativeClick: "onAlternativeClick", onArticleInfoReceived: "onArticleInfoReceived", onArticleReceived: "onArticleReceived", onSelectionsReceived: "onSelectionsReceived", onAddToQuote: "onAddToQuote", openStockEvent: "openStockEvent", onAnswersAvailable: "onAnswersAvailable" }, providers: [
|
|
3500
3442
|
ProductSettingsService,
|
|
3501
3443
|
ProductConnectorService,
|
|
3502
3444
|
ProductEventService,
|
|
@@ -3507,12 +3449,11 @@ class IoneProductComponent {
|
|
|
3507
3449
|
[createFrozenArticle]="handleAddArticleInternally"
|
|
3508
3450
|
[isReturn]="isReturn"
|
|
3509
3451
|
[sku]="sku"
|
|
3510
|
-
[showRelatedProductsPopup]="showRelatedProductsPopup"
|
|
3511
3452
|
[enableRenderCarousel]="enableRenderCarousel"
|
|
3512
3453
|
(openStockEvent)="openStock()"
|
|
3513
3454
|
></app-product-page>
|
|
3514
3455
|
}
|
|
3515
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ProductPageComponent, selector: "app-product-page", inputs: ["sku", "settings", "externalSource", "createFrozenArticle", "isReturn", "
|
|
3456
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: ProductPageComponent, selector: "app-product-page", inputs: ["sku", "settings", "externalSource", "createFrozenArticle", "isReturn", "enableRenderCarousel"], outputs: ["openStockEvent"] }] }); }
|
|
3516
3457
|
}
|
|
3517
3458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: IoneProductComponent, decorators: [{
|
|
3518
3459
|
type: Component,
|
|
@@ -3522,7 +3463,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3522
3463
|
[createFrozenArticle]="handleAddArticleInternally"
|
|
3523
3464
|
[isReturn]="isReturn"
|
|
3524
3465
|
[sku]="sku"
|
|
3525
|
-
[showRelatedProductsPopup]="showRelatedProductsPopup"
|
|
3526
3466
|
[enableRenderCarousel]="enableRenderCarousel"
|
|
3527
3467
|
(openStockEvent)="openStock()"
|
|
3528
3468
|
></app-product-page>
|
|
@@ -3537,8 +3477,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3537
3477
|
type: Input
|
|
3538
3478
|
}], isReturn: [{
|
|
3539
3479
|
type: Input
|
|
3540
|
-
}], showRelatedProductsPopup: [{
|
|
3541
|
-
type: Input
|
|
3542
3480
|
}], enableRenderCarousel: [{
|
|
3543
3481
|
type: Input
|
|
3544
3482
|
}], settings: [{
|
|
@@ -4047,6 +3985,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4047
3985
|
}]
|
|
4048
3986
|
}] });
|
|
4049
3987
|
|
|
3988
|
+
class ProductDialogComponent {
|
|
3989
|
+
showClass() {
|
|
3990
|
+
return true;
|
|
3991
|
+
}
|
|
3992
|
+
constructor(iconCache, _sanitizer, _productConnectorService, _productConnectorAdapterService, _appEventService) {
|
|
3993
|
+
this.iconCache = iconCache;
|
|
3994
|
+
this._sanitizer = _sanitizer;
|
|
3995
|
+
this._productConnectorService = _productConnectorService;
|
|
3996
|
+
this._productConnectorAdapterService = _productConnectorAdapterService;
|
|
3997
|
+
this._appEventService = _appEventService;
|
|
3998
|
+
this.icon = IconEnum;
|
|
3999
|
+
this.closeRelatedPopup = new EventEmitter();
|
|
4000
|
+
this.type = SelectorType;
|
|
4001
|
+
}
|
|
4002
|
+
ngOnInit() {
|
|
4003
|
+
}
|
|
4004
|
+
closeCatalog() {
|
|
4005
|
+
// need to emit close
|
|
4006
|
+
this.closeRelatedPopup.emit(false);
|
|
4007
|
+
}
|
|
4008
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDialogComponent, deps: [{ token: IconCacheService }, { token: i1.DomSanitizer }, { token: ProductConnectorService }, { token: ProductConnectorAdapterService }, { token: ProductEventService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4009
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ProductDialogComponent, isStandalone: false, selector: "co-product-dialog", inputs: { refType: "refType", mainArticle: "mainArticle", articles: "articles" }, outputs: { closeRelatedPopup: "closeRelatedPopup" }, host: { properties: { "class.co-product-dialog": "this.showClass" } }, ngImport: i0, template: `
|
|
4010
|
+
<div class="product-dialog-wrap">
|
|
4011
|
+
<div class="product-dialog-container">
|
|
4012
|
+
<div class="container-header">
|
|
4013
|
+
<div class="header-info">
|
|
4014
|
+
<h3>
|
|
4015
|
+
<co-icon [iconData]="iconCache.getIcon(icon.LinkSimpleRegular)"
|
|
4016
|
+
(click)="closeCatalog()"></co-icon>{{ 'SUGGESTION' | localize }} <b>{{ mainArticle.name }}</b> ({{ mainArticle.articleNr }})
|
|
4017
|
+
</h3>
|
|
4018
|
+
</div>
|
|
4019
|
+
<div class="close-icon" (click)="closeCatalog()">
|
|
4020
|
+
<co-icon class="fullscreen-button"
|
|
4021
|
+
[iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
4022
|
+
(click)="closeCatalog()"></co-icon>
|
|
4023
|
+
</div>
|
|
4024
|
+
</div>
|
|
4025
|
+
<div class="related-product-container">
|
|
4026
|
+
@if (articles) {
|
|
4027
|
+
<app-product-related
|
|
4028
|
+
class="no-padding"
|
|
4029
|
+
[articles]="articles">
|
|
4030
|
+
</app-product-related>
|
|
4031
|
+
}
|
|
4032
|
+
</div>
|
|
4033
|
+
<div class="close-button-container">
|
|
4034
|
+
<button class="ok-button" (click)="closeCatalog()">
|
|
4035
|
+
<co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)"
|
|
4036
|
+
(click)="closeCatalog()"></co-icon>
|
|
4037
|
+
</button>
|
|
4038
|
+
<button class="close-button" (click)="closeCatalog()">
|
|
4039
|
+
<co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
4040
|
+
(click)="closeCatalog()"></co-icon>
|
|
4041
|
+
</button>
|
|
4042
|
+
</div>
|
|
4043
|
+
</div>
|
|
4044
|
+
</div>
|
|
4045
|
+
`, isInline: true, styles: [".product-dialog-wrap{display:flex;justify-content:center;position:absolute;z-index:800;top:0}.product-dialog-wrap .product-dialog-container{background:#fff;min-width:75vw;max-height:90vh;border:1px solid #F8F8F8}.product-dialog-wrap .product-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3{display:flex;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}.product-dialog-wrap .product-dialog-container .container-header .close-icon{cursor:pointer}.product-dialog-wrap .product-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}.product-dialog-wrap .product-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon{height:20px;width:20px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg polygon{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container .ok-button{background:#1a73e8}.product-dialog-wrap .product-dialog-container .close-button-container .close-button{background:#475060}::ng-deep .content-wrapper{width:auto!important}\n"], dependencies: [{ kind: "component", type: ProductRelatedComponent, selector: "app-product-related", inputs: ["refType", "label", "externalSource", "isSmallModus", "createFrozenArticle", "articles"] }, { kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
|
|
4046
|
+
}
|
|
4047
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDialogComponent, decorators: [{
|
|
4048
|
+
type: Component,
|
|
4049
|
+
args: [{ selector: 'co-product-dialog', template: `
|
|
4050
|
+
<div class="product-dialog-wrap">
|
|
4051
|
+
<div class="product-dialog-container">
|
|
4052
|
+
<div class="container-header">
|
|
4053
|
+
<div class="header-info">
|
|
4054
|
+
<h3>
|
|
4055
|
+
<co-icon [iconData]="iconCache.getIcon(icon.LinkSimpleRegular)"
|
|
4056
|
+
(click)="closeCatalog()"></co-icon>{{ 'SUGGESTION' | localize }} <b>{{ mainArticle.name }}</b> ({{ mainArticle.articleNr }})
|
|
4057
|
+
</h3>
|
|
4058
|
+
</div>
|
|
4059
|
+
<div class="close-icon" (click)="closeCatalog()">
|
|
4060
|
+
<co-icon class="fullscreen-button"
|
|
4061
|
+
[iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
4062
|
+
(click)="closeCatalog()"></co-icon>
|
|
4063
|
+
</div>
|
|
4064
|
+
</div>
|
|
4065
|
+
<div class="related-product-container">
|
|
4066
|
+
@if (articles) {
|
|
4067
|
+
<app-product-related
|
|
4068
|
+
class="no-padding"
|
|
4069
|
+
[articles]="articles">
|
|
4070
|
+
</app-product-related>
|
|
4071
|
+
}
|
|
4072
|
+
</div>
|
|
4073
|
+
<div class="close-button-container">
|
|
4074
|
+
<button class="ok-button" (click)="closeCatalog()">
|
|
4075
|
+
<co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)"
|
|
4076
|
+
(click)="closeCatalog()"></co-icon>
|
|
4077
|
+
</button>
|
|
4078
|
+
<button class="close-button" (click)="closeCatalog()">
|
|
4079
|
+
<co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)"
|
|
4080
|
+
(click)="closeCatalog()"></co-icon>
|
|
4081
|
+
</button>
|
|
4082
|
+
</div>
|
|
4083
|
+
</div>
|
|
4084
|
+
</div>
|
|
4085
|
+
`, standalone: false, styles: [".product-dialog-wrap{display:flex;justify-content:center;position:absolute;z-index:800;top:0}.product-dialog-wrap .product-dialog-container{background:#fff;min-width:75vw;max-height:90vh;border:1px solid #F8F8F8}.product-dialog-wrap .product-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3{display:flex;align-items:center}.product-dialog-wrap .product-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}.product-dialog-wrap .product-dialog-container .container-header .close-icon{cursor:pointer}.product-dialog-wrap .product-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}.product-dialog-wrap .product-dialog-container .close-button-container button{cursor:pointer;border:none;color:#fff;padding:8px;box-shadow:0 3px 3px #0000004d;height:auto;width:auto;margin:0 3px;border-radius:3px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon{height:20px;width:20px}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container button ::ng-deep co-icon svg polygon{fill:#fff}.product-dialog-wrap .product-dialog-container .close-button-container .ok-button{background:#1a73e8}.product-dialog-wrap .product-dialog-container .close-button-container .close-button{background:#475060}::ng-deep .content-wrapper{width:auto!important}\n"] }]
|
|
4086
|
+
}], ctorParameters: () => [{ type: IconCacheService }, { type: i1.DomSanitizer }, { type: ProductConnectorService }, { type: ProductConnectorAdapterService }, { type: ProductEventService }], propDecorators: { refType: [{
|
|
4087
|
+
type: Input
|
|
4088
|
+
}], mainArticle: [{
|
|
4089
|
+
type: Input
|
|
4090
|
+
}], articles: [{
|
|
4091
|
+
type: Input
|
|
4092
|
+
}], closeRelatedPopup: [{
|
|
4093
|
+
type: Output
|
|
4094
|
+
}], showClass: [{
|
|
4095
|
+
type: HostBinding,
|
|
4096
|
+
args: ['class.co-product-dialog']
|
|
4097
|
+
}] } });
|
|
4098
|
+
|
|
4050
4099
|
class ProductDialogModule {
|
|
4051
4100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4052
4101
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ProductDialogModule, declarations: [ProductDialogComponent], imports: [CommonModule,
|
|
@@ -4576,7 +4625,7 @@ class ProductExternalSourceComponent {
|
|
|
4576
4625
|
(configuratorFinished)="handleConfigurationFinished($event)"></co-product-hd>
|
|
4577
4626
|
}
|
|
4578
4627
|
}
|
|
4579
|
-
`, isInline: true, dependencies: [{ kind: "component", type: ProductPageComponent, selector: "app-product-page", inputs: ["sku", "settings", "externalSource", "createFrozenArticle", "isReturn", "
|
|
4628
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ProductPageComponent, selector: "app-product-page", inputs: ["sku", "settings", "externalSource", "createFrozenArticle", "isReturn", "enableRenderCarousel"], outputs: ["openStockEvent"] }, { kind: "component", type: ProductHdComponent, selector: "co-product-hd", inputs: ["sku", "token", "variant", "urlParams"], outputs: ["configuratorFinished", "configurationError"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
4580
4629
|
}
|
|
4581
4630
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductExternalSourceComponent, decorators: [{
|
|
4582
4631
|
type: Component,
|