@colijnit/product 261.20.0 → 261.20.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.
@@ -16,12 +16,12 @@ import { ImageContent } from '@colijnit/mainapi/build/model/image-content.bo';
16
16
  import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
17
17
  import { trigger, state, transition, style, animate } from '@angular/animations';
18
18
  import * as i1 from '@angular/platform-browser';
19
+ import * as i5 from '@angular/common';
20
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
19
21
  import * as i6 from '@colijnit/corecomponents_v12';
20
22
  import { IconModule, LoaderModule, ScrollContainerModule, InputNumberPickerModule, ButtonModule, ArticleTileModule, TileModule, IconCollapseHandleModule } from '@colijnit/corecomponents_v12';
21
23
  import { CoDocument } from '@colijnit/mainapi/build/model/co-document.bo';
22
24
  import { ConfiguratorStatisticsEnvironment } from '@colijnit/articleapi/build/model/configurator-statistics-environment';
23
- import * as i5 from '@angular/common';
24
- import { CommonModule, isPlatformBrowser } from '@angular/common';
25
25
  import * as i3 from '@colijnit/sharedcomponents';
26
26
  import { FilesUploadModule } from '@colijnit/sharedcomponents';
27
27
 
@@ -30,8 +30,8 @@ class Version {
30
30
  constructor() {
31
31
  this.name = "@colijnit/product";
32
32
  this.description = "Product detail page project for iOne";
33
- this.symVer = "261.20.0";
34
- this.publishDate = "23-1-2026, 15:54:32";
33
+ this.symVer = "261.20.1";
34
+ this.publishDate = "11-3-2026, 11:34:54";
35
35
  }
36
36
  }
37
37
 
@@ -45,6 +45,7 @@ class SettingsOptions {
45
45
  this.showArButton = false;
46
46
  this.arEnabled = false;
47
47
  this.vrEnabled = false;
48
+ this.showSaveAsPresetButton = false;
48
49
  }
49
50
  }
50
51
 
@@ -247,6 +248,15 @@ class ProductConnectorAdapterService {
247
248
  return this._boFactory.makeWithRawBackendData(ImageContent, response.resultObject);
248
249
  }
249
250
  }
251
+ async savePreset() {
252
+ const response = await this.articleConnector.storePreset();
253
+ if (response && response.validationResult && response.validationResult.success) {
254
+ return Promise.resolve(true);
255
+ }
256
+ else {
257
+ return Promise.resolve(false);
258
+ }
259
+ }
250
260
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductConnectorAdapterService, deps: [{ token: ProductEventService }], target: i0.ɵɵFactoryTarget.Injectable }); }
251
261
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductConnectorAdapterService }); }
252
262
  }
@@ -322,6 +332,9 @@ class Dictionary {
322
332
  "VARIANTS": "Variations",
323
333
  "WIDTH": "Width",
324
334
  "SUGGESTION": "Suggestion",
335
+ "PRESET_SAVE_AS": "Save as preset",
336
+ "PRESET_OVERWRITE_TEXT": "This article already has a preset. Do you want to overwrite it?",
337
+ "PRESET_SAVED_TEXT": "Preset saved"
325
338
  },
326
339
  "nl": {
327
340
  "ADDITIONAL_DATA": "Extra informatie",
@@ -354,6 +367,9 @@ class Dictionary {
354
367
  "VARIANTS": "Varianten",
355
368
  "WIDTH": "Breedte",
356
369
  "SUGGESTION": "Suggesties bij",
370
+ "PRESET_SAVE_AS": "Opslaan als preset",
371
+ "PRESET_OVERWRITE_TEXT": "Dit artikel heeft al een preset, wilt u deze overschrijven?",
372
+ "PRESET_SAVED_TEXT": "Preset opgeslagen"
357
373
  },
358
374
  "de": {
359
375
  "ADDITIONAL_DATA": "Extra informatie",
@@ -625,6 +641,9 @@ class ProductConnectorService {
625
641
  async getImageForCoDocument(document, thumb = false) {
626
642
  return this._adapterService.getImageForCoDocument(document, thumb);
627
643
  }
644
+ async savePreset() {
645
+ return await this._adapterService.savePreset();
646
+ }
628
647
  onShowLoaderChange(showLoader) {
629
648
  this._shouldShowLoader = showLoader;
630
649
  }
@@ -703,6 +722,7 @@ var IconEnum;
703
722
  IconEnum["NormalScreen"] = "normal_screen";
704
723
  IconEnum["Quote"] = "quote";
705
724
  IconEnum["Refresh"] = "refresh";
725
+ IconEnum["SaveDisk"] = "save_disk";
706
726
  IconEnum["SaveSkinny"] = "save_skinny";
707
727
  IconEnum["ThreeD"] = "three_d";
708
728
  IconEnum["Truck"] = "truck";
@@ -710,6 +730,13 @@ var IconEnum;
710
730
  IconEnum["Warehouse"] = "warehouse";
711
731
  })(IconEnum || (IconEnum = {}));
712
732
 
733
+ var PresetDialogType;
734
+ (function (PresetDialogType) {
735
+ PresetDialogType[PresetDialogType["info"] = 0] = "info";
736
+ PresetDialogType[PresetDialogType["warning"] = 1] = "warning";
737
+ PresetDialogType[PresetDialogType["success"] = 2] = "success";
738
+ })(PresetDialogType || (PresetDialogType = {}));
739
+
713
740
  /** AUTO GENERATED FILE. DO NOT CHANGE.. **/
714
741
  const IconSvg = {
715
742
  "add_to_cart_drop": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.58,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,16.58,34.84Z\" fill=\"#484f60\"/><path d=\"M31.49,34.84a1.8,1.8,0,1,0,1.8,1.8A1.79,1.79,0,0,0,31.49,34.84Z\" fill=\"#484f60\"/><path d=\"M35.6,17.9l-1.51.18L31.88,20.3l1.31-.17a.88.88,0,0,1,1,1.08L32.35,29.5a1.52,1.52,0,0,1-1.44,1.2H16.51a1.75,1.75,0,0,1-1.57-1.17l-2.31-5.6a1,1,0,0,1,.85-1.29l4.43-.56-1.86-1.86-5.13.61a1,1,0,0,0-.87,1.28l3.34,9.44A1.73,1.73,0,0,0,15,32.72H32.64a1.51,1.51,0,0,0,1.43-1.2L36.6,19A.89.89,0,0,0,35.6,17.9Z\" fill=\"#484f60\"/><path d=\"M39,17a1.87,1.87,0,0,0-1.36,1.46l-.42,2.89c-.1.67.31,1,.9.7a2.75,2.75,0,0,0,1.33-1.7L40,18A.73.73,0,0,0,39,17Z\" fill=\"#484f60\"/><polygon points=\"24 25.35 32.04 17.3 27.04 17.3 27.04 10 20.95 10 20.95 17.3 15.96 17.3 24 25.35\" fill=\"#484f60\"/></svg>",
@@ -726,6 +753,7 @@ const IconSvg = {
726
753
  "normal_screen": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M38,38.17H12v-26H38ZM13.24,36.93H36.76V13.4H13.24Z\" fill=\"#484f60\"/><polygon points=\"22.18 29.83 24.29 31.93 24.29 25.87 18.23 25.87 20.34 27.98 16.43 31.89 18.28 33.73 22.18 29.83\" fill=\"#484f60\"/><polygon points=\"33.57 18.44 31.73 16.6 27.82 20.51 25.71 18.4 25.71 24.46 31.77 24.46 29.66 22.35 33.57 18.44\" fill=\"#484f60\"/></svg>",
727
754
  "quote": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M14.5,31.51V12a.5.5,0,0,1,.5-.5H35a.5.5,0,0,1,.5.5V38a.5.5,0,0,1-.5.5H21.27V40H35a2,2,0,0,0,2-2V12a2,2,0,0,0-2-2H15a2,2,0,0,0-2,2V31.51Z\" fill=\"#484f60\"/><path d=\"M21.27,40V33.56c0-1.78-.27-2.05-2.05-2.05H13Z\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"18.5\" width=\"6\" height=\"4\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"21.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"25.5\" y=\"18.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"25.5\" width=\"6\" height=\"4\" transform=\"translate(59 55) rotate(-180)\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"28.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"25.5\" width=\"7\" height=\"1\" fill=\"#484f60\"/><rect x=\"17.5\" y=\"14.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/><rect x=\"26.5\" y=\"34.5\" width=\"6\" height=\"1\" fill=\"#484f60\"/></svg>",
728
755
  "refresh": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"refresh.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"9.44\" inkscape:cx=\"13.990693\" inkscape:cy=\"13.961336\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg6\" /><g transform=\"matrix(0.05356365,0,0,0.05356365,11.44076,11.82465)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 414.32892,173.53368 397.86852,58.29997 c -1.3534,-9.447409 -12.96516,-13.373353 -19.75699,-6.581524 l -23.97472,23.97472 C 323.3074,57.095569 288.30682,47.308258 252.3168,47.308258 c -108.23157,0 -195.126154,84.711612 -197.8314,192.852392 -0.147446,5.91103 4.149441,10.98085 9.992183,11.82206 l 46.516107,6.64982 c 6.93462,1.01194 13.38577,-4.43269 13.28954,-11.68548 -0.9646,-71.37163 56.68057,-129.79595 128.03357,-129.79595 17.27835,0 34.3526,3.51232 50.13165,10.23043 l -23.11022,23.11022 c -6.74915,6.74915 -2.91866,18.3966 6.58152,19.75699 l 115.23371,16.4604 c 7.59269,1.14465 14.26423,-5.4586 13.17546,-13.17546 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.77603161\" /></g></g><path inkscape:connector-curvature=\"0\" d=\"m 35.105827,24.725982 -2.489742,-0.355606 c -0.321647,-0.04073 -0.711797,0.234897 -0.711797,0.671018 0,3.781814 -3.076753,6.858567 -6.858567,6.858567 -0.920628,0 -1.830946,-0.186303 -2.673013,-0.542533 l 1.198298,-1.198297 c 0.361507,-0.361507 0.156331,-0.985389 -0.352533,-1.058254 l -6.172336,-0.882302 c -0.405403,-0.05792 -0.764422,0.289765 -0.705726,0.705725 l 0.881637,6.172381 c 0.07258,0.506577 0.694003,0.71545 1.058254,0.352527 l 1.315225,-1.314599 c 1.643397,0.987012 3.516951,1.506391 5.450194,1.506391 5.769264,0 10.423029,-4.514936 10.595325,-10.27871 0.0091,-0.317237 -0.221012,-0.591248 -0.535219,-0.636308 z\" style=\"fill:#484f60;fill-opacity:1;stroke-width:0.04156709\" /></svg>",
756
+ "save_disk": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"-288 379 35 35\" enable-background=\"new -288 379 35 35\" ><g opacity=\"0.95\"><path fill=\"#29363E\" d=\"M-259.5,384.4h-2.1v6.8c0,0.4-0.3,0.7-0.7,0.7h-16.6c-0.4,0-0.7-0.3-0.7-0.7v-6.8h-2c-0.6,0-1.1,0.5-1.1,1.1v22.4c0,0.6,0.5,1.1,1.1,1.1h2v-14c0-0.4,0.3-0.7,0.7-0.7h16.7c0.4,0,0.7,0.3,0.7,0.7v14h2c0.6,0,1.1-0.5,1.1-1.1v-22.4C-258.4,384.9-258.9,384.4-259.5,384.4z M-280.1,406.6h-1.7V405h1.7V406.6z M-259.2,406.6h-1.7V405h1.7V406.6z\"/><rect x=\"-278.4\" y=\"395.4\" fill=\"#29363E\" width=\"15.8\" height=\"13.5\"/><path fill=\"#29363E\" d=\"M-263.4,384h-12c-0.1,0-0.3,0.1-0.3,0.3v6.5c0,0.1,0.1,0.3,0.3,0.3h12c0.1,0,0.2-0.1,0.2-0.3v-6.5C-263.1,384.1-263.2,384-263.4,384z M-265.6,390c0,0.1-0.1,0.3-0.3,0.3h-2.4c-0.1,0-0.2-0.1-0.2-0.3v-4.8c0-0.1,0.1-0.3,0.2-0.3h2.4c0.1,0,0.3,0.1,0.3,0.3V390z\"/></g></svg>",
729
757
  "save_skinny": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 51 51\"><polygon points=\"23.8 38.1 14.9 25.6 15.7 25 23.6 36.2 35.2 12.9 36.1 13.4 23.8 38.1\" fill=\"#fff\"/></svg>",
730
758
  "three_d": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\"><path d=\"M16.08,30.77a4.85,4.85,0,0,1-3-.8,4,4,0,0,0-2.49-.15,6.21,6.21,0,0,0,2.53,1.09,12.84,12.84,0,0,0,2.93-.14\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M14.27,19.68A4.71,4.71,0,0,0,11,20.78l2,.14c.31,0,1.2-.69,1.55-.81a3.88,3.88,0,0,1,1.65-.24l-1.94-.19\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M21.64,28.79a4.13,4.13,0,0,0-3.1-4c.89-.7,1.77-1.09,2.26-2.21a5.12,5.12,0,0,0,.35-1.9c-.13-3.24-2.64-3.73-5.29-4.15a4,4,0,0,1,3.44,3.7,4.61,4.61,0,0,1-.83,3.12,9.7,9.7,0,0,1-1.82,1.43,4.3,4.3,0,0,1,3.17,4.34,4.9,4.9,0,0,1-4.21,5c2.09-.34,4.37-.64,5.46-2.69a5,5,0,0,0,.57-2.58\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M28.44,18.88l.38-.07.48-.06.57,0h.75l.36,0,.35.05c-.2,0-.42-.08-1.57-.25l-.36-.05-.37,0h-.77l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38H27l.13,0h1.63l.21,0h.2l.2,0h.05l1.55-.24h0l-.34.05-.33,0H29.12l-.36,0-.33,0a1.15,1.15,0,0,1-.28-.06V19Z\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M40,24.34a9,9,0,0,0-3-7.1,11.06,11.06,0,0,0-4.47-1.86c4.38,1.13,6.23,5.31,6.13,9.54-.12,4.5-2.27,8.55-6.86,9.66,2.59-.63,5-1.41,6.52-3.78A12,12,0,0,0,40,24.34\" fill=\"#484f60\" opacity=\"0.5\"/><path d=\"M35.38,16.71A7.32,7.32,0,0,1,36.74,18a7.82,7.82,0,0,1,1,1.73,10.32,10.32,0,0,1,.68,2.16,13.86,13.86,0,0,1,.23,2.59,15,15,0,0,1-.25,2.78,11.39,11.39,0,0,1-.68,2.31,9.34,9.34,0,0,1-1,1.85,8.23,8.23,0,0,1-1.28,1.4,7.76,7.76,0,0,1-1.7,1.07,9.07,9.07,0,0,1-2,.69,13.36,13.36,0,0,1-2.26.33,18.25,18.25,0,0,1-2.45,0c-.5,0-1-.08-1.39-.12l-1.17-.14c-.36,0-.68-.11-1-.16l-.77-.15V15.86c.34-.09.71-.18,1.09-.26s.81-.15,1.24-.21.88-.12,1.34-.17.95-.1,1.44-.13a20.57,20.57,0,0,1,2.33,0,12,12,0,0,1,2,.24,8.24,8.24,0,0,1,1.72.55A7.1,7.1,0,0,1,35.38,16.71ZM27.92,31.53a6.53,6.53,0,0,0,2.46-.32A4.81,4.81,0,0,0,32.32,30a5.82,5.82,0,0,0,1.27-2.18A10.11,10.11,0,0,0,34,24.67a8.65,8.65,0,0,0-.42-2.85,4.94,4.94,0,0,0-1.18-2,4.45,4.45,0,0,0-1.83-1.11,6.55,6.55,0,0,0-2.35-.28l-.59,0-.49.07a3.08,3.08,0,0,0-.39.07l-.3.07V31.38a2.11,2.11,0,0,0,.29.06l.34,0,.37,0,.36,0h.07\" fill=\"#484f60\"/><path d=\"M14.57,16.47a5.49,5.49,0,0,1,2,.22,3.89,3.89,0,0,1,1.49.84A3.66,3.66,0,0,1,19,18.89a4.29,4.29,0,0,1,.33,1.7,5.29,5.29,0,0,1-.17,1.34,4.29,4.29,0,0,1-.5,1.16,4.17,4.17,0,0,1-.84.94,4.88,4.88,0,0,1-1.16.69v.05a3.7,3.7,0,0,1,1.22.5,4,4,0,0,1,1,.92,4.61,4.61,0,0,1,.69,1.3,5.24,5.24,0,0,1,.25,1.62,5.36,5.36,0,0,1-.42,2.15,4.44,4.44,0,0,1-1.2,1.64,4.84,4.84,0,0,1-1.86,1,6.78,6.78,0,0,1-2.39.23,7.69,7.69,0,0,1-2.36-.52,6.89,6.89,0,0,1-.9-.42,4.36,4.36,0,0,1-.69-.47l.62-2.9a4.12,4.12,0,0,0,.53.34,6.21,6.21,0,0,0,.73.36,5.69,5.69,0,0,0,.88.31,5.19,5.19,0,0,0,1,.15,3.11,3.11,0,0,0,1.1-.13,2,2,0,0,0,.8-.45,1.93,1.93,0,0,0,.49-.71,2.35,2.35,0,0,0,.17-.89A2.48,2.48,0,0,0,16,27.67a2.23,2.23,0,0,0-.63-.79,2.9,2.9,0,0,0-.89-.46,3.5,3.5,0,0,0-1-.15H12.2V23.44l1.23,0a3.44,3.44,0,0,0,.83-.11,2.83,2.83,0,0,0,.79-.36,2,2,0,0,0,.6-.62,2,2,0,0,0,.23-.94,1.8,1.8,0,0,0-.13-.71,1.36,1.36,0,0,0-.38-.56,1.58,1.58,0,0,0-.64-.35,2.79,2.79,0,0,0-.9-.1,4.07,4.07,0,0,0-.84.13c-.27.08-.53.18-.78.28a6.56,6.56,0,0,0-1.17.7L10.42,18a5,5,0,0,1,.72-.51,7.82,7.82,0,0,1,2.12-.82A8,8,0,0,1,14.57,16.47Z\" fill=\"#484f60\"/></svg>",
731
759
  "truck": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"truck.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1920\" inkscape:window-height=\"1017\" showgr inkscape:zoom=\"9.44\" inkscape:cx=\"31.555563\" inkscape:cy=\"21.585628\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06827145,0,0,0.06827064,7.670918,5.1378096)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 119.467,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.964,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.824,0 34.133,15.309 34.133,34.133 0,18.824 -15.309,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 409.6,337.067 c -28.237,0 -51.2,22.963 -51.2,51.2 0,28.237 22.963,51.2 51.2,51.2 28.237,0 51.2,-22.963 51.2,-51.2 0,-28.237 -22.963,-51.2 -51.2,-51.2 z m 0,85.333 c -18.825,0 -34.133,-15.309 -34.133,-34.133 0,-18.825 15.309,-34.133 34.133,-34.133 18.825,0 34.133,15.309 34.133,34.133 0,18.824 -15.308,34.133 -34.133,34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 510.643,289.784 -76.8,-119.467 c -1.57,-2.441 -4.275,-3.917 -7.177,-3.917 H 332.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 213.333 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 v -17.067 h -25.6 V 183.467 h 80.674 l 72.926,113.442 v 82.825 H 452.266 V 396.8 h 51.2 c 4.719,0 8.533,-3.814 8.533,-8.533 V 294.4 c 10e-4,-1.63 -0.468,-3.243 -1.356,-4.616 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 375.467,277.333 V 217.6 h 68.267 v -17.067 h -76.8 c -4.719,0 -8.533,3.823 -8.533,8.533 v 76.8 c 0,4.719 3.814,8.533 8.533,8.533 h 128 V 277.332 H 375.467 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 332.8,106.667 H 8.533 C 3.823,106.667 0,110.49 0,115.2 v 273.067 c 0,4.719 3.823,8.533 8.533,8.533 H 76.8 V 379.733 H 17.067 v -256 h 307.2 v 256 H 162.133 V 396.8 H 332.8 c 4.719,0 8.533,-3.814 8.533,-8.533 V 115.2 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"8.533\" y=\"345.60001\" width=\"51.200001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"179.2\" y=\"345.60001\" width=\"145.067\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"469.33301\" y=\"345.60001\" width=\"34.132999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"34.132999\" y=\"140.8\" width=\"298.66699\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"110.933\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"401.06699\" y=\"379.733\" width=\"17.066999\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.06813214,0,0,0.06813214,7.6,6.2856989)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>",
@@ -2659,6 +2687,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2659
2687
  args: ['class.resizing']
2660
2688
  }] } });
2661
2689
 
2690
+ class PresetDialogComponent {
2691
+ showClass() {
2692
+ return true;
2693
+ }
2694
+ constructor(iconCache) {
2695
+ this.iconCache = iconCache;
2696
+ this.icon = IconEnum;
2697
+ this.presetId = undefined;
2698
+ this.cancelSavePreset = new EventEmitter();
2699
+ this.overwritePreset = new EventEmitter();
2700
+ this.PresetDialogType = PresetDialogType;
2701
+ }
2702
+ closeAndCancelPreset() {
2703
+ this.cancelSavePreset.emit(true);
2704
+ }
2705
+ closeAndOverwritePreset() {
2706
+ this.overwritePreset.emit(true);
2707
+ }
2708
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogComponent, deps: [{ token: IconCacheService }], target: i0.ɵɵFactoryTarget.Component }); }
2709
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: PresetDialogComponent, isStandalone: false, selector: "co-preset-dialog", inputs: { type: "type", presetId: "presetId" }, outputs: { cancelSavePreset: "cancelSavePreset", overwritePreset: "overwritePreset" }, host: { properties: { "class.co-preset-dialog": "this.showClass" } }, ngImport: i0, template: `
2710
+ <div class="preset-dialog-wrap">
2711
+ <div class="preset-dialog-container">
2712
+ <div class="container-header">
2713
+ <div class="header-info">
2714
+ <h3 [textContent]="'PRESET_SAVE_AS' | localize"></h3>
2715
+ </div>
2716
+ <div class="close-icon" (click)="closeAndCancelPreset()">
2717
+ <co-icon class="fullscreen-button"
2718
+ [iconData]="iconCache.getIcon(icon.CrossSkinny)"
2719
+ (click)="closeAndCancelPreset()"></co-icon>
2720
+ </div>
2721
+ </div>
2722
+
2723
+ <div class="body">
2724
+ @if (presetId !== undefined && type === PresetDialogType.warning) {
2725
+ <p [textContent]="'PRESET_OVERWRITE_TEXT' | localize"></p>
2726
+ }
2727
+ @if (presetId !== undefined && type === PresetDialogType.success) {
2728
+ <p [textContent]="'PRESET_SAVED_TEXT' | localize"></p>
2729
+ }
2730
+ </div>
2731
+
2732
+ <div class="close-button-container">
2733
+ @if (presetId !== undefined && type === PresetDialogType.warning) {
2734
+ <button class="ok-button" (click)="closeAndOverwritePreset()">
2735
+ <co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)" (click)="closeAndOverwritePreset()"></co-icon>
2736
+ </button>
2737
+ }
2738
+ <button class="close-button" (click)="closeAndCancelPreset()">
2739
+ <co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)" (click)="closeAndCancelPreset()"></co-icon>
2740
+ </button>
2741
+ </div>
2742
+ </div>
2743
+ </div>
2744
+ `, isInline: true, styles: [":host .preset-dialog-wrap{background:#00000080;position:fixed;z-index:1000;inset:0;display:flex;justify-content:center;align-items:center;font-family:iOneMontserrat}:host .preset-dialog-wrap .preset-dialog-container{background:#fff;max-width:500px;width:75vw;max-height:90vh;border:1px solid #F8F8F8}:host .preset-dialog-wrap .preset-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3{display:flex;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}:host .preset-dialog-wrap .preset-dialog-container .container-header .close-icon{cursor:pointer}:host .preset-dialog-wrap .preset-dialog-container .body{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}:host .preset-dialog-wrap .preset-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}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button ::ng-deep co-icon [fill]{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon{height:25px;width:25px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg path,:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg polygon{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .ok-button{background:#1a73e8}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .close-button{background:#475060}:host ::ng-deep .content-wrapper{width:auto!important}\n"], dependencies: [{ kind: "component", type: i6.IconComponent, selector: "co-icon", inputs: ["icon", "iconData"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }] }); }
2745
+ }
2746
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogComponent, decorators: [{
2747
+ type: Component,
2748
+ args: [{ selector: 'co-preset-dialog', template: `
2749
+ <div class="preset-dialog-wrap">
2750
+ <div class="preset-dialog-container">
2751
+ <div class="container-header">
2752
+ <div class="header-info">
2753
+ <h3 [textContent]="'PRESET_SAVE_AS' | localize"></h3>
2754
+ </div>
2755
+ <div class="close-icon" (click)="closeAndCancelPreset()">
2756
+ <co-icon class="fullscreen-button"
2757
+ [iconData]="iconCache.getIcon(icon.CrossSkinny)"
2758
+ (click)="closeAndCancelPreset()"></co-icon>
2759
+ </div>
2760
+ </div>
2761
+
2762
+ <div class="body">
2763
+ @if (presetId !== undefined && type === PresetDialogType.warning) {
2764
+ <p [textContent]="'PRESET_OVERWRITE_TEXT' | localize"></p>
2765
+ }
2766
+ @if (presetId !== undefined && type === PresetDialogType.success) {
2767
+ <p [textContent]="'PRESET_SAVED_TEXT' | localize"></p>
2768
+ }
2769
+ </div>
2770
+
2771
+ <div class="close-button-container">
2772
+ @if (presetId !== undefined && type === PresetDialogType.warning) {
2773
+ <button class="ok-button" (click)="closeAndOverwritePreset()">
2774
+ <co-icon [iconData]="iconCache.getIcon(icon.SaveSkinny)" (click)="closeAndOverwritePreset()"></co-icon>
2775
+ </button>
2776
+ }
2777
+ <button class="close-button" (click)="closeAndCancelPreset()">
2778
+ <co-icon [iconData]="iconCache.getIcon(icon.CrossSkinny)" (click)="closeAndCancelPreset()"></co-icon>
2779
+ </button>
2780
+ </div>
2781
+ </div>
2782
+ </div>
2783
+ `, standalone: false, styles: [":host .preset-dialog-wrap{background:#00000080;position:fixed;z-index:1000;inset:0;display:flex;justify-content:center;align-items:center;font-family:iOneMontserrat}:host .preset-dialog-wrap .preset-dialog-container{background:#fff;max-width:500px;width:75vw;max-height:90vh;border:1px solid #F8F8F8}:host .preset-dialog-wrap .preset-dialog-container .container-header{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3{display:flex;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .container-header .header-info h3 co-icon{margin-right:10px}:host .preset-dialog-wrap .preset-dialog-container .container-header .close-icon{cursor:pointer}:host .preset-dialog-wrap .preset-dialog-container .body{display:flex;justify-content:space-between;border-bottom:1px solid #F8F8F8;padding:25px;box-sizing:border-box;align-items:center}:host .preset-dialog-wrap .preset-dialog-container .close-button-container{display:flex;justify-content:center;padding:10px}:host .preset-dialog-wrap .preset-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}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button ::ng-deep co-icon [fill]{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon{height:25px;width:25px}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg path,:host .preset-dialog-wrap .preset-dialog-container .close-button-container button .co-icon svg polygon{fill:#fff}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .ok-button{background:#1a73e8}:host .preset-dialog-wrap .preset-dialog-container .close-button-container .close-button{background:#475060}:host ::ng-deep .content-wrapper{width:auto!important}\n"] }]
2784
+ }], ctorParameters: () => [{ type: IconCacheService }], propDecorators: { showClass: [{
2785
+ type: HostBinding,
2786
+ args: ['class.co-preset-dialog']
2787
+ }], type: [{
2788
+ type: Input
2789
+ }], presetId: [{
2790
+ type: Input
2791
+ }], cancelSavePreset: [{
2792
+ type: Output
2793
+ }], overwritePreset: [{
2794
+ type: Output
2795
+ }] } });
2796
+
2662
2797
  class ProductPageComponent {
2663
2798
  set sku(value) {
2664
2799
  if (value) {
@@ -2711,13 +2846,12 @@ class ProductPageComponent {
2711
2846
  get currentView() {
2712
2847
  return this._currentView;
2713
2848
  }
2714
- constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
2849
+ constructor(_ione, iconCache, settingsService, appEventService, _changeDetector) {
2715
2850
  this._ione = _ione;
2716
- this._renderer = _renderer;
2717
- this._changeDetector = _changeDetector;
2718
2851
  this.iconCache = iconCache;
2719
2852
  this.settingsService = settingsService;
2720
2853
  this.appEventService = appEventService;
2854
+ this._changeDetector = _changeDetector;
2721
2855
  this.icon = IconEnum;
2722
2856
  this.createFrozenArticle = true;
2723
2857
  this.isReturn = false;
@@ -2731,6 +2865,9 @@ class ProductPageComponent {
2731
2865
  this.showAddToCart = false;
2732
2866
  this.fullscreenAnimationEnd = false;
2733
2867
  this.settingsLoaded = false;
2868
+ this.showPresetDialog = false;
2869
+ this.configPresetId = undefined;
2870
+ this.presetDialogType = PresetDialogType.info;
2734
2871
  this._fullScreen = false;
2735
2872
  this._subs = [];
2736
2873
  this._subs.push(this.appEventService.onForceRenderImage.subscribe((x) => {
@@ -2759,7 +2896,7 @@ class ProductPageComponent {
2759
2896
  if (this.selections.nativeElement) {
2760
2897
  this.selections.nativeElement.getRenderForRenderCarousel(renderParameters);
2761
2898
  }
2762
- }));
2899
+ }), this.appEventService.onArticleReceived.subscribe(article => this.setConfigPresetId(article.configPresetId)));
2763
2900
  }
2764
2901
  ngOnInit() {
2765
2902
  if (this._settings) {
@@ -2770,8 +2907,6 @@ class ProductPageComponent {
2770
2907
  this._settings = this.settingsService.settings;
2771
2908
  }
2772
2909
  }
2773
- ngAfterViewInit() {
2774
- }
2775
2910
  ngOnDestroy() {
2776
2911
  this._subs.forEach(s => s.unsubscribe());
2777
2912
  if (this._initializedSub) {
@@ -2838,187 +2973,241 @@ class ProductPageComponent {
2838
2973
  handlePopUpChange(event) {
2839
2974
  this.showRelatedProductsPopup = event;
2840
2975
  }
2841
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageComponent, deps: [{ token: ProductConnectorService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: IconCacheService }, { token: ProductSettingsService }, { token: ProductEventService }], target: i0.ɵɵFactoryTarget.Component }); }
2976
+ setConfigPresetId(presetId) {
2977
+ if (presetId) {
2978
+ this.configPresetId = presetId;
2979
+ }
2980
+ }
2981
+ handleSavePreset() {
2982
+ if (this.configPresetId !== undefined) {
2983
+ // prompt warning
2984
+ this.presetDialogType = PresetDialogType.warning;
2985
+ this.showPresetDialog = true;
2986
+ }
2987
+ else {
2988
+ this._savePreset();
2989
+ }
2990
+ }
2991
+ handleCancelSavePreset(event) {
2992
+ this.presetDialogType = PresetDialogType.info;
2993
+ this.showPresetDialog = false;
2994
+ }
2995
+ handleOverwritePreset(event) {
2996
+ this.presetDialogType = PresetDialogType.info;
2997
+ this.showPresetDialog = false;
2998
+ this._savePreset();
2999
+ }
3000
+ _savePreset() {
3001
+ this._ione.savePreset().then((success) => {
3002
+ if (success) {
3003
+ this.presetDialogType = PresetDialogType.success;
3004
+ this.showPresetDialog = true;
3005
+ }
3006
+ });
3007
+ }
3008
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageComponent, deps: [{ token: ProductConnectorService }, { token: IconCacheService }, { token: ProductSettingsService }, { token: ProductEventService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2842
3009
  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", showRelatedProductsPopup: "showRelatedProductsPopup", enableRenderCarousel: "enableRenderCarousel" }, outputs: { openStockEvent: "openStockEvent" }, viewQueries: [{ propertyName: "configurator", first: true, predicate: ["configurator"], descendants: true, read: ElementRef }, { propertyName: "selections", first: true, predicate: ["selections"], descendants: true, read: ElementRef }, { propertyName: "fullscreenbutton", first: true, predicate: ["fullscreenbutton"], descendants: true, read: ElementRef }], ngImport: i0, template: `
2843
- @if (settingsLoaded) {
2844
- <div class="page-wrapper">
2845
- <div class="page-wrapper-content">
2846
- <div class="page-wrapper-left">
2847
- <div class="product-image-container">
2848
- <div class="product-page-block-selector-type">
2849
- <app-product-selector-type class="default-padding"
2850
- [(currentType)]="currentView"
2851
- [show2D]="configurable"
2852
- [show3D]="threeD"
2853
- ></app-product-selector-type>
2854
- </div>
2855
- <div class="product-page-block-image default-padding" [class.full]="fullScreen">
2856
- @if (!enableRenderCarousel) {
2857
- <app-image-carousel
2858
- [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
2859
- [images]="article?.images"
2860
- [showRefresh]="configurable && threeD">
2861
- </app-image-carousel>
2862
- }
2863
- @if (enableRenderCarousel) {
2864
- <app-render-carousel
2865
- [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
2866
- [article]="article">
2867
- </app-render-carousel>
2868
- }
2869
- @if (settingsLoaded && this.configurable) {
2870
- <threed-configurator
2871
- #configurator
2872
- class="threed-configurator"
2873
- [class.configurator-full-screen]="fullScreen"
2874
- [@toggleVisibilityByState]="show3D ? 'show' : 'hide'"
2875
- [@toggleFullScreen]="fullScreen ? 'fullscreen' : 'halfscreen'">
2876
- </threed-configurator>
2877
- }
2878
- @if (show3D) {
2879
- <co-icon #fullscreenbutton class="fullscreen-button"
2880
- [@toggleTopLeft]="fullScreen ? 'fullscreen' : 'halfscreen'"
2881
- [iconData]="iconCache.getIcon(fullScreenIcon)"
2882
- (click)="showFullScreen()"></co-icon>
2883
- }
2884
- @if (show3D && fullScreen) {
2885
- <co-icon class="threed-watermark"
2886
- [iconData]="iconCache.getIcon(icon.Logo)"></co-icon>
2887
- }
2888
- </div>
2889
- </div>
2890
- </div>
2891
- <div class="page-wrapper-right">
2892
- <div class="product-page-block-description">
2893
- <app-product-description class="default-padding" [article]="article"></app-product-description>
2894
- </div>
2895
- <div class="product-page-block-additional">
2896
- <div class="product-page-block-additional-description">
2897
- <app-product-additional-description class="default-padding" [article]="article"></app-product-additional-description>
2898
- </div>
2899
- <div class="product-page-block-price" [class.full]="configuring">
2900
- @if (!configuring) {
2901
- <app-product-price class="s-padding"
2902
- [pricing]="article?.pricing"
2903
- [configurable]="configurable"
2904
- ></app-product-price>
2905
- }
2906
- @if (settingsLoaded) {
2907
- <threed-selections #selections class="threed-selections"
2908
- [class.show-selections]="configuring"
2909
- [@toggleFullScreenRight]="fullScreen ? 'fullscreen' : 'halfscreen'"
2910
- [class.default-padding]="!fullScreen"
2911
- [class.show-full-screen]="fullScreen"
2912
- [class.mini-scrollbar]="fullScreen"
2913
- [sku]="sku"
2914
- [settings]="settings"
2915
- (onUserActionFromThreeD)="configuring = true"
2916
- (instanceSet)="setInstance($event)"
2917
- (onImageReceived)="appEventService.onImageReceived.next($event)"
2918
- (onRenderStarted)="appEventService.onRenderStarted.next()"
2919
- (onDraftRenderImageReceived)="appEventService.onDraftRenderImageReceived.next($event)"
2920
- (onArticleReceived)="appEventService.onArticleReceived.next($event.detail)"
2921
- (onSelectionsReceived)="appEventService.onSelectionsReceived.next($event.detail)"
2922
- (onArticleInfoReceived)="appEventService.onArticleInfoReceived.next($event.detail)"
2923
- (onAnswersAvailable)="appEventService.onAnswersAvailable.next($event.detail)"
2924
- (onReadyToRender)="appEventService.onReadyToRender.next($event.detail)"
2925
- (onRenderImageReceived)="appEventService.onRenderImageReceived.next($event.detail)"
2926
- ></threed-selections>
2927
- }
2928
- </div>
2929
- @if (!configuring) {
2930
- <div class="product-page-block-addtocart no-padding product-action-buttons" [@toggleTopRight]="fullScreen ? 'fullscreen' : 'halfscreen'">
2931
- <app-product-addtocart
2932
- [configurable]="configurable"
2933
- [createFrozenArticle]="createFrozenArticle"
2934
- [configuring]="configuring"
2935
- [showAddToCart]="showAddToCart"
2936
- [article]="article"
2937
- [externalSource]="externalSource"
2938
- [isReturn]="isReturn"
2939
- (startConfiguration)="handleStartConfiguration()"
2940
- (showRelatedPopup)="handlePopUpChange($event)"
2941
- ></app-product-addtocart>
2942
- </div>
2943
- }
2944
- @if (configuring) {
2945
- <div class="addtocart-reserved product-action-buttons" [class.full-screen]="fullScreen">
2946
- <app-product-addtocart class="default-padding"
2947
- [configurable]="false"
2948
- [fullscreen]="fullScreen"
2949
- [showAddToCart]="showAddToCart"
2950
- [configuring]="configuring"
2951
- [article]="article"
2952
- [externalSource]="externalSource"
2953
- [isReturn]="isReturn"
2954
- (startConfiguration)="handleStartConfiguration()"
2955
- ></app-product-addtocart>
2956
- </div>
2957
- }
2958
- <div class="product-page-block-variants">
2959
- @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
2960
- <app-product-related class="no-padding"
2961
- [externalSource]="externalSource"
2962
- [articles]="article?.relatedArticles" [refType]="64" [label]="'VARIANTS' | localize"></app-product-related>
2963
- }
2964
- </div>
2965
- <div class="product-page-block-stock">
2966
- <app-product-stock class="no-padding" [goodId]="article?.goodId" (openStockEvent)="openStock()"></app-product-stock>
2967
- </div>
2968
- <div class="product-page-block-delivery">
2969
- <app-product-delivery class="no-padding" [stockAndDelivery]="stockAndDelivery"></app-product-delivery>
2970
- </div>
2971
- </div>
2972
- </div>
2973
- </div>
2974
- <div class="page-wrapper-content">
2975
- @if (article) {
2976
- <div class="page-wrapper-left">
2977
- <app-product-info-tabs class="no-padding" [article]="article"></app-product-info-tabs>
2978
- </div>
2979
- }
2980
- <div class="page-wrapper-right">
2981
- <div class="product-page-block-related s-padding">
2982
- @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
2983
- <app-product-related
2984
- [externalSource]="externalSource"
2985
- [articles]="article?.relatedArticles"
2986
- [refType]="1"
2987
- [label]="'RELATED_PRODUCTS' | localize">
2988
- </app-product-related>
2989
- }
2990
- </div>
2991
- </div>
3010
+ @if (settingsLoaded) {
3011
+ <div class="page-wrapper">
3012
+ <div class="page-wrapper-content">
3013
+ <div class="page-wrapper-left">
3014
+ <div class="product-image-container">
3015
+ <div class="product-page-block-selector-type">
3016
+ <app-product-selector-type class="default-padding"
3017
+ [(currentType)]="currentView"
3018
+ [show2D]="configurable"
3019
+ [show3D]="threeD"
3020
+ ></app-product-selector-type>
3021
+ </div>
3022
+ <div class="product-page-block-image default-padding" [class.full]="fullScreen">
3023
+ @if (!enableRenderCarousel) {
3024
+ <app-image-carousel
3025
+ [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
3026
+ [images]="article?.images"
3027
+ [showRefresh]="configurable && threeD">
3028
+ </app-image-carousel>
3029
+ }
3030
+ @if (enableRenderCarousel) {
3031
+ <app-render-carousel
3032
+ [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
3033
+ [article]="article">
3034
+ </app-render-carousel>
3035
+ }
3036
+ @if (settingsLoaded && this.configurable) {
3037
+ <threed-configurator
3038
+ #configurator
3039
+ class="threed-configurator"
3040
+ [class.configurator-full-screen]="fullScreen"
3041
+ [@toggleVisibilityByState]="show3D ? 'show' : 'hide'"
3042
+ [@toggleFullScreen]="fullScreen ? 'fullscreen' : 'halfscreen'">
3043
+ </threed-configurator>
3044
+ }
3045
+ @if (show3D) {
3046
+ <co-icon #fullscreenbutton class="fullscreen-button"
3047
+ [@toggleTopLeft]="fullScreen ? 'fullscreen' : 'halfscreen'"
3048
+ [iconData]="iconCache.getIcon(fullScreenIcon)"
3049
+ (click)="showFullScreen()"></co-icon>
3050
+ }
3051
+ @if (show3D && fullScreen) {
3052
+ <co-icon class="threed-watermark"
3053
+ [iconData]="iconCache.getIcon(icon.Logo)"></co-icon>
3054
+ }
3055
+ </div>
3056
+ </div>
3057
+ </div>
3058
+ <div class="page-wrapper-right">
3059
+ <div class="product-page-block-description">
3060
+ <app-product-description class="default-padding" [article]="article"></app-product-description>
3061
+ </div>
3062
+ <div class="product-page-block-additional">
3063
+ <div class="product-page-block-additional-description">
3064
+ <app-product-additional-description class="default-padding" [article]="article"></app-product-additional-description>
3065
+ </div>
3066
+ <div class="product-page-block-price" [class.full]="configuring">
3067
+ @if (configuring && this.settingsService.settings.options.showSaveAsPresetButton) {
3068
+ <div class="preset-container">
3069
+ <co-button
3070
+ class="save-preset-button"
3071
+ [iconData]="iconCache.getIcon(icon.SaveDisk)"
3072
+ [label]="'PRESET_SAVE_AS' | localize"
3073
+ (onClick)="handleSavePreset()"
3074
+ ></co-button>
3075
+ </div>
3076
+ }
3077
+ @if (!configuring) {
3078
+ <app-product-price class="s-padding"
3079
+ [pricing]="article?.pricing"
3080
+ [configurable]="configurable"
3081
+ ></app-product-price>
3082
+ }
3083
+
3084
+ @if (settingsLoaded) {
3085
+ <threed-selections #selections class="threed-selections"
3086
+ [class.show-selections]="configuring"
3087
+ [@toggleFullScreenRight]="fullScreen ? 'fullscreen' : 'halfscreen'"
3088
+ [class.default-padding]="!fullScreen"
3089
+ [class.show-full-screen]="fullScreen"
3090
+ [class.mini-scrollbar]="fullScreen"
3091
+ [sku]="sku"
3092
+ [settings]="settings"
3093
+ (onUserActionFromThreeD)="configuring = true"
3094
+ (instanceSet)="setInstance($event)"
3095
+ (onImageReceived)="appEventService.onImageReceived.next($event)"
3096
+ (onRenderStarted)="appEventService.onRenderStarted.next()"
3097
+ (onDraftRenderImageReceived)="appEventService.onDraftRenderImageReceived.next($event)"
3098
+ (onArticleReceived)="appEventService.onArticleReceived.next($event.detail)"
3099
+ (onSelectionsReceived)="appEventService.onSelectionsReceived.next($event.detail)"
3100
+ (onArticleInfoReceived)="appEventService.onArticleInfoReceived.next($event.detail)"
3101
+ (onAnswersAvailable)="appEventService.onAnswersAvailable.next($event.detail)"
3102
+ (onReadyToRender)="appEventService.onReadyToRender.next($event.detail)"
3103
+ (onRenderImageReceived)="appEventService.onRenderImageReceived.next($event.detail)"
3104
+ ></threed-selections>
3105
+ }
3106
+ </div>
3107
+ @if (!configuring) {
3108
+ <div class="product-page-block-addtocart no-padding product-action-buttons"
3109
+ [@toggleTopRight]="fullScreen ? 'fullscreen' : 'halfscreen'">
3110
+ <app-product-addtocart
3111
+ [configurable]="configurable"
3112
+ [createFrozenArticle]="createFrozenArticle"
3113
+ [configuring]="configuring"
3114
+ [showAddToCart]="showAddToCart"
3115
+ [article]="article"
3116
+ [externalSource]="externalSource"
3117
+ [isReturn]="isReturn"
3118
+ (startConfiguration)="handleStartConfiguration()"
3119
+ (showRelatedPopup)="handlePopUpChange($event)"
3120
+ ></app-product-addtocart>
2992
3121
  </div>
2993
- <div class="page-wrapper-content no-top-margin">
2994
- <div class="page-wrapper-full">
2995
- <div class="product-page-block-alternatives s-padding">
2996
- @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
2997
- <app-product-related
2998
- [externalSource]="externalSource"
2999
- [articles]="article?.relatedArticles"
3000
- [refType]="4"
3001
- [isSmallModus]="false"
3002
- [label]="'ALTERNATIVE_PRODUCTS' | localize">
3003
- </app-product-related>
3004
- }
3005
- </div>
3006
- </div>
3122
+ }
3123
+ @if (configuring) {
3124
+ <div class="addtocart-reserved product-action-buttons" [class.full-screen]="fullScreen">
3125
+ <app-product-addtocart class="default-padding"
3126
+ [configurable]="false"
3127
+ [fullscreen]="fullScreen"
3128
+ [showAddToCart]="showAddToCart"
3129
+ [configuring]="configuring"
3130
+ [article]="article"
3131
+ [externalSource]="externalSource"
3132
+ [isReturn]="isReturn"
3133
+ (startConfiguration)="handleStartConfiguration()"
3134
+ ></app-product-addtocart>
3007
3135
  </div>
3008
- @if (showRelatedProductsPopup) {
3009
- <div>
3010
- <co-product-dialog
3011
- [mainArticle]="article"
3012
- [articles]="article?.relatedArticles"
3013
- [refType]="1"
3014
- (closeRelatedPopup)="handlePopUpChange($event)"
3015
- >
3016
- </co-product-dialog>
3017
- </div>
3136
+ }
3137
+ <div class="product-page-block-variants">
3138
+ @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3139
+ <app-product-related class="no-padding"
3140
+ [externalSource]="externalSource"
3141
+ [articles]="article?.relatedArticles" [refType]="64"
3142
+ [label]="'VARIANTS' | localize"></app-product-related>
3018
3143
  }
3144
+ </div>
3145
+ <div class="product-page-block-stock">
3146
+ <app-product-stock class="no-padding" [goodId]="article?.goodId" (openStockEvent)="openStock()"></app-product-stock>
3147
+ </div>
3148
+ <div class="product-page-block-delivery">
3149
+ <app-product-delivery class="no-padding" [stockAndDelivery]="stockAndDelivery"></app-product-delivery>
3150
+ </div>
3151
+ </div>
3152
+ </div>
3153
+ </div>
3154
+ <div class="page-wrapper-content">
3155
+ @if (article) {
3156
+ <div class="page-wrapper-left">
3157
+ <app-product-info-tabs class="no-padding" [article]="article"></app-product-info-tabs>
3158
+ </div>
3159
+ }
3160
+ <div class="page-wrapper-right">
3161
+ <div class="product-page-block-related s-padding">
3162
+ @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3163
+ <app-product-related
3164
+ [externalSource]="externalSource"
3165
+ [articles]="article?.relatedArticles"
3166
+ [refType]="1"
3167
+ [label]="'RELATED_PRODUCTS' | localize">
3168
+ </app-product-related>
3169
+ }
3170
+ </div>
3171
+ </div>
3172
+ </div>
3173
+ <div class="page-wrapper-content no-top-margin">
3174
+ <div class="page-wrapper-full">
3175
+ <div class="product-page-block-alternatives s-padding">
3176
+ @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3177
+ <app-product-related
3178
+ [externalSource]="externalSource"
3179
+ [articles]="article?.relatedArticles"
3180
+ [refType]="4"
3181
+ [isSmallModus]="false"
3182
+ [label]="'ALTERNATIVE_PRODUCTS' | localize">
3183
+ </app-product-related>
3184
+ }
3019
3185
  </div>
3186
+ </div>
3187
+ </div>
3188
+ @if (showRelatedProductsPopup) {
3189
+ <div>
3190
+ <co-product-dialog
3191
+ [mainArticle]="article"
3192
+ [articles]="article?.relatedArticles"
3193
+ [refType]="1"
3194
+ (closeRelatedPopup)="handlePopUpChange($event)"
3195
+ >
3196
+ </co-product-dialog>
3197
+ </div>
3020
3198
  }
3021
- `, isInline: true, styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child,.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:65%;flex-direction:column}.page-wrapper-right{display:flex;width:35%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:none}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional,.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74b77f}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::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}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::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}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::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}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left,.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.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"] }, { 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: ProductDeliveryComponent, selector: "app-product-delivery", inputs: ["stockAndDelivery"] }, { 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: "pipe", type: LocalizePipe, name: "localize" }], animations: [
3199
+ </div>
3200
+
3201
+ <co-preset-dialog
3202
+ *ngIf="showPresetDialog"
3203
+ [type]="presetDialogType"
3204
+ [presetId]="configPresetId"
3205
+ (cancelSavePreset)="handleCancelSavePreset($event)"
3206
+ (overwritePreset)="handleOverwritePreset($event)"
3207
+ >
3208
+ </co-preset-dialog>
3209
+ }
3210
+ `, isInline: true, styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child,.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:65%;flex-direction:column}.page-wrapper-right{display:flex;width:35%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:none}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional,.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.preset-container{display:flex;justify-content:right}.preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.preset-container .save-preset-button:hover{background:#74b77f}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74b77f}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::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}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::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}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::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}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left,.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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"] }, { 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: ProductDeliveryComponent, selector: "app-product-delivery", inputs: ["stockAndDelivery"] }, { 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: i6.ButtonComponent, selector: "co-button", inputs: ["label", "iconData", "iconDataRight", "isToggleButton", "isToggled", "hidden", "disabled"], outputs: ["onClick", "clickedWhileDisabled", "isToggledChange"] }, { kind: "component", type: PresetDialogComponent, selector: "co-preset-dialog", inputs: ["type", "presetId"], outputs: ["cancelSavePreset", "overwritePreset"] }, { kind: "pipe", type: LocalizePipe, name: "localize" }], animations: [
3022
3211
  trigger('toggleFullScreen', [
3023
3212
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
3024
3213
  state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
@@ -3054,185 +3243,207 @@ class ProductPageComponent {
3054
3243
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageComponent, decorators: [{
3055
3244
  type: Component,
3056
3245
  args: [{ selector: 'app-product-page', template: `
3057
- @if (settingsLoaded) {
3058
- <div class="page-wrapper">
3059
- <div class="page-wrapper-content">
3060
- <div class="page-wrapper-left">
3061
- <div class="product-image-container">
3062
- <div class="product-page-block-selector-type">
3063
- <app-product-selector-type class="default-padding"
3064
- [(currentType)]="currentView"
3065
- [show2D]="configurable"
3066
- [show3D]="threeD"
3067
- ></app-product-selector-type>
3068
- </div>
3069
- <div class="product-page-block-image default-padding" [class.full]="fullScreen">
3070
- @if (!enableRenderCarousel) {
3071
- <app-image-carousel
3072
- [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
3073
- [images]="article?.images"
3074
- [showRefresh]="configurable && threeD">
3075
- </app-image-carousel>
3076
- }
3077
- @if (enableRenderCarousel) {
3078
- <app-render-carousel
3079
- [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
3080
- [article]="article">
3081
- </app-render-carousel>
3082
- }
3083
- @if (settingsLoaded && this.configurable) {
3084
- <threed-configurator
3085
- #configurator
3086
- class="threed-configurator"
3087
- [class.configurator-full-screen]="fullScreen"
3088
- [@toggleVisibilityByState]="show3D ? 'show' : 'hide'"
3089
- [@toggleFullScreen]="fullScreen ? 'fullscreen' : 'halfscreen'">
3090
- </threed-configurator>
3091
- }
3092
- @if (show3D) {
3093
- <co-icon #fullscreenbutton class="fullscreen-button"
3094
- [@toggleTopLeft]="fullScreen ? 'fullscreen' : 'halfscreen'"
3095
- [iconData]="iconCache.getIcon(fullScreenIcon)"
3096
- (click)="showFullScreen()"></co-icon>
3097
- }
3098
- @if (show3D && fullScreen) {
3099
- <co-icon class="threed-watermark"
3100
- [iconData]="iconCache.getIcon(icon.Logo)"></co-icon>
3101
- }
3102
- </div>
3103
- </div>
3104
- </div>
3105
- <div class="page-wrapper-right">
3106
- <div class="product-page-block-description">
3107
- <app-product-description class="default-padding" [article]="article"></app-product-description>
3108
- </div>
3109
- <div class="product-page-block-additional">
3110
- <div class="product-page-block-additional-description">
3111
- <app-product-additional-description class="default-padding" [article]="article"></app-product-additional-description>
3112
- </div>
3113
- <div class="product-page-block-price" [class.full]="configuring">
3114
- @if (!configuring) {
3115
- <app-product-price class="s-padding"
3116
- [pricing]="article?.pricing"
3117
- [configurable]="configurable"
3118
- ></app-product-price>
3119
- }
3120
- @if (settingsLoaded) {
3121
- <threed-selections #selections class="threed-selections"
3122
- [class.show-selections]="configuring"
3123
- [@toggleFullScreenRight]="fullScreen ? 'fullscreen' : 'halfscreen'"
3124
- [class.default-padding]="!fullScreen"
3125
- [class.show-full-screen]="fullScreen"
3126
- [class.mini-scrollbar]="fullScreen"
3127
- [sku]="sku"
3128
- [settings]="settings"
3129
- (onUserActionFromThreeD)="configuring = true"
3130
- (instanceSet)="setInstance($event)"
3131
- (onImageReceived)="appEventService.onImageReceived.next($event)"
3132
- (onRenderStarted)="appEventService.onRenderStarted.next()"
3133
- (onDraftRenderImageReceived)="appEventService.onDraftRenderImageReceived.next($event)"
3134
- (onArticleReceived)="appEventService.onArticleReceived.next($event.detail)"
3135
- (onSelectionsReceived)="appEventService.onSelectionsReceived.next($event.detail)"
3136
- (onArticleInfoReceived)="appEventService.onArticleInfoReceived.next($event.detail)"
3137
- (onAnswersAvailable)="appEventService.onAnswersAvailable.next($event.detail)"
3138
- (onReadyToRender)="appEventService.onReadyToRender.next($event.detail)"
3139
- (onRenderImageReceived)="appEventService.onRenderImageReceived.next($event.detail)"
3140
- ></threed-selections>
3141
- }
3142
- </div>
3143
- @if (!configuring) {
3144
- <div class="product-page-block-addtocart no-padding product-action-buttons" [@toggleTopRight]="fullScreen ? 'fullscreen' : 'halfscreen'">
3145
- <app-product-addtocart
3146
- [configurable]="configurable"
3147
- [createFrozenArticle]="createFrozenArticle"
3148
- [configuring]="configuring"
3149
- [showAddToCart]="showAddToCart"
3150
- [article]="article"
3151
- [externalSource]="externalSource"
3152
- [isReturn]="isReturn"
3153
- (startConfiguration)="handleStartConfiguration()"
3154
- (showRelatedPopup)="handlePopUpChange($event)"
3155
- ></app-product-addtocart>
3156
- </div>
3157
- }
3158
- @if (configuring) {
3159
- <div class="addtocart-reserved product-action-buttons" [class.full-screen]="fullScreen">
3160
- <app-product-addtocart class="default-padding"
3161
- [configurable]="false"
3162
- [fullscreen]="fullScreen"
3163
- [showAddToCart]="showAddToCart"
3164
- [configuring]="configuring"
3165
- [article]="article"
3166
- [externalSource]="externalSource"
3167
- [isReturn]="isReturn"
3168
- (startConfiguration)="handleStartConfiguration()"
3169
- ></app-product-addtocart>
3170
- </div>
3171
- }
3172
- <div class="product-page-block-variants">
3173
- @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3174
- <app-product-related class="no-padding"
3175
- [externalSource]="externalSource"
3176
- [articles]="article?.relatedArticles" [refType]="64" [label]="'VARIANTS' | localize"></app-product-related>
3177
- }
3178
- </div>
3179
- <div class="product-page-block-stock">
3180
- <app-product-stock class="no-padding" [goodId]="article?.goodId" (openStockEvent)="openStock()"></app-product-stock>
3181
- </div>
3182
- <div class="product-page-block-delivery">
3183
- <app-product-delivery class="no-padding" [stockAndDelivery]="stockAndDelivery"></app-product-delivery>
3184
- </div>
3185
- </div>
3186
- </div>
3187
- </div>
3188
- <div class="page-wrapper-content">
3189
- @if (article) {
3190
- <div class="page-wrapper-left">
3191
- <app-product-info-tabs class="no-padding" [article]="article"></app-product-info-tabs>
3192
- </div>
3193
- }
3194
- <div class="page-wrapper-right">
3195
- <div class="product-page-block-related s-padding">
3196
- @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3197
- <app-product-related
3198
- [externalSource]="externalSource"
3199
- [articles]="article?.relatedArticles"
3200
- [refType]="1"
3201
- [label]="'RELATED_PRODUCTS' | localize">
3202
- </app-product-related>
3203
- }
3204
- </div>
3205
- </div>
3246
+ @if (settingsLoaded) {
3247
+ <div class="page-wrapper">
3248
+ <div class="page-wrapper-content">
3249
+ <div class="page-wrapper-left">
3250
+ <div class="product-image-container">
3251
+ <div class="product-page-block-selector-type">
3252
+ <app-product-selector-type class="default-padding"
3253
+ [(currentType)]="currentView"
3254
+ [show2D]="configurable"
3255
+ [show3D]="threeD"
3256
+ ></app-product-selector-type>
3257
+ </div>
3258
+ <div class="product-page-block-image default-padding" [class.full]="fullScreen">
3259
+ @if (!enableRenderCarousel) {
3260
+ <app-image-carousel
3261
+ [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
3262
+ [images]="article?.images"
3263
+ [showRefresh]="configurable && threeD">
3264
+ </app-image-carousel>
3265
+ }
3266
+ @if (enableRenderCarousel) {
3267
+ <app-render-carousel
3268
+ [@toggleVisibilityByState]="show2D ? 'show' : 'hide'"
3269
+ [article]="article">
3270
+ </app-render-carousel>
3271
+ }
3272
+ @if (settingsLoaded && this.configurable) {
3273
+ <threed-configurator
3274
+ #configurator
3275
+ class="threed-configurator"
3276
+ [class.configurator-full-screen]="fullScreen"
3277
+ [@toggleVisibilityByState]="show3D ? 'show' : 'hide'"
3278
+ [@toggleFullScreen]="fullScreen ? 'fullscreen' : 'halfscreen'">
3279
+ </threed-configurator>
3280
+ }
3281
+ @if (show3D) {
3282
+ <co-icon #fullscreenbutton class="fullscreen-button"
3283
+ [@toggleTopLeft]="fullScreen ? 'fullscreen' : 'halfscreen'"
3284
+ [iconData]="iconCache.getIcon(fullScreenIcon)"
3285
+ (click)="showFullScreen()"></co-icon>
3286
+ }
3287
+ @if (show3D && fullScreen) {
3288
+ <co-icon class="threed-watermark"
3289
+ [iconData]="iconCache.getIcon(icon.Logo)"></co-icon>
3290
+ }
3291
+ </div>
3292
+ </div>
3293
+ </div>
3294
+ <div class="page-wrapper-right">
3295
+ <div class="product-page-block-description">
3296
+ <app-product-description class="default-padding" [article]="article"></app-product-description>
3297
+ </div>
3298
+ <div class="product-page-block-additional">
3299
+ <div class="product-page-block-additional-description">
3300
+ <app-product-additional-description class="default-padding" [article]="article"></app-product-additional-description>
3301
+ </div>
3302
+ <div class="product-page-block-price" [class.full]="configuring">
3303
+ @if (configuring && this.settingsService.settings.options.showSaveAsPresetButton) {
3304
+ <div class="preset-container">
3305
+ <co-button
3306
+ class="save-preset-button"
3307
+ [iconData]="iconCache.getIcon(icon.SaveDisk)"
3308
+ [label]="'PRESET_SAVE_AS' | localize"
3309
+ (onClick)="handleSavePreset()"
3310
+ ></co-button>
3311
+ </div>
3312
+ }
3313
+ @if (!configuring) {
3314
+ <app-product-price class="s-padding"
3315
+ [pricing]="article?.pricing"
3316
+ [configurable]="configurable"
3317
+ ></app-product-price>
3318
+ }
3319
+
3320
+ @if (settingsLoaded) {
3321
+ <threed-selections #selections class="threed-selections"
3322
+ [class.show-selections]="configuring"
3323
+ [@toggleFullScreenRight]="fullScreen ? 'fullscreen' : 'halfscreen'"
3324
+ [class.default-padding]="!fullScreen"
3325
+ [class.show-full-screen]="fullScreen"
3326
+ [class.mini-scrollbar]="fullScreen"
3327
+ [sku]="sku"
3328
+ [settings]="settings"
3329
+ (onUserActionFromThreeD)="configuring = true"
3330
+ (instanceSet)="setInstance($event)"
3331
+ (onImageReceived)="appEventService.onImageReceived.next($event)"
3332
+ (onRenderStarted)="appEventService.onRenderStarted.next()"
3333
+ (onDraftRenderImageReceived)="appEventService.onDraftRenderImageReceived.next($event)"
3334
+ (onArticleReceived)="appEventService.onArticleReceived.next($event.detail)"
3335
+ (onSelectionsReceived)="appEventService.onSelectionsReceived.next($event.detail)"
3336
+ (onArticleInfoReceived)="appEventService.onArticleInfoReceived.next($event.detail)"
3337
+ (onAnswersAvailable)="appEventService.onAnswersAvailable.next($event.detail)"
3338
+ (onReadyToRender)="appEventService.onReadyToRender.next($event.detail)"
3339
+ (onRenderImageReceived)="appEventService.onRenderImageReceived.next($event.detail)"
3340
+ ></threed-selections>
3341
+ }
3342
+ </div>
3343
+ @if (!configuring) {
3344
+ <div class="product-page-block-addtocart no-padding product-action-buttons"
3345
+ [@toggleTopRight]="fullScreen ? 'fullscreen' : 'halfscreen'">
3346
+ <app-product-addtocart
3347
+ [configurable]="configurable"
3348
+ [createFrozenArticle]="createFrozenArticle"
3349
+ [configuring]="configuring"
3350
+ [showAddToCart]="showAddToCart"
3351
+ [article]="article"
3352
+ [externalSource]="externalSource"
3353
+ [isReturn]="isReturn"
3354
+ (startConfiguration)="handleStartConfiguration()"
3355
+ (showRelatedPopup)="handlePopUpChange($event)"
3356
+ ></app-product-addtocart>
3206
3357
  </div>
3207
- <div class="page-wrapper-content no-top-margin">
3208
- <div class="page-wrapper-full">
3209
- <div class="product-page-block-alternatives s-padding">
3210
- @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3211
- <app-product-related
3212
- [externalSource]="externalSource"
3213
- [articles]="article?.relatedArticles"
3214
- [refType]="4"
3215
- [isSmallModus]="false"
3216
- [label]="'ALTERNATIVE_PRODUCTS' | localize">
3217
- </app-product-related>
3218
- }
3219
- </div>
3220
- </div>
3358
+ }
3359
+ @if (configuring) {
3360
+ <div class="addtocart-reserved product-action-buttons" [class.full-screen]="fullScreen">
3361
+ <app-product-addtocart class="default-padding"
3362
+ [configurable]="false"
3363
+ [fullscreen]="fullScreen"
3364
+ [showAddToCart]="showAddToCart"
3365
+ [configuring]="configuring"
3366
+ [article]="article"
3367
+ [externalSource]="externalSource"
3368
+ [isReturn]="isReturn"
3369
+ (startConfiguration)="handleStartConfiguration()"
3370
+ ></app-product-addtocart>
3221
3371
  </div>
3222
- @if (showRelatedProductsPopup) {
3223
- <div>
3224
- <co-product-dialog
3225
- [mainArticle]="article"
3226
- [articles]="article?.relatedArticles"
3227
- [refType]="1"
3228
- (closeRelatedPopup)="handlePopUpChange($event)"
3229
- >
3230
- </co-product-dialog>
3231
- </div>
3372
+ }
3373
+ <div class="product-page-block-variants">
3374
+ @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3375
+ <app-product-related class="no-padding"
3376
+ [externalSource]="externalSource"
3377
+ [articles]="article?.relatedArticles" [refType]="64"
3378
+ [label]="'VARIANTS' | localize"></app-product-related>
3232
3379
  }
3380
+ </div>
3381
+ <div class="product-page-block-stock">
3382
+ <app-product-stock class="no-padding" [goodId]="article?.goodId" (openStockEvent)="openStock()"></app-product-stock>
3383
+ </div>
3384
+ <div class="product-page-block-delivery">
3385
+ <app-product-delivery class="no-padding" [stockAndDelivery]="stockAndDelivery"></app-product-delivery>
3386
+ </div>
3387
+ </div>
3388
+ </div>
3389
+ </div>
3390
+ <div class="page-wrapper-content">
3391
+ @if (article) {
3392
+ <div class="page-wrapper-left">
3393
+ <app-product-info-tabs class="no-padding" [article]="article"></app-product-info-tabs>
3394
+ </div>
3395
+ }
3396
+ <div class="page-wrapper-right">
3397
+ <div class="product-page-block-related s-padding">
3398
+ @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3399
+ <app-product-related
3400
+ [externalSource]="externalSource"
3401
+ [articles]="article?.relatedArticles"
3402
+ [refType]="1"
3403
+ [label]="'RELATED_PRODUCTS' | localize">
3404
+ </app-product-related>
3405
+ }
3233
3406
  </div>
3407
+ </div>
3408
+ </div>
3409
+ <div class="page-wrapper-content no-top-margin">
3410
+ <div class="page-wrapper-full">
3411
+ <div class="product-page-block-alternatives s-padding">
3412
+ @if (article?.relatedArticles && article?.relatedArticles.length > 0) {
3413
+ <app-product-related
3414
+ [externalSource]="externalSource"
3415
+ [articles]="article?.relatedArticles"
3416
+ [refType]="4"
3417
+ [isSmallModus]="false"
3418
+ [label]="'ALTERNATIVE_PRODUCTS' | localize">
3419
+ </app-product-related>
3420
+ }
3421
+ </div>
3422
+ </div>
3423
+ </div>
3424
+ @if (showRelatedProductsPopup) {
3425
+ <div>
3426
+ <co-product-dialog
3427
+ [mainArticle]="article"
3428
+ [articles]="article?.relatedArticles"
3429
+ [refType]="1"
3430
+ (closeRelatedPopup)="handlePopUpChange($event)"
3431
+ >
3432
+ </co-product-dialog>
3433
+ </div>
3234
3434
  }
3235
- `, animations: [
3435
+ </div>
3436
+
3437
+ <co-preset-dialog
3438
+ *ngIf="showPresetDialog"
3439
+ [type]="presetDialogType"
3440
+ [presetId]="configPresetId"
3441
+ (cancelSavePreset)="handleCancelSavePreset($event)"
3442
+ (overwritePreset)="handleOverwritePreset($event)"
3443
+ >
3444
+ </co-preset-dialog>
3445
+ }
3446
+ `, animations: [
3236
3447
  trigger('toggleFullScreen', [
3237
3448
  state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
3238
3449
  state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
@@ -3263,8 +3474,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3263
3474
  state('*', style({ 'opacity': '1' })),
3264
3475
  transition('void => *', animate('200ms ease-in-out'))
3265
3476
  ])
3266
- ], standalone: false, styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child,.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:65%;flex-direction:column}.page-wrapper-right{display:flex;width:35%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:none}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional,.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74b77f}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::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}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::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}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::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}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left,.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"] }]
3267
- }], ctorParameters: () => [{ type: ProductConnectorService }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: IconCacheService }, { type: ProductSettingsService }, { type: ProductEventService }], propDecorators: { configurator: [{
3477
+ ], standalone: false, styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:100%;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child,.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:65%;flex-direction:column}.page-wrapper-right{display:flex;width:35%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:none}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional,.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.preset-container{display:flex;justify-content:right}.preset-container .save-preset-button{cursor:pointer;width:100%;max-width:205px;box-sizing:border-box}.preset-container .save-preset-button:hover{background:#74b77f}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74b77f}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::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}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::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}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::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}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep 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}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:700;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:700;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left,.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"] }]
3478
+ }], ctorParameters: () => [{ type: ProductConnectorService }, { type: IconCacheService }, { type: ProductSettingsService }, { type: ProductEventService }, { type: i0.ChangeDetectorRef }], propDecorators: { configurator: [{
3268
3479
  type: ViewChild,
3269
3480
  args: ['configurator', { read: ElementRef }]
3270
3481
  }], selections: [{
@@ -3948,6 +4159,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3948
4159
  }]
3949
4160
  }] });
3950
4161
 
4162
+ class PresetDialogModule {
4163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4164
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, declarations: [PresetDialogComponent], imports: [IconModule,
4165
+ PipeModule,
4166
+ ProductRelatedModule], exports: [PresetDialogComponent] }); }
4167
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, imports: [IconModule,
4168
+ PipeModule,
4169
+ ProductRelatedModule] }); }
4170
+ }
4171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PresetDialogModule, decorators: [{
4172
+ type: NgModule,
4173
+ args: [{
4174
+ imports: [
4175
+ IconModule,
4176
+ PipeModule,
4177
+ ProductRelatedModule
4178
+ ],
4179
+ declarations: [
4180
+ PresetDialogComponent
4181
+ ],
4182
+ exports: [
4183
+ PresetDialogComponent
4184
+ ]
4185
+ }]
4186
+ }] });
4187
+
3951
4188
  class ProductPageModule {
3952
4189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3953
4190
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, declarations: [ProductPageComponent], imports: [CommonModule,
@@ -3965,7 +4202,9 @@ class ProductPageModule {
3965
4202
  PipeModule,
3966
4203
  ProductDialogModule,
3967
4204
  LoaderModule,
3968
- RenderCarouselModule], exports: [ProductPageComponent] }); }
4205
+ RenderCarouselModule,
4206
+ ButtonModule,
4207
+ PresetDialogModule], exports: [ProductPageComponent] }); }
3969
4208
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, imports: [CommonModule,
3970
4209
  ProductSelectorTypeModule,
3971
4210
  ImageCarouselModule,
@@ -3981,7 +4220,9 @@ class ProductPageModule {
3981
4220
  PipeModule,
3982
4221
  ProductDialogModule,
3983
4222
  LoaderModule,
3984
- RenderCarouselModule] }); }
4223
+ RenderCarouselModule,
4224
+ ButtonModule,
4225
+ PresetDialogModule] }); }
3985
4226
  }
3986
4227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ProductPageModule, decorators: [{
3987
4228
  type: NgModule,
@@ -4002,7 +4243,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4002
4243
  PipeModule,
4003
4244
  ProductDialogModule,
4004
4245
  LoaderModule,
4005
- RenderCarouselModule
4246
+ RenderCarouselModule,
4247
+ ButtonModule,
4248
+ PresetDialogModule
4006
4249
  ],
4007
4250
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
4008
4251
  declarations: [