@colijnit/product 2.9.1 → 12.0.0

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.
Files changed (138) hide show
  1. package/app/components/core/header/header.module.d.ts +2 -0
  2. package/app/components/image-carousel/image-carousel.module.d.ts +2 -0
  3. package/app/components/product-additional-description/product-additional-description.module.d.ts +2 -0
  4. package/app/components/product-additional-info/product-additional-info.module.d.ts +2 -0
  5. package/app/components/product-addtocart/product-addtocart.module.d.ts +2 -0
  6. package/app/components/product-delivery/product-delivery.module.d.ts +2 -0
  7. package/app/components/product-description/product-description.module.d.ts +2 -0
  8. package/app/components/product-documents/product-document.module.d.ts +2 -0
  9. package/app/components/product-info-tabs/product-info-tabs.module.d.ts +2 -0
  10. package/app/components/product-page/product-page.component.d.ts +3 -1
  11. package/app/components/product-price/product-price.module.d.ts +2 -0
  12. package/app/components/product-properties/product-properties.module.d.ts +2 -0
  13. package/app/components/product-related/product-related.module.d.ts +2 -0
  14. package/app/components/product-selector-type/product-selector-type.module.d.ts +2 -0
  15. package/app/components/product-stock/product-stock.component.d.ts +3 -1
  16. package/app/components/product-stock/product-stock.module.d.ts +2 -0
  17. package/app/components/product-symbols/product-symbols.module.d.ts +2 -0
  18. package/app/ione-product.component.d.ts +2 -0
  19. package/bundles/colijnit-product.umd.js +1431 -959
  20. package/bundles/colijnit-product.umd.js.map +1 -1
  21. package/colijnit-product.d.ts +40 -27
  22. package/colijnit-product.metadata.json +1 -1
  23. package/esm2015/app/components/core/header/header.component.js +21 -17
  24. package/esm2015/app/components/core/header/header.module.js +19 -0
  25. package/esm2015/app/components/image-carousel/image-carousel.component.js +51 -35
  26. package/esm2015/app/components/image-carousel/image-carousel.module.js +23 -0
  27. package/esm2015/app/components/product-additional-description/product-additional-description.component.js +20 -15
  28. package/esm2015/app/components/product-additional-description/product-additional-description.module.js +21 -0
  29. package/esm2015/app/components/product-additional-info/product-additional-info.component.js +22 -20
  30. package/esm2015/app/components/product-additional-info/product-additional-info.module.js +21 -0
  31. package/esm2015/app/components/product-addtocart/product-addtocart.component.js +43 -40
  32. package/esm2015/app/components/product-addtocart/product-addtocart.module.js +24 -0
  33. package/esm2015/app/components/product-delivery/product-delivery.component.js +22 -15
  34. package/esm2015/app/components/product-delivery/product-delivery.module.js +23 -0
  35. package/esm2015/app/components/product-description/product-description.component.js +18 -14
  36. package/esm2015/app/components/product-description/product-description.module.js +19 -0
  37. package/esm2015/app/components/product-documents/product-document.module.js +25 -0
  38. package/esm2015/app/components/product-documents/product-documents.component.js +19 -18
  39. package/esm2015/app/components/product-external-source/product-external-source.component.js +32 -45
  40. package/esm2015/app/components/product-external-source/product-external-source.module.js +17 -19
  41. package/esm2015/app/components/product-info-tabs/product-info-tabs.component.js +36 -18
  42. package/esm2015/app/components/product-info-tabs/product-info-tabs.module.js +29 -0
  43. package/esm2015/app/components/product-page/product-page.component.js +56 -60
  44. package/esm2015/app/components/product-page/product-page.module.js +40 -62
  45. package/esm2015/app/components/product-price/product-price.component.js +26 -19
  46. package/esm2015/app/components/product-price/product-price.module.js +23 -0
  47. package/esm2015/app/components/product-properties/product-properties.component.js +24 -17
  48. package/esm2015/app/components/product-properties/product-properties.module.js +21 -0
  49. package/esm2015/app/components/product-related/product-related.component.js +33 -24
  50. package/esm2015/app/components/product-related/product-related.module.js +24 -0
  51. package/esm2015/app/components/product-selector-type/product-selector-type.component.js +32 -28
  52. package/esm2015/app/components/product-selector-type/product-selector-type.module.js +23 -0
  53. package/esm2015/app/components/product-stock/product-stock.component.js +29 -16
  54. package/esm2015/app/components/product-stock/product-stock.module.js +23 -0
  55. package/esm2015/app/components/product-symbols/product-symbols.component.js +28 -17
  56. package/esm2015/app/components/product-symbols/product-symbols.module.js +26 -0
  57. package/esm2015/app/enum/icon.enum.js +1 -1
  58. package/esm2015/app/enum/language-code.enum.js +1 -1
  59. package/esm2015/app/enum/selector-type.enum.js +1 -1
  60. package/esm2015/app/ione-product.component.js +39 -51
  61. package/esm2015/app/ione-product.module.js +21 -27
  62. package/esm2015/app/model/article-quantity.model.js +1 -1
  63. package/esm2015/app/model/icon.js +1 -1
  64. package/esm2015/app/model/productSettings.js +1 -1
  65. package/esm2015/app/model/render-modes.js +1 -1
  66. package/esm2015/app/model/render-parameters.js +1 -1
  67. package/esm2015/app/model/settings-options.js +1 -1
  68. package/esm2015/app/model/stock-and-delivery.js +1 -1
  69. package/esm2015/app/pipe/localize.pipe.js +8 -12
  70. package/esm2015/app/pipe/pipe.module.js +16 -18
  71. package/esm2015/app/product-version.js +3 -3
  72. package/esm2015/app/service/dictionary.service.js +10 -11
  73. package/esm2015/app/service/icon-cache.service.js +10 -12
  74. package/esm2015/app/service/product-connector-adapter.service.js +8 -8
  75. package/esm2015/app/service/product-connector.service.js +7 -8
  76. package/esm2015/app/service/product-event.service.js +12 -20
  77. package/esm2015/app/service/product-settings.service.js +7 -8
  78. package/esm2015/app/utils/bit-utils.js +1 -1
  79. package/esm2015/app/utils/json-utils.service.js +9 -10
  80. package/esm2015/assets/dictionary/text.properties.js +1 -1
  81. package/esm2015/colijnit-product.js +41 -28
  82. package/esm2015/public_api.js +2 -1
  83. package/fesm2015/colijnit-product.js +1053 -722
  84. package/fesm2015/colijnit-product.js.map +1 -1
  85. package/package.json +15 -18
  86. package/public_api.d.ts +1 -0
  87. package/app/components/product-info/product-info.component.d.ts +0 -14
  88. package/bundles/colijnit-product.umd.min.js +0 -16
  89. package/bundles/colijnit-product.umd.min.js.map +0 -1
  90. package/esm2015/app/components/product-info/product-info.component.js +0 -38
  91. package/esm5/app/components/core/header/header.component.js +0 -24
  92. package/esm5/app/components/image-carousel/image-carousel.component.js +0 -170
  93. package/esm5/app/components/product-additional-description/product-additional-description.component.js +0 -59
  94. package/esm5/app/components/product-additional-info/product-additional-info.component.js +0 -142
  95. package/esm5/app/components/product-addtocart/product-addtocart.component.js +0 -133
  96. package/esm5/app/components/product-delivery/product-delivery.component.js +0 -47
  97. package/esm5/app/components/product-description/product-description.component.js +0 -21
  98. package/esm5/app/components/product-documents/product-documents.component.js +0 -31
  99. package/esm5/app/components/product-external-source/product-external-source.component.js +0 -126
  100. package/esm5/app/components/product-external-source/product-external-source.module.js +0 -26
  101. package/esm5/app/components/product-info/product-info.component.js +0 -39
  102. package/esm5/app/components/product-info-tabs/product-info-tabs.component.js +0 -70
  103. package/esm5/app/components/product-page/product-page.component.js +0 -247
  104. package/esm5/app/components/product-page/product-page.module.js +0 -69
  105. package/esm5/app/components/product-price/product-price.component.js +0 -74
  106. package/esm5/app/components/product-properties/product-properties.component.js +0 -60
  107. package/esm5/app/components/product-related/product-related.component.js +0 -78
  108. package/esm5/app/components/product-selector-type/product-selector-type.component.js +0 -54
  109. package/esm5/app/components/product-stock/product-stock.component.js +0 -41
  110. package/esm5/app/components/product-symbols/product-symbols.component.js +0 -43
  111. package/esm5/app/enum/icon.enum.js +0 -19
  112. package/esm5/app/enum/language-code.enum.js +0 -8
  113. package/esm5/app/enum/selector-type.enum.js +0 -7
  114. package/esm5/app/ione-product.component.js +0 -194
  115. package/esm5/app/ione-product.module.js +0 -35
  116. package/esm5/app/model/article-quantity.model.js +0 -7
  117. package/esm5/app/model/icon.js +0 -18
  118. package/esm5/app/model/productSettings.js +0 -18
  119. package/esm5/app/model/render-modes.js +0 -7
  120. package/esm5/app/model/render-parameters.js +0 -12
  121. package/esm5/app/model/settings-options.js +0 -15
  122. package/esm5/app/model/stock-and-delivery.js +0 -10
  123. package/esm5/app/pipe/localize.pipe.js +0 -33
  124. package/esm5/app/pipe/pipe.module.js +0 -23
  125. package/esm5/app/product-version.js +0 -12
  126. package/esm5/app/service/dictionary.service.js +0 -95
  127. package/esm5/app/service/icon-cache.service.js +0 -47
  128. package/esm5/app/service/product-connector-adapter.service.js +0 -248
  129. package/esm5/app/service/product-connector.service.js +0 -141
  130. package/esm5/app/service/product-event.service.js +0 -38
  131. package/esm5/app/service/product-settings.service.js +0 -107
  132. package/esm5/app/utils/bit-utils.js +0 -22
  133. package/esm5/app/utils/json-utils.service.js +0 -42
  134. package/esm5/assets/dictionary/text.properties.js +0 -67
  135. package/esm5/colijnit-product.js +0 -33
  136. package/esm5/public_api.js +0 -5
  137. package/fesm5/colijnit-product.js +0 -2581
  138. package/fesm5/colijnit-product.js.map +0 -1
@@ -1,5 +1,6 @@
1
- import { __awaiter, __decorate } from 'tslib';
2
- import { ɵɵdefineInjectable, Injectable, ɵɵinject, Output, Directive, EventEmitter, ChangeDetectorRef, Input, Component, ViewEncapsulation, HostBinding, Renderer2, ViewChild, ElementRef, HostListener, Pipe, NgModule, SecurityContext, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Directive, Output, EventEmitter, Component, ViewEncapsulation, ChangeDetectorRef, Input, Renderer2, ViewChild, ElementRef, Pipe, NgModule, HostListener, HostBinding, SecurityContext, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
+ import { __awaiter } from 'tslib';
3
4
  import { Subject, BehaviorSubject } from 'rxjs';
4
5
  import { Options } from '@colijnit/ioneconnector/build/model/options';
5
6
  import { ArticleFullObject } from '@colijnit/articleapi/build/model/article-full-object';
@@ -10,13 +11,15 @@ import { DocumentContent } from '@colijnit/articleapi/build/model/document-conte
10
11
  import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
11
12
  import { Transaction } from '@colijnit/transactionapi/build/transaction';
12
13
  import { MainApi } from '@colijnit/mainapi';
14
+ import * as i1 from '@angular/common/http';
13
15
  import { HttpClient } from '@angular/common/http';
14
16
  import { StringUtils } from '@colijnit/ioneconnector/build/utils/string-utils';
15
17
  import { CommonModule } from '@angular/common';
16
- import { DomSanitizer } from '@angular/platform-browser';
17
18
  import { trigger, state, style, transition, animate } from '@angular/animations';
19
+ import * as i1$1 from '@angular/platform-browser';
20
+ import { DomSanitizer } from '@angular/platform-browser';
18
21
  import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
19
- import { IconModule, LoaderModule, NumberPickerModule, ButtonModule, PriceDisplayPipeModule, InputTextModule, FilesUploadModule, ScrollContainerModule, TileModule, LevelIndicatorModule, ArticleTileModule } from '@colijnit/corecomponents';
22
+ import { LoaderModule, ScrollContainerModule, PriceDisplayPipeModule, NumberPickerModule, ButtonModule, ArticleTileModule, IconModule, FilesUploadModule, TileModule } from '@colijnit/corecomponents';
20
23
  import { ConfiguratorStatisticsEnvironment } from '@colijnit/articleapi/build/model/configurator-statistics-environment';
21
24
 
22
25
  // this file is dynamically created, do not change this
@@ -24,12 +27,12 @@ class Version {
24
27
  constructor() {
25
28
  this.name = "@colijnit/product";
26
29
  this.description = "Product detail page project for iOne";
27
- this.symVer = "2.9.1";
28
- this.publishDate = "14-9-2023 16:32:35";
30
+ this.symVer = "12.0.0";
31
+ this.publishDate = "23-9-2023 11:50:39";
29
32
  }
30
33
  }
31
34
 
32
- let JsonUtilsService = class JsonUtilsService {
35
+ class JsonUtilsService {
33
36
  readJsonFile(filePath) {
34
37
  return __awaiter(this, void 0, void 0, function* () {
35
38
  try {
@@ -47,13 +50,13 @@ let JsonUtilsService = class JsonUtilsService {
47
50
  }
48
51
  });
49
52
  }
50
- };
51
- JsonUtilsService.ɵprov = ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
52
- JsonUtilsService = __decorate([
53
- Injectable({
54
- providedIn: 'root'
55
- })
56
- ], JsonUtilsService);
53
+ }
54
+ JsonUtilsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function JsonUtilsService_Factory() { return new JsonUtilsService(); }, token: JsonUtilsService, providedIn: "root" });
55
+ JsonUtilsService.decorators = [
56
+ { type: Injectable, args: [{
57
+ providedIn: 'root'
58
+ },] }
59
+ ];
57
60
 
58
61
  class SettingsOptions {
59
62
  constructor() {
@@ -100,7 +103,7 @@ class ProductSettings {
100
103
 
101
104
  // Sole responsibility is simply to wrap around a colijn.Connector to create a stable inner interface to the library in a 1:1 method way.
102
105
  // Only to be used by the IOneControllerService.
103
- let ProductConnectorAdapterService = class ProductConnectorAdapterService {
106
+ class ProductConnectorAdapterService {
104
107
  constructor() {
105
108
  this.showLoader = new Subject();
106
109
  this._boFactory = new BusinessObjectFactory();
@@ -233,10 +236,11 @@ let ProductConnectorAdapterService = class ProductConnectorAdapterService {
233
236
  return yield this.transactionConnector.getWebSessionSalesOrder();
234
237
  });
235
238
  }
236
- };
237
- ProductConnectorAdapterService = __decorate([
238
- Injectable()
239
- ], ProductConnectorAdapterService);
239
+ }
240
+ ProductConnectorAdapterService.decorators = [
241
+ { type: Injectable }
242
+ ];
243
+ ProductConnectorAdapterService.ctorParameters = () => [];
240
244
 
241
245
  var LanguageCode;
242
246
  (function (LanguageCode) {
@@ -312,7 +316,7 @@ class Dictionary {
312
316
  }
313
317
 
314
318
  // The localization service, providing peers with text translation functionality.
315
- let DictionaryService = class DictionaryService {
319
+ class DictionaryService {
316
320
  constructor(_http, _jsonUtils) {
317
321
  this._http = _http;
318
322
  this._jsonUtils = _jsonUtils;
@@ -383,19 +387,19 @@ let DictionaryService = class DictionaryService {
383
387
  }
384
388
  return text;
385
389
  }
386
- };
390
+ }
391
+ DictionaryService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
392
+ DictionaryService.decorators = [
393
+ { type: Injectable, args: [{
394
+ providedIn: 'root'
395
+ },] }
396
+ ];
387
397
  DictionaryService.ctorParameters = () => [
388
398
  { type: HttpClient },
389
399
  { type: JsonUtilsService }
390
- ];
391
- DictionaryService.ɵprov = ɵɵdefineInjectable({ factory: function DictionaryService_Factory() { return new DictionaryService(ɵɵinject(HttpClient), ɵɵinject(JsonUtilsService)); }, token: DictionaryService, providedIn: "root" });
392
- DictionaryService = __decorate([
393
- Injectable({
394
- providedIn: 'root'
395
- })
396
- ], DictionaryService);
400
+ ];
397
401
 
398
- let ProductSettingsService = class ProductSettingsService {
402
+ class ProductSettingsService {
399
403
  constructor(_jsonUtilsService, _dictionaryService) {
400
404
  this._jsonUtilsService = _jsonUtilsService;
401
405
  this._dictionaryService = _dictionaryService;
@@ -461,17 +465,17 @@ let ProductSettingsService = class ProductSettingsService {
461
465
  this.settingsLoaded.next(true);
462
466
  });
463
467
  }
464
- };
468
+ }
469
+ ProductSettingsService.decorators = [
470
+ { type: Injectable }
471
+ ];
465
472
  ProductSettingsService.ctorParameters = () => [
466
473
  { type: JsonUtilsService },
467
474
  { type: DictionaryService }
468
- ];
469
- ProductSettingsService = __decorate([
470
- Injectable()
471
- ], ProductSettingsService);
475
+ ];
472
476
 
473
477
  // Holds all iONE backend related state and methods for a running HomeDecorator. To be used anywhere internally.
474
- let ProductConnectorService = class ProductConnectorService {
478
+ class ProductConnectorService {
475
479
  constructor(_adapterService, _settingsService) {
476
480
  this._adapterService = _adapterService;
477
481
  this._settingsService = _settingsService;
@@ -560,16 +564,16 @@ let ProductConnectorService = class ProductConnectorService {
560
564
  onShowLoaderChange(showLoader) {
561
565
  this._shouldShowLoader = showLoader;
562
566
  }
563
- };
567
+ }
568
+ ProductConnectorService.decorators = [
569
+ { type: Injectable }
570
+ ];
564
571
  ProductConnectorService.ctorParameters = () => [
565
572
  { type: ProductConnectorAdapterService },
566
573
  { type: ProductSettingsService }
567
- ];
568
- ProductConnectorService = __decorate([
569
- Injectable()
570
- ], ProductConnectorService);
574
+ ];
571
575
 
572
- let ProductEventService = class ProductEventService {
576
+ class ProductEventService {
573
577
  constructor() {
574
578
  this.onAddToCart = new Subject();
575
579
  this.onAlternativeClick = new Subject();
@@ -584,25 +588,19 @@ let ProductEventService = class ProductEventService {
584
588
  this.onArticleInfoReceived = new Subject();
585
589
  this.onUpdateProductInfoTab = new Subject();
586
590
  }
587
- };
588
- __decorate([
589
- Output()
590
- ], ProductEventService.prototype, "onAddToCart", void 0);
591
- __decorate([
592
- Output()
593
- ], ProductEventService.prototype, "onAlternativeClick", void 0);
594
- __decorate([
595
- Output()
596
- ], ProductEventService.prototype, "onAddToQuote", void 0);
597
- __decorate([
598
- Output()
599
- ], ProductEventService.prototype, "onForceRenderImage", void 0);
600
- ProductEventService = __decorate([
601
- Directive(),
602
- Injectable()
603
- ], ProductEventService);
591
+ }
592
+ ProductEventService.decorators = [
593
+ { type: Directive },
594
+ { type: Injectable }
595
+ ];
596
+ ProductEventService.propDecorators = {
597
+ onAddToCart: [{ type: Output }],
598
+ onAlternativeClick: [{ type: Output }],
599
+ onAddToQuote: [{ type: Output }],
600
+ onForceRenderImage: [{ type: Output }]
601
+ };
604
602
 
605
- let IoneProductComponent = class IoneProductComponent {
603
+ class IoneProductComponent {
606
604
  constructor(_dictionary, _jsonUtils, _ione, _changeDetector, _appEventService, _settingsService) {
607
605
  // this.sku = 'CF-HILL';
608
606
  // this.sku = 'CF-ALMADA';
@@ -627,6 +625,7 @@ let IoneProductComponent = class IoneProductComponent {
627
625
  this.onArticleReceived = new EventEmitter();
628
626
  this.onSelectionsReceived = new EventEmitter();
629
627
  this.onAddToQuote = new EventEmitter();
628
+ this.openStockEvent = new EventEmitter();
630
629
  this.settingsLoaded = false;
631
630
  this._subs = [];
632
631
  // this.sku = "70000107";
@@ -696,7 +695,28 @@ let IoneProductComponent = class IoneProductComponent {
696
695
  this.onAddToCart.emit(json);
697
696
  });
698
697
  }
699
- };
698
+ openStock() {
699
+ this.openStockEvent.emit();
700
+ }
701
+ }
702
+ IoneProductComponent.decorators = [
703
+ { type: Component, args: [{
704
+ selector: 'app-ione-product',
705
+ template: `
706
+ <app-product-page *ngIf="settingsLoaded"
707
+ (openStockEvent)="openStock()" [sku]="sku"
708
+ ></app-product-page>
709
+ `,
710
+ providers: [
711
+ ProductEventService,
712
+ ProductSettingsService,
713
+ ProductConnectorAdapterService,
714
+ ProductConnectorService
715
+ ],
716
+ encapsulation: ViewEncapsulation.Emulated,
717
+ styles: [""]
718
+ },] }
719
+ ];
700
720
  IoneProductComponent.ctorParameters = () => [
701
721
  { type: DictionaryService },
702
722
  { type: JsonUtilsService },
@@ -705,166 +725,18 @@ IoneProductComponent.ctorParameters = () => [
705
725
  { type: ProductEventService },
706
726
  { type: ProductSettingsService }
707
727
  ];
708
- __decorate([
709
- Input()
710
- ], IoneProductComponent.prototype, "sku", void 0);
711
- __decorate([
712
- Input()
713
- ], IoneProductComponent.prototype, "settings", null);
714
- __decorate([
715
- Output()
716
- ], IoneProductComponent.prototype, "onAddToCart", void 0);
717
- __decorate([
718
- Output()
719
- ], IoneProductComponent.prototype, "forceRenderImage", void 0);
720
- __decorate([
721
- Output()
722
- ], IoneProductComponent.prototype, "onAlternativeClick", void 0);
723
- __decorate([
724
- Output()
725
- ], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
726
- __decorate([
727
- Output()
728
- ], IoneProductComponent.prototype, "onArticleReceived", void 0);
729
- __decorate([
730
- Output()
731
- ], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
732
- __decorate([
733
- Output()
734
- ], IoneProductComponent.prototype, "onAddToQuote", void 0);
735
- IoneProductComponent = __decorate([
736
- Component({
737
- selector: 'app-ione-product',
738
- template: `
739
- <app-product-page *ngIf="settingsLoaded"
740
- [sku]="sku"
741
- ></app-product-page>
742
- `,
743
- providers: [
744
- ProductEventService,
745
- ProductSettingsService,
746
- ProductConnectorAdapterService,
747
- ProductConnectorService
748
- ],
749
- encapsulation: ViewEncapsulation.Emulated,
750
- styles: [""]
751
- })
752
- ], IoneProductComponent);
753
-
754
- let ProductExternalSourceComponent = class ProductExternalSourceComponent {
755
- constructor(_sanitizer, _productConnectorService, _appEventService) {
756
- this._sanitizer = _sanitizer;
757
- this._productConnectorService = _productConnectorService;
758
- this._appEventService = _appEventService;
759
- this.addToCart = new EventEmitter();
760
- this.addToQuote = new EventEmitter();
761
- this.alternativeClick = new EventEmitter();
762
- this.showProduct = false;
763
- this.loaded = false;
764
- this.externalSettings = {};
765
- this._subs = [];
766
- }
767
- set externalSource(value) {
768
- this._externalSource = value;
769
- this.loaded = false;
770
- this._prepareExternalSource();
771
- }
772
- get externalSource() {
773
- return this._externalSource;
774
- }
775
- showClass() {
776
- return true;
777
- }
778
- ngOnInit() {
779
- this._subs.push(this._appEventService.onAddToCart.subscribe(json => this.addToCart.next(json)), this._appEventService.onAddToQuote.subscribe(json => this.addToQuote.next(json)), this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article)));
780
- }
781
- ngOnDestroy() {
782
- this._subs.forEach(s => s.unsubscribe());
783
- }
784
- _prepareExternalSource() {
785
- return __awaiter(this, void 0, void 0, function* () {
786
- if (!this._externalSource) {
787
- return;
788
- }
789
- this.externalUrl = undefined;
790
- this.externalSettings = {};
791
- if (this.externalSource.type === 'CATF') {
792
- // get bundle settings from external source
793
- const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
794
- this.externalSettings = JSON.parse(bundleSettings);
795
- if (this.options) {
796
- this.externalSettings.options = this.options;
797
- }
798
- // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
799
- // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
800
- if (this.externalSource.username && this.externalSource.password) {
801
- this.externalSettings.useLoginEncryption = true;
802
- this.externalSettings.username = this.externalSource.username;
803
- this.externalSettings.password = this.externalSource.password;
804
- }
805
- // finally show the catalog
806
- this.showProduct = true;
807
- }
808
- else {
809
- this.externalUrl = this.externalSource.url;
810
- this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
811
- this.showProduct = false;
812
- }
813
- this.loaded = true;
814
- });
815
- }
816
- };
817
- ProductExternalSourceComponent.ctorParameters = () => [
818
- { type: DomSanitizer },
819
- { type: ProductConnectorService },
820
- { type: ProductEventService }
821
- ];
822
- __decorate([
823
- Input()
824
- ], ProductExternalSourceComponent.prototype, "sku", void 0);
825
- __decorate([
826
- Input()
827
- ], ProductExternalSourceComponent.prototype, "externalSource", null);
828
- __decorate([
829
- Input()
830
- ], ProductExternalSourceComponent.prototype, "options", void 0);
831
- __decorate([
832
- Output()
833
- ], ProductExternalSourceComponent.prototype, "addToCart", void 0);
834
- __decorate([
835
- Output()
836
- ], ProductExternalSourceComponent.prototype, "addToQuote", void 0);
837
- __decorate([
838
- Output()
839
- ], ProductExternalSourceComponent.prototype, "alternativeClick", void 0);
840
- __decorate([
841
- HostBinding('class.co-product-external-source')
842
- ], ProductExternalSourceComponent.prototype, "showClass", null);
843
- ProductExternalSourceComponent = __decorate([
844
- Component({
845
- selector: 'co-product-external-source',
846
- template: `
847
- <ng-container *ngIf="loaded">
848
- <ng-container *ngIf="showProduct">
849
- <app-product-page
850
- [sku]="sku"
851
- [settings]="externalSettings"
852
- ></app-product-page>
853
- </ng-container>
854
- <ng-container *ngIf="!showProduct">
855
- <iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
856
- </ng-container>
857
- </ng-container>
858
- `,
859
- providers: [
860
- ProductEventService,
861
- ProductSettingsService,
862
- ProductConnectorAdapterService,
863
- ProductConnectorService
864
- ],
865
- encapsulation: ViewEncapsulation.None
866
- })
867
- ], ProductExternalSourceComponent);
728
+ IoneProductComponent.propDecorators = {
729
+ sku: [{ type: Input }],
730
+ settings: [{ type: Input }],
731
+ onAddToCart: [{ type: Output }],
732
+ forceRenderImage: [{ type: Output }],
733
+ onAlternativeClick: [{ type: Output }],
734
+ onArticleInfoReceived: [{ type: Output }],
735
+ onArticleReceived: [{ type: Output }],
736
+ onSelectionsReceived: [{ type: Output }],
737
+ onAddToQuote: [{ type: Output }],
738
+ openStockEvent: [{ type: Output }]
739
+ };
868
740
 
869
741
  class StockAndDelivery {
870
742
  constructor(stock, deliveryDescription) {
@@ -918,7 +790,7 @@ const IconSvg = {
918
790
  "warehouse": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" version=\"1.1\" sodipodi:docname=\"warehouse.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=\"6.675088\" inkscape:cx=\"9.6569985\" inkscape:cy=\"12.384637\" inkscape:window-x=\"-8\" inkscape:window-y=\"-8\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg8\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"M 507.785,146.242 260.318,1.175 c -2.603,-1.519 -5.803,-1.57 -8.439,-0.111 L 4.412,137.598 C 1.69,139.091 0,141.958 0,145.064 v 358.4 c 0,4.719 3.823,8.533 8.533,8.533 H 51.2 c 4.71,0 8.533,-3.814 8.533,-8.533 V 204.798 h 392.533 v 298.667 c 0,4.719 3.814,8.533 8.533,8.533 h 42.667 c 4.719,0 8.533,-3.814 8.533,-8.533 V 153.598 c 10e-4,-3.03 -1.603,-5.829 -4.214,-7.356 z m -12.852,348.689 h -25.6 V 196.264 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 H 51.2 c -4.71,0 -8.533,3.823 -8.533,8.533 v 298.667 h -25.6 V 150.099 L 255.872,18.344 494.933,158.487 Z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,392.531 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 324.267,392.531 h -102.4 c -4.71,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.823,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 230.4 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 281.6,401.064 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.823,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 426.667,290.131 h -102.4 c -4.719,0 -8.533,3.814 -8.533,8.533 v 102.4 c 0,4.719 3.814,8.533 8.533,8.533 h 102.4 c 4.719,0 8.533,-3.814 8.533,-8.533 v -102.4 c 0,-4.719 -3.814,-8.533 -8.533,-8.533 z m -8.534,102.4 H 332.8 v -85.333 h 85.333 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 384,298.664 v 25.6 h -17.067 v -25.6 h -17.067 v 34.133 c 0,4.719 3.814,8.533 8.533,8.533 h 34.133 c 4.719,0 8.533,-3.814 8.533,-8.533 v -34.133 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"255.998\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><rect x=\"51.200001\" y=\"221.864\" width=\"409.60001\" height=\"17.066999\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\"><g style=\"fill:#484f60;fill-opacity:1\"><path inkscape:connector-curvature=\"0\" d=\"m 298.667,119.464 h -85.333 c -4.71,0 -8.533,3.823 -8.533,8.533 v 34.133 c 0,4.71 3.823,8.533 8.533,8.533 h 85.333 c 4.719,0 8.533,-3.823 8.533,-8.533 v -34.133 c 0,-4.71 -3.814,-8.533 -8.533,-8.533 z m -8.534,34.134 h -68.267 v -17.067 h 68.267 z\" style=\"fill:#484f60;fill-opacity:1\" /></g></g><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /><g transform=\"matrix(0.05570714,0,0,0.05570648,10.763,10.859394)\" style=\"fill:#484f60;fill-opacity:1\" /></svg>"
919
791
  };
920
792
 
921
- let IconCacheService = class IconCacheService {
793
+ class IconCacheService {
922
794
  constructor(_sanitizer) {
923
795
  this._sanitizer = _sanitizer;
924
796
  this._iconCache = {};
@@ -942,18 +814,18 @@ let IconCacheService = class IconCacheService {
942
814
  }
943
815
  }
944
816
  }
945
- };
817
+ }
818
+ IconCacheService.ɵprov = i0.ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(i0.ɵɵinject(i1$1.DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
819
+ IconCacheService.decorators = [
820
+ { type: Injectable, args: [{
821
+ providedIn: 'root'
822
+ },] }
823
+ ];
946
824
  IconCacheService.ctorParameters = () => [
947
825
  { type: DomSanitizer }
948
- ];
949
- IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
950
- IconCacheService = __decorate([
951
- Injectable({
952
- providedIn: 'root'
953
- })
954
- ], IconCacheService);
826
+ ];
955
827
 
956
- let ProductPageComponent = class ProductPageComponent {
828
+ class ProductPageComponent {
957
829
  constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
958
830
  this._ione = _ione;
959
831
  this._renderer = _renderer;
@@ -962,6 +834,7 @@ let ProductPageComponent = class ProductPageComponent {
962
834
  this.settingsService = settingsService;
963
835
  this.appEventService = appEventService;
964
836
  this.icon = IconEnum;
837
+ this.openStockEvent = new EventEmitter();
965
838
  this.configurable = false;
966
839
  this.threeD = false;
967
840
  this.show2D = true;
@@ -1095,7 +968,49 @@ let ProductPageComponent = class ProductPageComponent {
1095
968
  }));
1096
969
  });
1097
970
  }
1098
- };
971
+ openStock() {
972
+ this.openStockEvent.emit();
973
+ }
974
+ }
975
+ ProductPageComponent.decorators = [
976
+ { type: Component, args: [{
977
+ selector: 'app-product-page',
978
+ template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n ></threed-configurator>\r\n </ng-container>\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\" [class.show-selections]=\"configuring\" [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" (openStockEvent)=\"openStock()\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"1\" [label]=\"'RELATED_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"4\" [isSmallModus]=\"false\" [label]=\"'ALTERNATIVE_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n",
979
+ animations: [
980
+ trigger('toggleFullScreen', [
981
+ state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
982
+ state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
983
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
984
+ ]),
985
+ trigger('toggleTopLeft', [
986
+ state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0' })),
987
+ state('halfscreen', style({ 'position': 'absolute', 'top': '*', 'left': '*' })),
988
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
989
+ ]),
990
+ trigger('toggleTopRight', [
991
+ state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'right': '0' })),
992
+ state('halfscreen', style({ 'position': '*', 'top': '*', 'right': '*' })),
993
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
994
+ ]),
995
+ trigger('toggleFullScreenRight', [
996
+ state('fullscreen', style({ 'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0' })),
997
+ state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
998
+ transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
999
+ ]),
1000
+ trigger('toggleVisibilityByState', [
1001
+ state('hide', style({ 'opacity': '0', 'display': 'none' })),
1002
+ state('show', style({ 'display': 'block', 'opacity': '1' })),
1003
+ transition('hide <=> show', animate('200ms 100ms ease-in-out')),
1004
+ ]),
1005
+ trigger('toggleVisibility', [
1006
+ state('void', style({ 'opacity': '0' })),
1007
+ state('*', style({ 'opacity': '1' })),
1008
+ transition('void => *', animate('200ms ease-in-out')),
1009
+ ])
1010
+ ],
1011
+ styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;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}.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:1px solid #efefef}.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{width:100%}.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;grid-gap:15px;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}.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;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{position:absolute;right:0;bottom:0;margin:0 -40px 0 0;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:bold;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:bold;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{width:100%}.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"]
1012
+ },] }
1013
+ ];
1099
1014
  ProductPageComponent.ctorParameters = () => [
1100
1015
  { type: ProductConnectorService },
1101
1016
  { type: Renderer2 },
@@ -1104,62 +1019,16 @@ ProductPageComponent.ctorParameters = () => [
1104
1019
  { type: ProductSettingsService },
1105
1020
  { type: ProductEventService }
1106
1021
  ];
1107
- __decorate([
1108
- ViewChild('configurator', { read: ElementRef })
1109
- ], ProductPageComponent.prototype, "configurator", void 0);
1110
- __decorate([
1111
- ViewChild('selections', { read: ElementRef })
1112
- ], ProductPageComponent.prototype, "selections", void 0);
1113
- __decorate([
1114
- ViewChild('fullscreenbutton', { read: ElementRef })
1115
- ], ProductPageComponent.prototype, "fullscreenbutton", void 0);
1116
- __decorate([
1117
- Input()
1118
- ], ProductPageComponent.prototype, "sku", null);
1119
- __decorate([
1120
- Input()
1121
- ], ProductPageComponent.prototype, "settings", null);
1122
- ProductPageComponent = __decorate([
1123
- Component({
1124
- selector: 'app-product-page',
1125
- template: "<ng-container *ngIf=\"settingsLoaded\">\r\n <div class=\"page-wrapper\">\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <div class=\"product-image-container\">\r\n <div class=\"product-page-block-selector-type\">\r\n <app-product-selector-type class=\"default-padding\"\r\n [(currentType)]=\"currentView\"\r\n [show2D]=\"configurable\"\r\n [show3D]=\"threeD\"\r\n ></app-product-selector-type>\r\n </div>\r\n <div class=\"product-page-block-image default-padding\" [class.full]=\"fullScreen\">\r\n <app-image-carousel [@toggleVisibilityByState]=\"show2D ? 'show' : 'hide'\" [images]=\"article?.images\" [showRefresh]=\"configurable && threeD\"></app-image-carousel>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-configurator #configurator class=\"threed-configurator\"\r\n [class.configurator-full-screen]=\"fullScreen\"\r\n [@toggleVisibilityByState]=\"show3D ? 'show' : 'hide'\"\r\n [@toggleFullScreen]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n ></threed-configurator>\r\n </ng-container>\r\n <co-icon #fullscreenbutton class=\"fullscreen-button\" *ngIf=\"show3D\"\r\n [@toggleTopLeft]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [iconData]=\"iconCache.getIcon(fullScreenIcon)\"\r\n (click)=\"showFullScreen()\"></co-icon>\r\n <co-icon class=\"threed-watermark\" *ngIf=\"show3D && fullScreen\"\r\n [iconData]=\"iconCache.getIcon(icon.Logo)\"></co-icon>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-description\">\r\n <app-product-description class=\"default-padding\" [article]=\"article\"></app-product-description>\r\n </div>\r\n <div class=\"product-page-block-additional\">\r\n <div class=\"product-page-block-additional-description\">\r\n <app-product-additional-description class=\"default-padding\" [article]=\"article\"></app-product-additional-description>\r\n </div>\r\n <div class=\"product-page-block-price\" [class.full]=\"configuring\">\r\n <app-product-price class=\"s-padding\" *ngIf=\"!configuring\"\r\n [pricing]=\"article?.pricing\"\r\n [configurable]=\"configurable\"\r\n ></app-product-price>\r\n <ng-container *ngIf=\"settingsLoaded\">\r\n <threed-selections #selections class=\"threed-selections\" [class.show-selections]=\"configuring\" [@toggleFullScreenRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\"\r\n [class.default-padding]=\"!fullScreen\"\r\n [class.show-full-screen]=\"fullScreen\"\r\n [class.mini-scrollbar]=\"fullScreen\"\r\n [sku]=\"sku\"\r\n [settings]=\"settings\"\r\n (onUserActionFromThreeD)=\"configuring = true\"\r\n (instanceSet)=\"setInstance($event)\"\r\n (onImageReceived)=\"appEventService.onImageReceived.next($event)\"\r\n (onRenderStarted)=\"appEventService.onRenderStarted.next()\"\r\n (onDraftRenderImageReceived)=\"appEventService.onDraftRenderImageReceived.next($event)\"\r\n (onArticleReceived)=\"appEventService.onArticleReceived.next($event.detail)\"\r\n (onSelectionsReceived)=\"appEventService.onSelectionsReceived.next($event.detail)\"\r\n (onArticleInfoReceived)=\"appEventService.onArticleInfoReceived.next($event.detail)\"\r\n ></threed-selections>\r\n </ng-container>\r\n </div>\r\n <div class=\"product-page-block-addtocart no-padding product-action-buttons\" *ngIf=\"!configuring\" [@toggleTopRight]=\"fullScreen ? 'fullscreen' : 'halfscreen'\">\r\n <app-product-addtocart\r\n [configurable]=\"configurable\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"addtocart-reserved product-action-buttons\" *ngIf=\"configuring\" [class.full-screen]=\"fullScreen\">\r\n <app-product-addtocart class=\"default-padding\"\r\n [configurable]=\"false\"\r\n [fullscreen]=\"fullScreen\"\r\n [configuring]=\"configuring\"\r\n [article]=\"article\"\r\n (startConfiguration)=\"handleStartConfiguration()\"\r\n ></app-product-addtocart>\r\n </div>\r\n <div class=\"product-page-block-variants\">\r\n <app-product-related class=\"no-padding\" *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"64\" [label]=\"'VARIANTS' | localize\"></app-product-related>\r\n </div>\r\n <div class=\"product-page-block-stock\">\r\n <app-product-stock class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-stock>\r\n </div>\r\n <div class=\"product-page-block-delivery\">\r\n <app-product-delivery class=\"no-padding\" [stockAndDelivery]=\"stockAndDelivery\"></app-product-delivery>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content\">\r\n <div class=\"page-wrapper-left\">\r\n <app-product-info-tabs class=\"no-padding\" [article]=\"article\"></app-product-info-tabs>\r\n </div>\r\n <div class=\"page-wrapper-right\">\r\n <div class=\"product-page-block-related s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"1\" [label]=\"'RELATED_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"page-wrapper-content no-top-margin\">\r\n <div class=\"page-wrapper-full\">\r\n <div class=\"product-page-block-alternatives s-padding\">\r\n <app-product-related *ngIf=\"article?.relatedArticles && article?.relatedArticles.length > 0\"\r\n [articles]=\"article?.relatedArticles\" [refType]=\"4\" [isSmallModus]=\"false\" [label]=\"'ALTERNATIVE_PRODUCTS' | localize\"></app-product-related>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n",
1126
- animations: [
1127
- trigger('toggleFullScreen', [
1128
- state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
1129
- state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
1130
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1131
- ]),
1132
- trigger('toggleTopLeft', [
1133
- state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0' })),
1134
- state('halfscreen', style({ 'position': 'absolute', 'top': '*', 'left': '*' })),
1135
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1136
- ]),
1137
- trigger('toggleTopRight', [
1138
- state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'right': '0' })),
1139
- state('halfscreen', style({ 'position': '*', 'top': '*', 'right': '*' })),
1140
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1141
- ]),
1142
- trigger('toggleFullScreenRight', [
1143
- state('fullscreen', style({ 'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0' })),
1144
- state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
1145
- transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
1146
- ]),
1147
- trigger('toggleVisibilityByState', [
1148
- state('hide', style({ 'opacity': '0', 'display': 'none' })),
1149
- state('show', style({ 'display': 'block', 'opacity': '1' })),
1150
- transition('hide <=> show', animate('200ms 100ms ease-in-out')),
1151
- ]),
1152
- trigger('toggleVisibility', [
1153
- state('void', style({ 'opacity': '0' })),
1154
- state('*', style({ 'opacity': '1' })),
1155
- transition('void => *', animate('200ms ease-in-out')),
1156
- ])
1157
- ],
1158
- styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content.no-top-margin,.page-wrapper-content:first-child{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;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}.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:1px solid #efefef}.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:.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 0 rgba(0,0,0,.2)}::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}.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:.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:0;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;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:.2s}.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{position:absolute;right:0;bottom:0;margin:0 -40px 0 0;transition:.2s;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:0;padding:15px 0;background:0 0!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}}"]
1159
- })
1160
- ], ProductPageComponent);
1022
+ ProductPageComponent.propDecorators = {
1023
+ configurator: [{ type: ViewChild, args: ['configurator', { read: ElementRef },] }],
1024
+ selections: [{ type: ViewChild, args: ['selections', { read: ElementRef },] }],
1025
+ fullscreenbutton: [{ type: ViewChild, args: ['fullscreenbutton', { read: ElementRef },] }],
1026
+ sku: [{ type: Input }],
1027
+ settings: [{ type: Input }],
1028
+ openStockEvent: [{ type: Output }]
1029
+ };
1161
1030
 
1162
- let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1031
+ class ProductSelectorTypeComponent {
1163
1032
  constructor(_iconCache, _changeDetector) {
1164
1033
  this._iconCache = _iconCache;
1165
1034
  this._changeDetector = _changeDetector;
@@ -1178,35 +1047,101 @@ let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
1178
1047
  this.onIconClick.next(this.currentType);
1179
1048
  this._changeDetector.detectChanges();
1180
1049
  }
1181
- };
1050
+ }
1051
+ ProductSelectorTypeComponent.decorators = [
1052
+ { type: Component, args: [{
1053
+ selector: 'app-product-selector-type',
1054
+ template: `
1055
+ <div *ngIf="show2D || show3D" class="show-in" [textContent]="'SHOW_IN' | localize"></div>
1056
+ <!--
1057
+ <co-icon *ngIf="show2D" class="selector-type-icon"
1058
+ [class.active]="currentType === type.TwoD"
1059
+ [iconData]="twoDIcon"
1060
+ (click)="handleIconClick(type.TwoD)"
1061
+ ></co-icon>
1062
+ <co-icon *ngIf="show3D" class="selector-type-icon"
1063
+ [class.active]="currentType === type.ThreeD"
1064
+ [iconData]="threeDIcon"
1065
+ (click)="handleIconClick(type.ThreeD)"
1066
+ ></co-icon>
1067
+ -->
1068
+ `,
1069
+ styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>*:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:none;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}\n"]
1070
+ },] }
1071
+ ];
1182
1072
  ProductSelectorTypeComponent.ctorParameters = () => [
1183
1073
  { type: IconCacheService },
1184
1074
  { type: ChangeDetectorRef }
1185
1075
  ];
1186
- __decorate([
1187
- Input()
1188
- ], ProductSelectorTypeComponent.prototype, "show2D", void 0);
1189
- __decorate([
1190
- Input()
1191
- ], ProductSelectorTypeComponent.prototype, "show3D", void 0);
1192
- __decorate([
1193
- Input()
1194
- ], ProductSelectorTypeComponent.prototype, "currentType", void 0);
1195
- __decorate([
1196
- Output()
1197
- ], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
1198
- __decorate([
1199
- Output()
1200
- ], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
1201
- ProductSelectorTypeComponent = __decorate([
1202
- Component({
1203
- selector: 'app-product-selector-type',
1204
- template: "<div *ngIf=\"show2D || show3D\" class=\"show-in\" [textContent]=\"'SHOW_IN' | localize\"></div>\n<co-icon *ngIf=\"show2D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.TwoD\"\n [iconData]=\"twoDIcon\"\n (click)=\"handleIconClick(type.TwoD)\"\n></co-icon>\n<co-icon *ngIf=\"show3D\" class=\"selector-type-icon\"\n [class.active]=\"currentType === type.ThreeD\"\n [iconData]=\"threeDIcon\"\n (click)=\"handleIconClick(type.ThreeD)\"\n></co-icon>\n",
1205
- styles: [":host{display:flex;flex-direction:row;align-items:center}:host .show-in{display:none}:host>:not(:last-child){margin-right:10px}::ng-deep co-icon.selector-type-icon{box-shadow:inset 0 0 0 1px #22313c;border-radius:50%;background:0 0;height:34px;width:34px;cursor:pointer}::ng-deep co-icon.selector-type-icon.active{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}::ng-deep co-icon.selector-type-icon.active [fill]{fill:#fff}"]
1206
- })
1207
- ], ProductSelectorTypeComponent);
1076
+ ProductSelectorTypeComponent.propDecorators = {
1077
+ show2D: [{ type: Input }],
1078
+ show3D: [{ type: Input }],
1079
+ currentType: [{ type: Input }],
1080
+ onIconClick: [{ type: Output }],
1081
+ currentTypeChange: [{ type: Output }]
1082
+ };
1083
+
1084
+ // A pipe for localizing string values in view templates.
1085
+ class LocalizePipe {
1086
+ constructor(_dictionaryService) {
1087
+ this._dictionaryService = _dictionaryService;
1088
+ }
1089
+ transform(value, upperCaseFirst = true, replace = []) {
1090
+ if (!value) {
1091
+ return '';
1092
+ }
1093
+ replace = replace ? replace : [];
1094
+ if (!Array.isArray(replace)) {
1095
+ replace = [replace];
1096
+ }
1097
+ return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1098
+ }
1099
+ }
1100
+ LocalizePipe.decorators = [
1101
+ { type: Pipe, args: [{
1102
+ name: 'localize'
1103
+ },] }
1104
+ ];
1105
+ LocalizePipe.ctorParameters = () => [
1106
+ { type: DictionaryService }
1107
+ ];
1108
+
1109
+ class PipeModule {
1110
+ }
1111
+ PipeModule.decorators = [
1112
+ { type: NgModule, args: [{
1113
+ declarations: [
1114
+ LocalizePipe
1115
+ ],
1116
+ providers: [
1117
+ LocalizePipe
1118
+ ],
1119
+ exports: [
1120
+ LocalizePipe
1121
+ ]
1122
+ },] }
1123
+ ];
1124
+
1125
+ // import {IconModule} from '@colijnit/corecomponents';
1126
+ class ProductSelectorTypeModule {
1127
+ }
1128
+ ProductSelectorTypeModule.decorators = [
1129
+ { type: NgModule, args: [{
1130
+ imports: [
1131
+ CommonModule,
1132
+ PipeModule /*,
1133
+ IconModule*/
1134
+ ],
1135
+ declarations: [
1136
+ ProductSelectorTypeComponent
1137
+ ],
1138
+ exports: [
1139
+ ProductSelectorTypeComponent
1140
+ ]
1141
+ },] }
1142
+ ];
1208
1143
 
1209
- let ImageCarouselComponent = class ImageCarouselComponent {
1144
+ class ImageCarouselComponent {
1210
1145
  constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
1211
1146
  this._ione = _ione;
1212
1147
  this._appEventService = _appEventService;
@@ -1318,7 +1253,44 @@ let ImageCarouselComponent = class ImageCarouselComponent {
1318
1253
  }
1319
1254
  }
1320
1255
  }
1321
- };
1256
+ }
1257
+ ImageCarouselComponent.decorators = [
1258
+ { type: Component, args: [{
1259
+ selector: 'app-image-carousel',
1260
+ template: `
1261
+ <div id="product_page_carousel">
1262
+ <div id="product_page_carousel_items">
1263
+ <co-loader [isShown]="showLoader"></co-loader>
1264
+ <div #carousel class="inner-carousel">
1265
+ <!-- This has been taken out of the for loop to prevent flashing images when updating. -->
1266
+ <div *ngIf="images[0]" class="carousel-item" [id]="'slide-0'" [class.active]="isCurrentIndex(0)">
1267
+ <img [src]="getImageSrc(images[0])">
1268
+ </div>
1269
+ <div *ngFor="let image of images.slice(1); let index = index" class="carousel-item" [id]="'slide-' + (index + 1)" [class.active]="isCurrentIndex((index + 1))">
1270
+ <img [src]="getImageSrc(image)">
1271
+ </div>
1272
+ <div class="carousel-scroller-layer" *ngIf="images && images.length > 1">
1273
+ <div class="carousel-item-scroller prev" (click)="gotoPrevSlide()" *ngIf="currentIndex > 0"></div>
1274
+ <div class="carousel-item-scroller next" (click)="gotoNextSlide()" *ngIf="currentIndex < images.length - 1"></div>
1275
+ </div>
1276
+ </div>
1277
+ <!--
1278
+ <co-icon class="selector-type-icon refresh-button" [iconData]="iconCache.getIcon(icons.Refresh)" (click)="onForceRenderImage()" [class.loading]="showLoader" *ngIf="showRefresh"></co-icon>
1279
+ -->
1280
+ </div>
1281
+
1282
+ <div id="product_page_carousel_thumbs">
1283
+ <co-scroll-container class="scroll-container" *ngIf="images && images.length > 1">
1284
+ <div *ngFor="let image of images; let index = index" class="carousel-thumb" [class.active]="index === currentIndex">
1285
+ <img [src]="getImageSrc(image)" (click)="handleThumbClick(index)"/>
1286
+ </div>
1287
+ </co-scroll-container>
1288
+ </div>
1289
+ </div>
1290
+ `,
1291
+ styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
1292
+ },] }
1293
+ ];
1322
1294
  ImageCarouselComponent.ctorParameters = () => [
1323
1295
  { type: ProductConnectorService },
1324
1296
  { type: ProductEventService },
@@ -1326,50 +1298,72 @@ ImageCarouselComponent.ctorParameters = () => [
1326
1298
  { type: DomSanitizer },
1327
1299
  { type: IconCacheService }
1328
1300
  ];
1329
- __decorate([
1330
- ViewChild('carousel', { read: ElementRef })
1331
- ], ImageCarouselComponent.prototype, "carousel", void 0);
1332
- __decorate([
1333
- Input()
1334
- ], ImageCarouselComponent.prototype, "showRefresh", void 0);
1335
- __decorate([
1336
- Input()
1337
- ], ImageCarouselComponent.prototype, "images", null);
1338
- __decorate([
1339
- HostListener('window:resize')
1340
- ], ImageCarouselComponent.prototype, "handleWindowResize", null);
1341
- __decorate([
1342
- HostListener('swipeleft')
1343
- ], ImageCarouselComponent.prototype, "gotoNextSlide", null);
1344
- __decorate([
1345
- HostListener('swiperight')
1346
- ], ImageCarouselComponent.prototype, "gotoPrevSlide", null);
1347
- __decorate([
1348
- HostBinding('class.resizing')
1349
- ], ImageCarouselComponent.prototype, "resizing", void 0);
1350
- ImageCarouselComponent = __decorate([
1351
- Component({
1352
- selector: 'app-image-carousel',
1353
- template: "<div id=\"product_page_carousel\">\n <div id=\"product_page_carousel_items\">\n <co-loader [isShown]=\"showLoader\"></co-loader>\n <div #carousel class=\"inner-carousel\">\n <!-- This has been taken out of the for loop to prevent flashing images when updating. -->\n <div *ngIf=\"images[0]\" class=\"carousel-item\" [id]=\"'slide-0'\" [class.active]=\"isCurrentIndex(0)\">\n <img [src]=\"getImageSrc(images[0])\">\n </div>\n <div *ngFor=\"let image of images.slice(1); let index = index\" class=\"carousel-item\" [id]=\"'slide-' + (index + 1)\" [class.active]=\"isCurrentIndex((index + 1))\">\n <img [src]=\"getImageSrc(image)\">\n </div>\n <div class=\"carousel-scroller-layer\" *ngIf=\"images && images.length > 1\">\n <div class=\"carousel-item-scroller prev\" (click)=\"gotoPrevSlide()\" *ngIf=\"currentIndex > 0\"></div>\n <div class=\"carousel-item-scroller next\" (click)=\"gotoNextSlide()\" *ngIf=\"currentIndex < images.length - 1\"></div>\n </div>\n </div>\n <co-icon class=\"selector-type-icon refresh-button\" [iconData]=\"iconCache.getIcon(icons.Refresh)\" (click)=\"onForceRenderImage()\" [class.loading]=\"showLoader\" *ngIf=\"showRefresh\"></co-icon>\n </div>\n\n <div id=\"product_page_carousel_thumbs\">\n <co-scroll-container class=\"scroll-container\" *ngIf=\"images && images.length > 1\">\n <div *ngFor=\"let image of images; let index = index\" class=\"carousel-thumb\" [class.active]=\"index === currentIndex\">\n <img [src]=\"getImageSrc(image)\" (click)=\"handleThumbClick(index)\"/>\n </div>\n </co-scroll-container>\n </div>\n</div>\n",
1354
- styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{-webkit-animation:1s linear infinite spin;animation:1s linear infinite spin}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74b77f;transition:.2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:.2s;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width:650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@-webkit-keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}"]
1355
- })
1356
- ], ImageCarouselComponent);
1301
+ ImageCarouselComponent.propDecorators = {
1302
+ carousel: [{ type: ViewChild, args: ['carousel', { read: ElementRef },] }],
1303
+ showRefresh: [{ type: Input }],
1304
+ images: [{ type: Input }],
1305
+ handleWindowResize: [{ type: HostListener, args: ['window:resize',] }],
1306
+ gotoNextSlide: [{ type: HostListener, args: ['swipeleft',] }],
1307
+ gotoPrevSlide: [{ type: HostListener, args: ['swiperight',] }],
1308
+ resizing: [{ type: HostBinding, args: ['class.resizing',] }]
1309
+ };
1310
+
1311
+ class ImageCarouselModule {
1312
+ }
1313
+ ImageCarouselModule.decorators = [
1314
+ { type: NgModule, args: [{
1315
+ imports: [
1316
+ CommonModule,
1317
+ LoaderModule,
1318
+ // IconModule,
1319
+ ScrollContainerModule
1320
+ ],
1321
+ declarations: [
1322
+ ImageCarouselComponent
1323
+ ],
1324
+ exports: [
1325
+ ImageCarouselComponent
1326
+ ]
1327
+ },] }
1328
+ ];
1357
1329
 
1358
- let ProductDescriptionComponent = class ProductDescriptionComponent {
1330
+ class ProductDescriptionComponent {
1359
1331
  constructor() { }
1360
1332
  ngOnInit() {
1361
1333
  }
1362
- };
1363
- __decorate([
1364
- Input()
1365
- ], ProductDescriptionComponent.prototype, "article", void 0);
1366
- ProductDescriptionComponent = __decorate([
1367
- Component({
1368
- selector: 'app-product-description',
1369
- template: "<div class=\"pd-title-wrapper\">\n <span class=\"pd-description\" [textContent]=\"article?.descriptionRetail\" *ngIf=\"article?.descriptionRetail\"></span>\n <span class=\"pd-sku\" [textContent]=\"article?.articleNr\" *ngIf=\"article?.articleNr\"></span>\n</div>\n",
1370
- styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:700;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width:650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}"]
1371
- })
1372
- ], ProductDescriptionComponent);
1334
+ }
1335
+ ProductDescriptionComponent.decorators = [
1336
+ { type: Component, args: [{
1337
+ selector: 'app-product-description',
1338
+ template: `
1339
+ <div class="pd-title-wrapper">
1340
+ <span class="pd-description" [textContent]="article?.descriptionRetail" *ngIf="article?.descriptionRetail"></span>
1341
+ <span class="pd-sku" [textContent]="article?.articleNr" *ngIf="article?.articleNr"></span>
1342
+ </div>
1343
+ `,
1344
+ styles: [":host{display:block}.pd-title-wrapper{margin:20px 0 0}.pd-description{color:#22313c;font-size:25px;font-weight:bold;width:100%;display:block}.pd-sku{color:#5b6875;font-size:16px}@media screen and (max-width: 650px){.pd-description{font-size:21px}.pd-sku{font-size:13px}}\n"]
1345
+ },] }
1346
+ ];
1347
+ ProductDescriptionComponent.ctorParameters = () => [];
1348
+ ProductDescriptionComponent.propDecorators = {
1349
+ article: [{ type: Input }]
1350
+ };
1351
+
1352
+ class ProductDescriptionModule {
1353
+ }
1354
+ ProductDescriptionModule.decorators = [
1355
+ { type: NgModule, args: [{
1356
+ imports: [
1357
+ CommonModule
1358
+ ],
1359
+ declarations: [
1360
+ ProductDescriptionComponent
1361
+ ],
1362
+ exports: [
1363
+ ProductDescriptionComponent
1364
+ ]
1365
+ },] }
1366
+ ];
1373
1367
 
1374
1368
  class BitUtils {
1375
1369
  static IsShortDescription(bit) {
@@ -1389,7 +1383,7 @@ class BitUtils {
1389
1383
  }
1390
1384
  }
1391
1385
 
1392
- let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionComponent {
1386
+ class ProductAdditionalDescriptionComponent {
1393
1387
  constructor(_appEventService) {
1394
1388
  this._appEventService = _appEventService;
1395
1389
  }
@@ -1422,22 +1416,46 @@ let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionCo
1422
1416
  }
1423
1417
  }
1424
1418
  }
1425
- };
1419
+ }
1420
+ ProductAdditionalDescriptionComponent.decorators = [
1421
+ { type: Component, args: [{
1422
+ selector: 'app-product-additional-description',
1423
+ template: `
1424
+ <ng-container *ngIf="description !== ''">
1425
+ <div class="pd-additional-description">
1426
+ <p [innerHTML]="description"></p>
1427
+ <button class="pd-read-more-btn" [textContent]="'READ_MORE' | localize" (click)="onReadMore()"></button>
1428
+ </div>
1429
+ </ng-container>
1430
+ `,
1431
+ styles: [":host{display:block;padding-top:0!important}:host *:focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:transparent;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width: 650px){:host .pd-additional-description{font-size:12px}}\n"]
1432
+ },] }
1433
+ ];
1426
1434
  ProductAdditionalDescriptionComponent.ctorParameters = () => [
1427
1435
  { type: ProductEventService }
1428
1436
  ];
1429
- __decorate([
1430
- Input()
1431
- ], ProductAdditionalDescriptionComponent.prototype, "article", null);
1432
- ProductAdditionalDescriptionComponent = __decorate([
1433
- Component({
1434
- selector: 'app-product-additional-description',
1435
- template: "<ng-container *ngIf=\"description !== ''\">\n <div class=\"pd-additional-description\">\n <p [innerHTML]=\"description\"></p>\n <button class=\"pd-read-more-btn\" [textContent]=\"'READ_MORE' | localize\" (click)=\"onReadMore()\"></button>\n </div>\n</ng-container>\n",
1436
- styles: [":host{display:block;padding-top:0!important}:host :focus{outline:0!important}:host .pd-additional-description{line-height:190%;color:#22313c;font-size:13px}:host .pd-read-more-btn{color:#2b60a7;border:none;background:0 0;cursor:pointer;text-decoration:underline;font-family:iOneMontserrat}:host .pd-read-more-btn:hover{color:#74b77f}@media screen and (max-width:650px){:host .pd-additional-description{font-size:12px}}"]
1437
- })
1438
- ], ProductAdditionalDescriptionComponent);
1437
+ ProductAdditionalDescriptionComponent.propDecorators = {
1438
+ article: [{ type: Input }]
1439
+ };
1440
+
1441
+ class ProductAdditionalDescriptionModule {
1442
+ }
1443
+ ProductAdditionalDescriptionModule.decorators = [
1444
+ { type: NgModule, args: [{
1445
+ imports: [
1446
+ CommonModule,
1447
+ PipeModule
1448
+ ],
1449
+ declarations: [
1450
+ ProductAdditionalDescriptionComponent
1451
+ ],
1452
+ exports: [
1453
+ ProductAdditionalDescriptionComponent
1454
+ ]
1455
+ },] }
1456
+ ];
1439
1457
 
1440
- let ProductPriceComponent = class ProductPriceComponent {
1458
+ class ProductPriceComponent {
1441
1459
  constructor(_changeDetector) {
1442
1460
  this._changeDetector = _changeDetector;
1443
1461
  this.showFromPrice = false;
@@ -1481,25 +1499,52 @@ let ProductPriceComponent = class ProductPriceComponent {
1481
1499
  return '€';
1482
1500
  }
1483
1501
  }
1484
- };
1502
+ }
1503
+ ProductPriceComponent.decorators = [
1504
+ { type: Component, args: [{
1505
+ selector: 'app-product-price',
1506
+ template: `
1507
+ <div *ngIf="toPrice">
1508
+ <div class="price-wrapper" *ngIf="fromPrice > toPrice">
1509
+ <div class="from-price-label" [textContent]="fromLabel | localize"></div>
1510
+ <div class="from-price" [textContent]="fromPrice | priceDisplay: valutaSign"></div>
1511
+ </div>
1512
+ <div class="price-wrapper">
1513
+ <div class="to-price-label" [textContent]="toLabel | localize"></div>
1514
+ <div class="to-price" [textContent]="toPrice | priceDisplay: valutaSign"></div>
1515
+ </div>
1516
+ </div>
1517
+ `,
1518
+ styles: [":host{display:flex;flex-direction:column}.price-wrapper{width:100%;font-size:15px;margin:0 0 5px;display:inline-block}.price-wrapper:last-child{margin:0}.from-price-label,.to-price-label{color:#5b6875;display:none}.from-price{font-size:16px;font-weight:bold;text-decoration:line-through;color:#5b6875}.to-price{font-size:25px;font-weight:bold;color:#74b77f}@media screen and (max-width: 650px){.from-price{font-size:13px}.to-price{font-size:21px}}\n"]
1519
+ },] }
1520
+ ];
1485
1521
  ProductPriceComponent.ctorParameters = () => [
1486
1522
  { type: ChangeDetectorRef }
1487
1523
  ];
1488
- __decorate([
1489
- Input()
1490
- ], ProductPriceComponent.prototype, "pricing", null);
1491
- __decorate([
1492
- Input()
1493
- ], ProductPriceComponent.prototype, "configurable", null);
1494
- ProductPriceComponent = __decorate([
1495
- Component({
1496
- selector: 'app-product-price',
1497
- template: "<div *ngIf=\"toPrice\">\n <div class=\"price-wrapper\" *ngIf=\"fromPrice > toPrice\">\n <div class=\"from-price-label\" [textContent]=\"fromLabel | localize\"></div>\n <div class=\"from-price\" [textContent]=\"fromPrice | priceDisplay\"></div>\n </div>\n <div class=\"price-wrapper\">\n <div class=\"to-price-label\" [textContent]=\"toLabel | localize\"></div>\n <div class=\"to-price\" [textContent]=\"toPrice | priceDisplay\"></div>\n </div>\n</div>\n",
1498
- styles: [":host{display:flex;flex-direction:column}.price-wrapper{width:100%;font-size:15px;margin:0 0 5px;display:inline-block}.price-wrapper:last-child{margin:0}.from-price-label,.to-price-label{color:#5b6875;display:none}.from-price{font-size:16px;font-weight:700;text-decoration:line-through;color:#5b6875}.to-price{font-size:25px;font-weight:700;color:#74b77f}@media screen and (max-width:650px){.from-price{font-size:13px}.to-price{font-size:21px}}"]
1499
- })
1500
- ], ProductPriceComponent);
1524
+ ProductPriceComponent.propDecorators = {
1525
+ pricing: [{ type: Input }],
1526
+ configurable: [{ type: Input }]
1527
+ };
1528
+
1529
+ class ProductPriceModule {
1530
+ }
1531
+ ProductPriceModule.decorators = [
1532
+ { type: NgModule, args: [{
1533
+ imports: [
1534
+ CommonModule,
1535
+ PipeModule,
1536
+ PriceDisplayPipeModule
1537
+ ],
1538
+ declarations: [
1539
+ ProductPriceComponent
1540
+ ],
1541
+ exports: [
1542
+ ProductPriceComponent
1543
+ ]
1544
+ },] }
1545
+ ];
1501
1546
 
1502
- let ProductAddtocartComponent = class ProductAddtocartComponent {
1547
+ class ProductAddtocartComponent {
1503
1548
  constructor(iconCache, _ioneControllerService, _appEventService, _settingsService) {
1504
1549
  this.iconCache = iconCache;
1505
1550
  this._ioneControllerService = _ioneControllerService;
@@ -1548,50 +1593,73 @@ let ProductAddtocartComponent = class ProductAddtocartComponent {
1548
1593
  return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, configuratorStatistics);
1549
1594
  });
1550
1595
  }
1551
- };
1596
+ }
1597
+ ProductAddtocartComponent.decorators = [
1598
+ { type: Component, args: [{
1599
+ selector: 'app-product-addtocart',
1600
+ template: `
1601
+ <div class="atc-wrapper">
1602
+ <co-number-picker *ngIf="!configurable && !configuring" class="quantity-select" [(model)]="quantity" [min]="1" horizontal></co-number-picker>
1603
+ <div class="button-wrapper">
1604
+ <co-button class="configure-button" *ngIf="configurable"
1605
+ [iconData]="iconCache.getIcon(icon.MagicWand)"
1606
+ [label]="'CONFIGURE' | localize"
1607
+ (onClick)="startConfiguration.emit()"
1608
+ ></co-button>
1609
+ <co-button #addtocartbutton class="cart-button" *ngIf="!configurable"
1610
+ [iconData]="iconCache.getIcon(icon.AddToCartDrop)"
1611
+ [label]="'SHOPPING_CART_IN' | localize"
1612
+ (onClick)="handleAddToCartClick(quantity)"
1613
+ ></co-button>
1614
+ <co-button class="cart-button quote" *ngIf="!configurable && showQuoteButton"
1615
+ [iconData]="iconCache.getIcon(icon.Quote)"
1616
+ [label]="'QUOTATION' | localize"
1617
+ (onClick)="handleAddToQuoteClick(quantity)"
1618
+ ></co-button>
1619
+ </div>
1620
+ </div>
1621
+ `,
1622
+ styles: [":host{display:flex;flex-direction:column}:host *:not(:last-child){margin-bottom:5px}:host .atc-wrapper{display:flex;flex-direction:row;align-items:baseline}:host .atc-wrapper .quantity-select{margin-right:5px}:host.full-screen .cart-button{position:fixed;right:20px;bottom:20px;z-index:3}::ng-deep co-number-picker{max-width:100px;border:2px solid #f6f5f4;border-radius:5px}::ng-deep co-number-picker ::ng-deep co-input-text{height:50px!important;border:none!important;width:50px!important}::ng-deep co-number-picker ::ng-deep co-input-text:after{display:none}::ng-deep co-number-picker ::ng-deep co-input-text.focused{box-shadow:none!important;border:none!important;background:none!important}::ng-deep co-number-picker ::ng-deep co-input-text .clear-icon{display:none}::ng-deep co-number-picker ::ng-deep co-input-text input{width:100%;text-align:center}::ng-deep co-number-picker ::ng-deep co-button{justify-content:center;padding:0!important;margin:0!important;height:50px!important;background-color:transparent!important}::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon [fill]{fill:#22313c!important}.button-wrapper ::ng-deep co-button{height:50px;max-width:300px;justify-content:center;font-size:15px;border-radius:5px!important;cursor:pointer;padding:0 20px!important}.button-wrapper ::ng-deep co-button:hover{background:#74B77F}::ng-deep co-button.cart-button{border-radius:5px}::ng-deep co-button.cart-button.quote{background:#7292b6}\n"]
1623
+ },] }
1624
+ ];
1552
1625
  ProductAddtocartComponent.ctorParameters = () => [
1553
1626
  { type: IconCacheService },
1554
1627
  { type: ProductConnectorService },
1555
1628
  { type: ProductEventService },
1556
1629
  { type: ProductSettingsService }
1557
1630
  ];
1558
- __decorate([
1559
- ViewChild('addtocartbutton', { read: ElementRef })
1560
- ], ProductAddtocartComponent.prototype, "addToCartButton", void 0);
1561
- __decorate([
1562
- Input()
1563
- ], ProductAddtocartComponent.prototype, "article", void 0);
1564
- __decorate([
1565
- Input()
1566
- ], ProductAddtocartComponent.prototype, "configurable", void 0);
1567
- __decorate([
1568
- Input()
1569
- ], ProductAddtocartComponent.prototype, "configuring", void 0);
1570
- __decorate([
1571
- HostBinding('class.full-screen'),
1572
- Input()
1573
- ], ProductAddtocartComponent.prototype, "fullscreen", void 0);
1574
- __decorate([
1575
- Input()
1576
- ], ProductAddtocartComponent.prototype, "quantity", null);
1577
- __decorate([
1578
- Output()
1579
- ], ProductAddtocartComponent.prototype, "startConfiguration", void 0);
1580
- __decorate([
1581
- Output()
1582
- ], ProductAddtocartComponent.prototype, "addToCartClick", void 0);
1583
- __decorate([
1584
- Output()
1585
- ], ProductAddtocartComponent.prototype, "addToQuoteClick", void 0);
1586
- ProductAddtocartComponent = __decorate([
1587
- Component({
1588
- selector: 'app-product-addtocart',
1589
- template: "<div class=\"atc-wrapper\">\n <co-number-picker *ngIf=\"!configurable && !configuring\" class=\"quantity-select\" [(model)]=\"quantity\" [min]=\"1\" horizontal></co-number-picker>\n <div class=\"button-wrapper\">\n <co-button class=\"configure-button\" *ngIf=\"configurable\"\n [iconData]=\"iconCache.getIcon(icon.MagicWand)\"\n [label]=\"'CONFIGURE' | localize\"\n (onClick)=\"startConfiguration.emit()\"\n ></co-button>\n <co-button #addtocartbutton class=\"cart-button\" *ngIf=\"!configurable\"\n [iconData]=\"iconCache.getIcon(icon.AddToCartDrop)\"\n [label]=\"'SHOPPING_CART_IN' | localize\"\n (onClick)=\"handleAddToCartClick(quantity)\"\n ></co-button>\n <co-button class=\"cart-button quote\" *ngIf=\"!configurable && showQuoteButton\"\n [iconData]=\"iconCache.getIcon(icon.Quote)\"\n [label]=\"'QUOTATION' | localize\"\n (onClick)=\"handleAddToQuoteClick(quantity)\"\n ></co-button>\n </div>\n</div>\n",
1590
- styles: [":host{display:flex;flex-direction:column}:host :not(:last-child){margin-bottom:5px}:host .atc-wrapper{display:flex;flex-direction:row;align-items:baseline}:host .atc-wrapper .quantity-select{margin-right:5px}:host.full-screen .cart-button{position:fixed;right:20px;bottom:20px;z-index:3}::ng-deep co-number-picker{max-width:100px;border:2px solid #f6f5f4;border-radius:5px}::ng-deep co-number-picker ::ng-deep co-input-text{height:50px!important;border:none!important;width:50px!important}::ng-deep co-number-picker ::ng-deep co-input-text:after{display:none}::ng-deep co-number-picker ::ng-deep co-input-text.focused{box-shadow:none!important;border:none!important;background:0 0!important}::ng-deep co-number-picker ::ng-deep co-input-text .clear-icon{display:none}::ng-deep co-number-picker ::ng-deep co-input-text input{width:100%;text-align:center}::ng-deep co-number-picker ::ng-deep co-button{justify-content:center;padding:0!important;margin:0!important;height:50px!important;background-color:transparent!important}::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon [fill]{fill:#22313c!important}.button-wrapper ::ng-deep co-button{height:50px;max-width:300px;justify-content:center;font-size:15px;border-radius:5px!important;cursor:pointer;padding:0 20px!important}.button-wrapper ::ng-deep co-button:hover{background:#74b77f}::ng-deep co-button.cart-button{border-radius:5px}::ng-deep co-button.cart-button.quote{background:#7292b6}"]
1591
- })
1592
- ], ProductAddtocartComponent);
1631
+ ProductAddtocartComponent.propDecorators = {
1632
+ addToCartButton: [{ type: ViewChild, args: ['addtocartbutton', { read: ElementRef },] }],
1633
+ article: [{ type: Input }],
1634
+ configurable: [{ type: Input }],
1635
+ configuring: [{ type: Input }],
1636
+ fullscreen: [{ type: HostBinding, args: ['class.full-screen',] }, { type: Input }],
1637
+ quantity: [{ type: Input }],
1638
+ startConfiguration: [{ type: Output }],
1639
+ addToCartClick: [{ type: Output }],
1640
+ addToQuoteClick: [{ type: Output }]
1641
+ };
1593
1642
 
1594
- let ProductRelatedComponent = class ProductRelatedComponent {
1643
+ class ProductAddtocartModule {
1644
+ }
1645
+ ProductAddtocartModule.decorators = [
1646
+ { type: NgModule, args: [{
1647
+ imports: [
1648
+ CommonModule,
1649
+ NumberPickerModule,
1650
+ ButtonModule,
1651
+ PipeModule
1652
+ ],
1653
+ declarations: [
1654
+ ProductAddtocartComponent
1655
+ ],
1656
+ exports: [
1657
+ ProductAddtocartComponent
1658
+ ]
1659
+ },] }
1660
+ ];
1661
+
1662
+ class ProductRelatedComponent {
1595
1663
  constructor(_iOne, _appEventService) {
1596
1664
  this._iOne = _iOne;
1597
1665
  this._appEventService = _appEventService;
@@ -1632,36 +1700,108 @@ let ProductRelatedComponent = class ProductRelatedComponent {
1632
1700
  }
1633
1701
  });
1634
1702
  }
1635
- };
1703
+ }
1704
+ ProductRelatedComponent.decorators = [
1705
+ { type: Component, args: [{
1706
+ selector: 'app-product-related',
1707
+ template: `
1708
+ <div *ngIf="articles && articles.length > 0">
1709
+ <app-header [label]="label" [amount]="articles?.length" *ngIf="label"></app-header>
1710
+ <co-scroll-container>
1711
+ <div class="article-wrapper" *ngFor="let article of articles">
1712
+ <co-article-tile
1713
+ [imageData]="article.image.documentBodyAsDataUri"
1714
+ [description]="article.description"
1715
+ [price]="article.price"
1716
+ [level]="article.stockStatus"
1717
+ [isSmallModus]="isSmallModus"
1718
+ [hasConfigureButton]="article.goodType === 'B'"
1719
+ (contentClick)="handleContentClick(article)"
1720
+ ></co-article-tile>
1721
+ </div>
1722
+ </co-scroll-container>
1723
+ </div>
1724
+ `,
1725
+ styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row}.article-wrapper ::ng-deep co-tile.small{min-width:189px;max-width:189px;height:100%}.article-wrapper ::ng-deep co-tile.small:hover{box-shadow:none;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:none!important;padding-bottom:0;overflow:hidden}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons{position:absolute;top:0;right:0;margin:0 -32px 0 0;align-items:flex-end;transition:.2s ease-in-out}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini{width:30px;height:30px;transform:none;border-radius:4px;margin:0 0 5px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:none!important;background:transparent!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}\n"]
1726
+ },] }
1727
+ ];
1636
1728
  ProductRelatedComponent.ctorParameters = () => [
1637
1729
  { type: ProductConnectorService },
1638
1730
  { type: ProductEventService }
1639
1731
  ];
1640
- __decorate([
1641
- Input()
1642
- ], ProductRelatedComponent.prototype, "refType", void 0);
1643
- __decorate([
1644
- Input()
1645
- ], ProductRelatedComponent.prototype, "label", void 0);
1646
- __decorate([
1647
- Input()
1648
- ], ProductRelatedComponent.prototype, "isSmallModus", void 0);
1649
- __decorate([
1650
- Input()
1651
- ], ProductRelatedComponent.prototype, "articles", null);
1652
- ProductRelatedComponent = __decorate([
1653
- Component({
1654
- selector: 'app-product-related',
1655
- template: "<div *ngIf=\"articles && articles.length > 0\">\n <app-header [label]=\"label\" [amount]=\"articles?.length\" *ngIf=\"label\"></app-header>\n <co-scroll-container>\n <div class=\"article-wrapper\" *ngFor=\"let article of articles\">\n <co-article-tile\n [imageData]=\"article.image.documentBodyAsDataUri\"\n [description]=\"article.description\"\n [price]=\"article.price\"\n [level]=\"article.stockStatus\"\n [isSmallModus]=\"isSmallModus\"\n [hasConfigureButton]=\"article.goodType === 'B'\"\n (contentClick)=\"handleContentClick(article)\"\n ></co-article-tile>\n </div>\n </co-scroll-container>\n</div>\n",
1656
- styles: [":host{display:block}.article-wrapper{display:flex;flex-direction:row}.article-wrapper ::ng-deep co-tile.small{min-width:189px;max-width:189px;height:100%}.article-wrapper ::ng-deep co-tile.small:hover{box-shadow:none;cursor:pointer}.article-wrapper ::ng-deep co-tile.small:hover .tile-bottom .left-buttons{margin:0!important}.article-wrapper ::ng-deep co-tile.small .tile-wrapper{outline:0!important;padding-bottom:0;overflow:hidden}.article-wrapper ::ng-deep co-tile.small .tile-wrapper div.image{height:100px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons{position:absolute;top:0;right:0;margin:0 -32px 0 0;align-items:flex-end;transition:.2s ease-in-out}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini{width:30px;height:30px;transform:none;border-radius:4px;margin:0 0 5px}.article-wrapper ::ng-deep co-tile.small .tile-wrapper .tile-bottom .left-buttons ::ng-deep co-button.card-button.mini ::ng-deep co-icon{width:30px;height:30px}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom{outline:0!important;background:0 0!important}.article-wrapper ::ng-deep co-tile.small .tile-extra-bottom .price{color:#74b77f;margin:5px 0 0;font-weight:400;font-size:12px}"]
1657
- })
1658
- ], ProductRelatedComponent);
1732
+ ProductRelatedComponent.propDecorators = {
1733
+ refType: [{ type: Input }],
1734
+ label: [{ type: Input }],
1735
+ isSmallModus: [{ type: Input }],
1736
+ articles: [{ type: Input }]
1737
+ };
1659
1738
 
1660
- let ProductStockComponent = class ProductStockComponent {
1739
+ class HeaderComponent {
1740
+ constructor() { }
1741
+ ngOnInit() {
1742
+ }
1743
+ }
1744
+ HeaderComponent.decorators = [
1745
+ { type: Component, args: [{
1746
+ selector: 'app-header',
1747
+ template: `
1748
+ <ng-container *ngIf="label">
1749
+ <div class="header-wrapper">
1750
+ <h3 [textContent]="label"></h3>
1751
+ <span *ngIf="amount" class="amount" [textContent]="'(' + amount + ')'"></span>
1752
+ </div>
1753
+ </ng-container>
1754
+ `,
1755
+ styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}\n"]
1756
+ },] }
1757
+ ];
1758
+ HeaderComponent.ctorParameters = () => [];
1759
+ HeaderComponent.propDecorators = {
1760
+ label: [{ type: Input }],
1761
+ amount: [{ type: Input }]
1762
+ };
1763
+
1764
+ class HeaderModule {
1765
+ }
1766
+ HeaderModule.decorators = [
1767
+ { type: NgModule, args: [{
1768
+ imports: [
1769
+ CommonModule
1770
+ ],
1771
+ declarations: [
1772
+ HeaderComponent
1773
+ ],
1774
+ exports: [
1775
+ HeaderComponent
1776
+ ]
1777
+ },] }
1778
+ ];
1779
+
1780
+ class ProductRelatedModule {
1781
+ }
1782
+ ProductRelatedModule.decorators = [
1783
+ { type: NgModule, args: [{
1784
+ imports: [
1785
+ CommonModule,
1786
+ HeaderModule,
1787
+ ScrollContainerModule,
1788
+ ArticleTileModule
1789
+ ],
1790
+ declarations: [
1791
+ ProductRelatedComponent
1792
+ ],
1793
+ exports: [
1794
+ ProductRelatedComponent
1795
+ ]
1796
+ },] }
1797
+ ];
1798
+
1799
+ class ProductStockComponent {
1661
1800
  constructor(_iOne, _iconCache) {
1662
1801
  this._iOne = _iOne;
1663
1802
  this._iconCache = _iconCache;
1664
1803
  this.icon = IconEnum;
1804
+ this.openStockEvent = new EventEmitter();
1665
1805
  this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
1666
1806
  }
1667
1807
  set stockAndDelivery(value) {
@@ -1671,50 +1811,55 @@ let ProductStockComponent = class ProductStockComponent {
1671
1811
  }
1672
1812
  ngOnInit() {
1673
1813
  }
1674
- };
1814
+ openStock() {
1815
+ this.openStockEvent.emit();
1816
+ }
1817
+ }
1818
+ ProductStockComponent.decorators = [
1819
+ { type: Component, args: [{
1820
+ selector: 'app-product-stock',
1821
+ template: `
1822
+ <!--<app-header [label]="'STOCK' | localize"></app-header>-->
1823
+ <!--<co-level-indicator [model]="'medium'"></co-level-indicator>-->
1824
+ <div class="product-stock-wrapper">
1825
+ <co-icon class="stock-icon" [iconData]="iconData"></co-icon>
1826
+ <div class="product-stock-fields" (click)="openStock()">
1827
+ <div class="pp-default-label in-stock" [textContent]="'PRODUCT_IN_STOCK' | localize" *ngIf="numberInStock > 0"></div>
1828
+ <div class="pp-default-label not-in-stock" [textContent]="'PRODUCT_NOT_IN_STOCK' | localize" *ngIf="!(numberInStock > 0)"></div>
1829
+ </div>
1830
+ </div>
1831
+ `,
1832
+ styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px;cursor:pointer}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0;color:#2b60a7;text-decoration:underline}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#74B77F;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.not-in-stock:after{background:#f15152}@media screen and (max-width: 400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}\n"]
1833
+ },] }
1834
+ ];
1675
1835
  ProductStockComponent.ctorParameters = () => [
1676
1836
  { type: ProductConnectorService },
1677
1837
  { type: IconCacheService }
1678
1838
  ];
1679
- __decorate([
1680
- Input()
1681
- ], ProductStockComponent.prototype, "stockAndDelivery", null);
1682
- ProductStockComponent = __decorate([
1683
- Component({
1684
- selector: 'app-product-stock',
1685
- template: "<!--<app-header [label]=\"'STOCK' | localize\"></app-header>-->\n<!--<co-level-indicator [model]=\"'medium'\"></co-level-indicator>-->\n<div class=\"product-stock-wrapper\">\n <co-icon class=\"stock-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-stock-fields\">\n <div class=\"pp-default-label in-stock\" [textContent]=\"'PRODUCT_IN_STOCK' | localize\" *ngIf=\"numberInStock > 0\"></div>\n <div class=\"pp-default-label not-in-stock\" [textContent]=\"'PRODUCT_NOT_IN_STOCK' | localize\" *ngIf=\"!(numberInStock > 0)\"></div>\n </div>\n</div>\n",
1686
- styles: [":host{display:block}.product-stock-wrapper{display:flex;flex-direction:row;align-items:center;border-top:1px solid #f6f5f4;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:40px;height:37px}.product-stock-wrapper .product-stock-fields{display:flex;flex-direction:row}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:14px;margin:0}.product-stock-wrapper .product-stock-fields .pp-default-label:after{content:\"\";width:10px;height:10px;border-radius:10px;background:#74b77f;display:inline-block;margin:0 0 0 15px}.product-stock-wrapper .product-stock-fields .pp-default-label.not-in-stock:after{background:#f15152}@media screen and (max-width:400px){.product-stock-wrapper{padding:15px 0 15px 10px}.product-stock-wrapper .stock-icon{margin:0 15px 0 0;width:32px;height:28px}.product-stock-wrapper .product-stock-fields .pp-default-label{font-size:13px}}"]
1687
- })
1688
- ], ProductStockComponent);
1839
+ ProductStockComponent.propDecorators = {
1840
+ stockAndDelivery: [{ type: Input }],
1841
+ openStockEvent: [{ type: Output }]
1842
+ };
1689
1843
 
1690
- let LocalizePipe =
1691
- // A pipe for localizing string values in view templates.
1692
- class LocalizePipe {
1693
- constructor(_dictionaryService) {
1694
- this._dictionaryService = _dictionaryService;
1695
- }
1696
- transform(value, upperCaseFirst = true, replace = []) {
1697
- if (!value) {
1698
- return '';
1699
- }
1700
- replace = replace ? replace : [];
1701
- if (!Array.isArray(replace)) {
1702
- replace = [replace];
1703
- }
1704
- return this._dictionaryService.get(value, upperCaseFirst, ...replace);
1705
- }
1706
- };
1707
- LocalizePipe.ctorParameters = () => [
1708
- { type: DictionaryService }
1709
- ];
1710
- LocalizePipe = __decorate([
1711
- Pipe({
1712
- name: 'localize'
1713
- })
1714
- // A pipe for localizing string values in view templates.
1715
- ], LocalizePipe);
1844
+ class ProductStockModule {
1845
+ }
1846
+ ProductStockModule.decorators = [
1847
+ { type: NgModule, args: [{
1848
+ imports: [
1849
+ CommonModule,
1850
+ IconModule,
1851
+ PipeModule
1852
+ ],
1853
+ declarations: [
1854
+ ProductStockComponent
1855
+ ],
1856
+ exports: [
1857
+ ProductStockComponent
1858
+ ]
1859
+ },] }
1860
+ ];
1716
1861
 
1717
- let ProductDeliveryComponent = class ProductDeliveryComponent {
1862
+ class ProductDeliveryComponent {
1718
1863
  constructor(_localizePipe, _iOne, _iconCache) {
1719
1864
  this._localizePipe = _localizePipe;
1720
1865
  this._iOne = _iOne;
@@ -1732,24 +1877,51 @@ let ProductDeliveryComponent = class ProductDeliveryComponent {
1732
1877
  }
1733
1878
  ngOnInit() {
1734
1879
  }
1735
- };
1880
+ }
1881
+ ProductDeliveryComponent.decorators = [
1882
+ { type: Component, args: [{
1883
+ selector: 'app-product-delivery',
1884
+ template: `
1885
+ <!--<app-header [label]="'DELIVERY_TIME_PERIOD' | localize"></app-header>-->
1886
+ <div class="product-delivery-wrapper">
1887
+ <co-icon class="delivery-icon" [iconData]="iconData"></co-icon>
1888
+ <div class="product-delivery-fields">
1889
+ <div class="pp-default-label" [textContent]="'DELIVERY_TIME_PERIOD' | localize"></div>
1890
+ <div class="pp-default-description" [textContent]="deliveryDescription | date:'dd MMMM yyyy'"></div>
1891
+ </div>
1892
+ </div>
1893
+ `,
1894
+ styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width: 400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}\n"]
1895
+ },] }
1896
+ ];
1736
1897
  ProductDeliveryComponent.ctorParameters = () => [
1737
1898
  { type: LocalizePipe },
1738
1899
  { type: ProductConnectorService },
1739
1900
  { type: IconCacheService }
1740
1901
  ];
1741
- __decorate([
1742
- Input()
1743
- ], ProductDeliveryComponent.prototype, "stockAndDelivery", null);
1744
- ProductDeliveryComponent = __decorate([
1745
- Component({
1746
- selector: 'app-product-delivery',
1747
- template: "<!--<app-header [label]=\"'DELIVERY_TIME_PERIOD' | localize\"></app-header>-->\n<div class=\"product-delivery-wrapper\">\n <co-icon class=\"delivery-icon\" [iconData]=\"iconData\"></co-icon>\n <div class=\"product-delivery-fields\">\n <div class=\"pp-default-label\" [textContent]=\"'DELIVERY_TIME_PERIOD' | localize\"></div>\n <div class=\"pp-default-description\" [textContent]=\"deliveryDescription | date:'dd MMMM yyyy'\"></div>\n </div>\n</div>\n",
1748
- styles: [":host{display:block}.product-delivery-wrapper{display:flex;flex-direction:row;align-items:center;border-bottom:1px solid #f6f5f4;padding:20px 15px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:40px;height:37px}.product-delivery-wrapper .product-delivery-fields{display:flex;flex-direction:column}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:14px;margin:0}@media screen and (max-width:400px){.product-delivery-wrapper{padding:15px 0 15px 10px}.product-delivery-wrapper .delivery-icon{margin:0 15px 0 0;width:32px;height:28px}.product-delivery-wrapper .product-delivery-fields .pp-default-label{font-size:13px}}"]
1749
- })
1750
- ], ProductDeliveryComponent);
1902
+ ProductDeliveryComponent.propDecorators = {
1903
+ stockAndDelivery: [{ type: Input }]
1904
+ };
1751
1905
 
1752
- let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1906
+ class ProductDeliveryModule {
1907
+ }
1908
+ ProductDeliveryModule.decorators = [
1909
+ { type: NgModule, args: [{
1910
+ imports: [
1911
+ CommonModule,
1912
+ IconModule,
1913
+ PipeModule
1914
+ ],
1915
+ declarations: [
1916
+ ProductDeliveryComponent
1917
+ ],
1918
+ exports: [
1919
+ ProductDeliveryComponent
1920
+ ]
1921
+ },] }
1922
+ ];
1923
+
1924
+ class ProductInfoTabsComponent {
1753
1925
  constructor(_appEventService) {
1754
1926
  this._appEventService = _appEventService;
1755
1927
  this.activeTabHeight = 0;
@@ -1791,119 +1963,45 @@ let ProductInfoTabsComponent = class ProductInfoTabsComponent {
1791
1963
  this.tabs.push({ title: 'SYMBOLS' });
1792
1964
  }
1793
1965
  }
1794
- };
1966
+ }
1967
+ ProductInfoTabsComponent.decorators = [
1968
+ { type: Component, args: [{
1969
+ selector: 'app-product-info-tabs',
1970
+ template: `
1971
+ <div class="tab-container">
1972
+ <div class="tab-header">
1973
+ <button *ngFor="let tab of tabs; let i = index" class="tab-header-button" [class.active]="activeTab === i" [textContent]="tab.title | localize" (click)="updateTab(i)"></button>
1974
+ </div>
1975
+ <div class="tab-content" #tabContent [style.height.px]="(activeTabHeight > 0 ? activeTabHeight : '')">
1976
+ <div class="tab-content-item" *ngFor="let tab of tabs; let i = index" [class.active]="activeTab === i">
1977
+ <ng-container *ngIf="i === 0">
1978
+ <app-product-additional-info class="" [article]="articleObject" [showLabel]="false"></app-product-additional-info>
1979
+ </ng-container>
1980
+ <ng-container *ngIf="i === 1">
1981
+ <app-product-properties class="" [article]="articleObject" [showLabel]="false"></app-product-properties>
1982
+ </ng-container>
1983
+ <ng-container *ngIf="i === 2">
1984
+ <app-product-documents [showLabel]="false" class="" *ngIf="articleObject?.documents && articleObject?.documents.length > 0" [documents]="articleObject?.documents"></app-product-documents>
1985
+ </ng-container>
1986
+ <ng-container *ngIf="i === 3">
1987
+ <app-product-symbols class="" *ngIf="articleObject?.symbols && articleObject?.symbols.length > 0" [symbols]="articleObject?.symbols"></app-product-symbols>
1988
+ </ng-container>
1989
+ </div>
1990
+ </div>
1991
+ </div>
1992
+ `,
1993
+ styles: ["*:focus{outline:none}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:transparent;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:bold;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:all .2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width: 650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width: 450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}\n"]
1994
+ },] }
1995
+ ];
1795
1996
  ProductInfoTabsComponent.ctorParameters = () => [
1796
1997
  { type: ProductEventService }
1797
1998
  ];
1798
- __decorate([
1799
- ViewChild('tabContent')
1800
- ], ProductInfoTabsComponent.prototype, "tabContent", void 0);
1801
- __decorate([
1802
- Input()
1803
- ], ProductInfoTabsComponent.prototype, "article", null);
1804
- ProductInfoTabsComponent = __decorate([
1805
- Component({
1806
- selector: 'app-product-info-tabs',
1807
- template: "<div class=\"tab-container\">\r\n <div class=\"tab-header\">\r\n <button *ngFor=\"let tab of tabs; let i = index\" class=\"tab-header-button\" [class.active]=\"activeTab === i\" [textContent]=\"tab.title | localize\" (click)=\"updateTab(i)\"></button>\r\n </div>\r\n <div class=\"tab-content\" #tabContent [style.height.px]=\"(activeTabHeight > 0 ? activeTabHeight : '')\">\r\n <div class=\"tab-content-item\" *ngFor=\"let tab of tabs; let i = index\" [class.active]=\"activeTab === i\">\r\n <ng-container *ngIf=\"i === 0\">\r\n <app-product-additional-info class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-additional-info>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 1\">\r\n <app-product-properties class=\"\" [article]=\"articleObject\" [showLabel]=\"false\"></app-product-properties>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 2\">\r\n <app-product-documents [showLabel]=\"false\" class=\"\" *ngIf=\"articleObject?.documents && articleObject?.documents.length > 0\" [documents]=\"articleObject?.documents\"></app-product-documents>\r\n </ng-container>\r\n <ng-container *ngIf=\"i === 3\">\r\n <app-product-symbols class=\"\" *ngIf=\"articleObject?.symbols && articleObject?.symbols.length > 0\" [symbols]=\"articleObject?.symbols\"></app-product-symbols>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n",
1808
- styles: [":focus{outline:0}:host .tab-header{border-bottom:3px solid #f6f5f4;margin:0 0 30px}:host .tab-header .tab-header-button{background:0 0;border:none;border-bottom:3px solid transparent;line-height:20px;padding:15px 20px;cursor:pointer;font-family:iOneMontserrat;color:#22313c;font-weight:700;margin:0 0 -3px;opacity:.5}:host .tab-header .tab-header-button:hover{opacity:1}:host .tab-header .tab-header-button.active{opacity:1;border-color:#74b77f}:host .tab-content{padding:0 20px 30px;margin:0 0 20px;border-bottom:2px solid #f6f5f4;transition:.2s ease-in-out;position:relative}:host .tab-content .tab-content-item{opacity:0;position:absolute;left:0;top:0;visibility:hidden;width:100%}:host .tab-content .tab-content-item.active{opacity:1;visibility:visible;position:static}@media screen and (max-width:650px){:host .tab-content{padding:0 10px 15px}}@media screen and (max-width:450px){:host .tab-header{display:flex}:host .tab-header .tab-header-button{width:100%;padding:10px;font-size:11px}}"]
1809
- })
1810
- ], ProductInfoTabsComponent);
1811
-
1812
- let PipeModule = class PipeModule {
1813
- };
1814
- PipeModule = __decorate([
1815
- NgModule({
1816
- exports: [
1817
- LocalizePipe
1818
- ],
1819
- declarations: [
1820
- LocalizePipe
1821
- ],
1822
- providers: [
1823
- LocalizePipe
1824
- ]
1825
- })
1826
- ], PipeModule);
1827
-
1828
- let ProductDocumentsComponent = class ProductDocumentsComponent {
1829
- constructor(iconCache) {
1830
- this.iconCache = iconCache;
1831
- this.icon = IconEnum;
1832
- this.showLabel = false;
1833
- this.documents = [];
1834
- }
1835
- };
1836
- ProductDocumentsComponent.ctorParameters = () => [
1837
- { type: IconCacheService }
1838
- ];
1839
- __decorate([
1840
- Input()
1841
- ], ProductDocumentsComponent.prototype, "showLabel", void 0);
1842
- __decorate([
1843
- Input()
1844
- ], ProductDocumentsComponent.prototype, "documents", void 0);
1845
- ProductDocumentsComponent = __decorate([
1846
- Component({
1847
- selector: 'app-product-documents',
1848
- template: "<app-header *ngIf=\"showLabel\" [label]=\"'DOCUMENTS' | localize\" [amount]=\"documents?.length\"></app-header>\n<div *ngIf=\"documents && documents.length > 0\">\n <co-files-upload [documents]=\"documents\" [canAdd]=\"false\" readonly></co-files-upload>\n</div>\n",
1849
- styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:0!important;border:none!important;background:url(../../../assets/icons/download.svg) left 6px center/36px auto no-repeat!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}"]
1850
- })
1851
- ], ProductDocumentsComponent);
1852
-
1853
- let HeaderComponent = class HeaderComponent {
1854
- constructor() { }
1855
- ngOnInit() {
1856
- }
1857
- };
1858
- __decorate([
1859
- Input()
1860
- ], HeaderComponent.prototype, "label", void 0);
1861
- __decorate([
1862
- Input()
1863
- ], HeaderComponent.prototype, "amount", void 0);
1864
- HeaderComponent = __decorate([
1865
- Component({
1866
- selector: 'app-header',
1867
- template: "<ng-container *ngIf=\"label\">\n <div class=\"header-wrapper\">\n <h3 [textContent]=\"label\"></h3>\n <span *ngIf=\"amount\" class=\"amount\" [textContent]=\"'(' + amount + ')'\"></span>\n </div>\n</ng-container>\n",
1868
- styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}"]
1869
- })
1870
- ], HeaderComponent);
1871
-
1872
- var TabType;
1873
- (function (TabType) {
1874
- TabType["Additional"] = "additional";
1875
- TabType["Properties"] = "properties";
1876
- })(TabType || (TabType = {}));
1877
- let ProductInfoComponent = class ProductInfoComponent {
1878
- constructor() {
1879
- this.tabType = TabType;
1880
- this.currentTab = TabType.Additional;
1881
- }
1882
- ngOnInit() {
1883
- }
1884
- switchTab(tab) {
1885
- this.currentTab = tab;
1886
- }
1887
- };
1888
- __decorate([
1889
- Input()
1890
- ], ProductInfoComponent.prototype, "article", void 0);
1891
- ProductInfoComponent = __decorate([
1892
- Component({
1893
- selector: 'app-product-info',
1894
- template: "<div>\n <div class=\"info-wrapper\">\n <div class=\"info-navigation\">\n <span [textContent]=\"'ADDITIONAL_DATA' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Additional\" (mouseup)=\"switchTab(tabType.Additional)\"></span>\n <span [textContent]=\"'PROPERTIES' | localize\" class=\"navigator\" [class.selected]=\"currentTab === tabType.Properties\" (mouseup)=\"switchTab(tabType.Properties)\"></span>\n </div>\n <ng-container [ngSwitch]=\"currentTab\" class=\"content\">\n <div *ngSwitchCase=\"tabType.Additional\" @showContent>\n <app-product-additional-info\n [article]=\"article\"\n ></app-product-additional-info>\n </div>\n <div *ngSwitchCase=\"tabType.Properties\" @showContent>\n <app-product-properties [article]=\"article\"></app-product-properties>\n </div>\n </ng-container>\n </div>\n</div>\n",
1895
- animations: [
1896
- trigger('showContent', [
1897
- state('void', style({ 'opacity': '0' })),
1898
- state('*', style({ 'opacity': '1' })),
1899
- transition('void => *', animate('200ms 100ms ease-in-out')),
1900
- ])
1901
- ],
1902
- styles: [".info-navigation{margin:30px 0}.info-navigation .navigator:not(:last-child){margin-right:30px}.navigator{font-size:15px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navigator.selected{color:#2b60a7}"]
1903
- })
1904
- ], ProductInfoComponent);
1999
+ ProductInfoTabsComponent.propDecorators = {
2000
+ tabContent: [{ type: ViewChild, args: ['tabContent',] }],
2001
+ article: [{ type: Input }]
2002
+ };
1905
2003
 
1906
- let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
2004
+ class ProductAdditionalInfoComponent {
1907
2005
  constructor(_sanitizer, _connectorService, _changeDetector) {
1908
2006
  this._sanitizer = _sanitizer;
1909
2007
  this._connectorService = _connectorService;
@@ -1983,25 +2081,45 @@ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
1983
2081
  return;
1984
2082
  });
1985
2083
  }
1986
- };
2084
+ }
2085
+ ProductAdditionalInfoComponent.decorators = [
2086
+ { type: Component, args: [{
2087
+ selector: 'app-product-additional-info',
2088
+ template: `
2089
+ <h3 *ngIf="showLabel" [textContent]="'ADDITIONAL_DATA' | localize"></h3>
2090
+ <ng-container *ngIf="textParts && textParts.length > 0">
2091
+ <div class="additional-info-parts" *ngFor="let text of textParts" [innerHTML]="text"></div>
2092
+ </ng-container>
2093
+ `,
2094
+ styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:\"iOneMontserrat\"}:host .additional-info-parts>*:first-child{margin-top:0}:host .additional-info-parts>*:last-child{margin-bottom:0}\n"]
2095
+ },] }
2096
+ ];
1987
2097
  ProductAdditionalInfoComponent.ctorParameters = () => [
1988
2098
  { type: DomSanitizer },
1989
2099
  { type: ProductConnectorService },
1990
2100
  { type: ChangeDetectorRef }
1991
2101
  ];
1992
- __decorate([
1993
- Input()
1994
- ], ProductAdditionalInfoComponent.prototype, "article", null);
1995
- __decorate([
1996
- Input()
1997
- ], ProductAdditionalInfoComponent.prototype, "showLabel", void 0);
1998
- ProductAdditionalInfoComponent = __decorate([
1999
- Component({
2000
- selector: 'app-product-additional-info',
2001
- template: "<h3 *ngIf=\"showLabel\" [textContent]=\"'ADDITIONAL_DATA' | localize\"></h3>\n<ng-container *ngIf=\"textParts && textParts.length > 0\">\n <div class=\"additional-info-parts\" *ngFor=\"let text of textParts\" [innerHTML]=\"text\"></div>\n</ng-container>\n",
2002
- styles: [":host{display:block}:host .additional-info-parts{margin-bottom:20px;line-height:190%;color:#22313c;font-size:13px}:host ::ng-deep p{line-height:190%;margin:15px 0}:host ::ng-deep font{font-family:iOneMontserrat}:host .additional-info-parts>:first-child{margin-top:0}:host .additional-info-parts>:last-child{margin-bottom:0}"]
2003
- })
2004
- ], ProductAdditionalInfoComponent);
2102
+ ProductAdditionalInfoComponent.propDecorators = {
2103
+ article: [{ type: Input }],
2104
+ showLabel: [{ type: Input }]
2105
+ };
2106
+
2107
+ class ProductAdditionalInfoModule {
2108
+ }
2109
+ ProductAdditionalInfoModule.decorators = [
2110
+ { type: NgModule, args: [{
2111
+ imports: [
2112
+ CommonModule,
2113
+ PipeModule
2114
+ ],
2115
+ declarations: [
2116
+ ProductAdditionalInfoComponent
2117
+ ],
2118
+ exports: [
2119
+ ProductAdditionalInfoComponent
2120
+ ]
2121
+ },] }
2122
+ ];
2005
2123
 
2006
2124
  const propertyMap = new Map([
2007
2125
  ['articleNr', 'ARTICLE_NUMBER'],
@@ -2014,7 +2132,7 @@ const propertyMap = new Map([
2014
2132
  ['height', 'HEIGHT'],
2015
2133
  ['width', 'WIDTH']
2016
2134
  ]);
2017
- let ProductPropertiesComponent = class ProductPropertiesComponent {
2135
+ class ProductPropertiesComponent {
2018
2136
  constructor() {
2019
2137
  this.showLabel = false;
2020
2138
  this.properties = [];
@@ -2039,22 +2157,95 @@ let ProductPropertiesComponent = class ProductPropertiesComponent {
2039
2157
  }
2040
2158
  });
2041
2159
  }
2042
- };
2043
- __decorate([
2044
- Input()
2045
- ], ProductPropertiesComponent.prototype, "article", null);
2046
- __decorate([
2047
- Input()
2048
- ], ProductPropertiesComponent.prototype, "showLabel", void 0);
2049
- ProductPropertiesComponent = __decorate([
2050
- Component({
2051
- selector: 'app-product-properties',
2052
- template: "<div class=\"article-properties-wrapper\">\n <h3 *ngIf=\"showLabel\" [textContent]=\"'PROPERTIES' | localize\"></h3>\n <ng-container *ngFor=\"let property of properties\">\n <div class=\"article-property\">\n <div class=\"article-property-key\" [textContent]=\"property.key | localize\"></div>\n <div class=\"article-property-value\" [textContent]=\"property.value\"></div>\n </div>\n </ng-container>\n</div>\n",
2053
- styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width:450px){.article-property-key{flex-basis:130px}}"]
2054
- })
2055
- ], ProductPropertiesComponent);
2160
+ }
2161
+ ProductPropertiesComponent.decorators = [
2162
+ { type: Component, args: [{
2163
+ selector: 'app-product-properties',
2164
+ template: `
2165
+ <div class="article-properties-wrapper">
2166
+ <h3 *ngIf="showLabel" [textContent]="'PROPERTIES' | localize"></h3>
2167
+ <ng-container *ngFor="let property of properties">
2168
+ <div class="article-property">
2169
+ <div class="article-property-key" [textContent]="property.key | localize"></div>
2170
+ <div class="article-property-value" [textContent]="property.value"></div>
2171
+ </div>
2172
+ </ng-container>
2173
+ </div>
2174
+ `,
2175
+ styles: [":host{display:block}.article-properties-wrapper{display:flex;flex-direction:column}.article-property{display:flex;flex-direction:row;border-bottom:1px solid #f6f5f4;padding:11px 0;font-size:13px}.article-property:first-child{border-top:1px solid #f6f5f4}.article-property-key{flex-basis:200px;flex-shrink:0;color:#5b6875}@media screen and (max-width: 450px){.article-property-key{flex-basis:130px}}\n"]
2176
+ },] }
2177
+ ];
2178
+ ProductPropertiesComponent.ctorParameters = () => [];
2179
+ ProductPropertiesComponent.propDecorators = {
2180
+ article: [{ type: Input }],
2181
+ showLabel: [{ type: Input }]
2182
+ };
2056
2183
 
2057
- let ProductSymbolsComponent = class ProductSymbolsComponent {
2184
+ class ProductPropertiesModule {
2185
+ }
2186
+ ProductPropertiesModule.decorators = [
2187
+ { type: NgModule, args: [{
2188
+ imports: [
2189
+ CommonModule,
2190
+ PipeModule
2191
+ ],
2192
+ declarations: [
2193
+ ProductPropertiesComponent
2194
+ ],
2195
+ exports: [
2196
+ ProductPropertiesComponent
2197
+ ]
2198
+ },] }
2199
+ ];
2200
+
2201
+ class ProductDocumentsComponent {
2202
+ constructor(iconCache) {
2203
+ this.iconCache = iconCache;
2204
+ this.icon = IconEnum;
2205
+ this.showLabel = false;
2206
+ this.documents = [];
2207
+ }
2208
+ }
2209
+ ProductDocumentsComponent.decorators = [
2210
+ { type: Component, args: [{
2211
+ selector: 'app-product-documents',
2212
+ template: `
2213
+ <app-header *ngIf="showLabel" [label]="'DOCUMENTS' | localize" [amount]="documents?.length"></app-header>
2214
+ <div *ngIf="documents && documents.length > 0">
2215
+ <co-files-upload [documents]="documents" [canAdd]="false" readonly></co-files-upload>
2216
+ </div>
2217
+ `,
2218
+ styles: [":host{display:block}::ng-deep co-files-upload{flex-direction:column!important;width:100%}::ng-deep co-file-upload{margin:0!important;border-bottom:1px solid #f6f5f4}::ng-deep co-file-upload:first-child{border-top:1px solid #f6f5f4}::ng-deep co-files-upload .files-upload-wrapper{flex-direction:column!important;width:100%}::ng-deep co-file-upload co-tile{max-width:100%!important;width:100%;position:relative}::ng-deep co-file-upload co-tile:hover{box-shadow:none!important}::ng-deep co-file-upload co-tile:hover .tile-extra-bottom{background-color:#f6f5f4!important}::ng-deep co-file-upload co-tile .tile-wrapper{position:absolute!important;left:0;top:0;width:100%;height:100%;z-index:2;opacity:0;box-sizing:border-box}::ng-deep co-file-upload co-tile .tile-wrapper .image{position:absolute!important;left:0;top:0;width:100%!important;height:100%!important;cursor:pointer}::ng-deep co-file-upload co-tile .tile-extra-bottom{outline:none!important;border:none!important;background:transparent!important;line-height:20px;padding:20px 20px 20px 60px!important;margin:0!important;background:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22 standalone%3D%22no%22%3F%3E%3Csvg xmlns%3Adc%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%22 xmlns%3Acc%3D%22http%3A%2F%2Fcreativecommons.org%2Fns%23%22 xmlns%3Ardf%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%22 xmlns%3Asvg%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Asodipodi%3D%22http%3A%2F%2Fsodipodi.sourceforge.net%2FDTD%2Fsodipodi-0.dtd%22 xmlns%3Ainkscape%3D%22http%3A%2F%2Fwww.inkscape.org%2Fnamespaces%2Finkscape%22 viewBox%3D%220 0 50 50%22 version%3D%221.1%22 id%3D%22svg8%22 sodipodi%3Adocname%3D%22download.svg%22 inkscape%3Aversion%3D%220.92.4 (5da689c313%2C 2019-01-14)%22%3E %3Cmetadata id%3D%22metadata14%22%3E %3Crdf%3ARDF%3E %3Ccc%3AWork rdf%3Aabout%3D%22%22%3E %3Cdc%3Aformat%3Eimage%2Fsvg%2Bxml%3C%2Fdc%3Aformat%3E %3Cdc%3Atype rdf%3Aresource%3D%22http%3A%2F%2Fpurl.org%2Fdc%2Fdcmitype%2FStillImage%22 %2F%3E %3Cdc%3Atitle%3E%3C%2Fdc%3Atitle%3E %3C%2Fcc%3AWork%3E %3C%2Frdf%3ARDF%3E %3C%2Fmetadata%3E %3Cdefs id%3D%22defs12%22 %2F%3E %3Csodipodi%3Anamedview pagecolor%3D%22%23ffffff%22 bordercolor%3D%22%23666666%22 borderopacity%3D%221%22 objecttolerance%3D%2210%22 gridtolerance%3D%2210%22 guidetolerance%3D%2210%22 inkscape%3Apageopacity%3D%220%22 inkscape%3Apageshadow%3D%222%22 inkscape%3Awindow-width%3D%221920%22 inkscape%3Awindow-height%3D%221017%22 id%3D%22namedview10%22 showgrid%3D%22false%22 inkscape%3Azoom%3D%226.675088%22 inkscape%3Acx%3D%22-14.056273%22 inkscape%3Acy%3D%2229.806579%22 inkscape%3Awindow-x%3D%22-8%22 inkscape%3Awindow-y%3D%22-8%22 inkscape%3Awindow-maximized%3D%221%22 inkscape%3Acurrent-layer%3D%22svg8%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g62%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g64%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g66%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g68%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g70%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g72%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g74%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g76%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g78%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g80%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g82%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g84%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g86%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g88%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05570714%2C0%2C0%2C0.05570648%2C10.763%2C10.859394)%22 id%3D%22g90%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g6-0%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cg id%3D%22g4-9%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cpath inkscape%3Aconnector-curvature%3D%220%22 d%3D%22m 498.966%2C339.946 c -7.197%2C0 -13.034%2C5.837 -13.034%2C13.034 v 49.804 c 0%2C28.747 -23.388%2C52.135 -52.135%2C52.135 H 78.203 c -28.747%2C0 -52.135%2C-23.388 -52.135%2C-52.135 V 352.98 c 0%2C-7.197 -5.835%2C-13.034 -13.034%2C-13.034 C 5.835%2C339.946 0%2C345.782 0%2C352.98 v 49.804 c 0%2C43.121 35.082%2C78.203 78.203%2C78.203 h 355.594 c 43.121%2C0 78.203%2C-35.082 78.203%2C-78.203 V 352.98 c 0%2C-7.198 -5.835%2C-13.034 -13.034%2C-13.034 z%22 id%3D%22path2%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3C%2Fg%3E %3C%2Fg%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g12-0%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cg id%3D%22g10-8%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cpath inkscape%3Aconnector-curvature%3D%220%22 d%3D%22M 419.833%2C391.3 H 92.167 c -7.197%2C0 -13.034%2C5.837 -13.034%2C13.034 0%2C7.197 5.835%2C13.034 13.034%2C13.034 h 327.665 c 7.199%2C0 13.034%2C-5.835 13.034%2C-13.034 0%2C-7.197 -5.835%2C-13.034 -13.033%2C-13.034 z%22 id%3D%22path8-3%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3C%2Fg%3E %3C%2Fg%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g18-4%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cg id%3D%22g16-7%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22%3E %3Cpath inkscape%3Aconnector-curvature%3D%220%22 d%3D%22m 387.919%2C207.93 c -4.795%2C-5.367 -13.034%2C-5.834 -18.404%2C-1.038 L 269.033%2C296.657 V 44.048 c 0%2C-7.197 -5.835%2C-13.034 -13.034%2C-13.034 -7.197%2C0 -13.034%2C5.835 -13.034%2C13.034 V 296.657 L 142.483%2C206.893 c -5.367%2C-4.796 -13.607%2C-4.328 -18.404%2C1.038 -4.794%2C5.369 -4.331%2C13.609 1.037%2C18.404 l 109.174%2C97.527 c 6.187%2C5.529 13.946%2C8.292 21.708%2C8.292 7.759%2C0 15.519%2C-2.763 21.708%2C-8.289 l 109.174%2C-97.53 c 5.37%2C-4.798 5.834%2C-13.038 1.039%2C-18.405 z%22 id%3D%22path14-9%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3C%2Fg%3E %3C%2Fg%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g20%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g22-9%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g24-3%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g26%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g28-4%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g30-2%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g32%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g34-2%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g36-1%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g38%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g40-6%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g42-4%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g44%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g46-7%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E %3Cg transform%3D%22matrix(0.05555739%2C0%2C0%2C0.05555739%2C10.739964%2C11.357401)%22 id%3D%22g48-3%22 style%3D%22fill%3A%23484f60%3Bfill-opacity%3A1%22 %2F%3E%3C%2Fsvg%3E\") no-repeat left 6px center / 36px auto!important}::ng-deep co-file-upload co-tile .tile-extra-bottom .main{padding:0!important}\n"]
2219
+ },] }
2220
+ ];
2221
+ ProductDocumentsComponent.ctorParameters = () => [
2222
+ { type: IconCacheService }
2223
+ ];
2224
+ ProductDocumentsComponent.propDecorators = {
2225
+ showLabel: [{ type: Input }],
2226
+ documents: [{ type: Input }]
2227
+ };
2228
+
2229
+ class ProductDocumentModule {
2230
+ }
2231
+ ProductDocumentModule.decorators = [
2232
+ { type: NgModule, args: [{
2233
+ imports: [
2234
+ CommonModule,
2235
+ HeaderModule,
2236
+ PipeModule,
2237
+ FilesUploadModule
2238
+ ],
2239
+ declarations: [
2240
+ ProductDocumentsComponent
2241
+ ],
2242
+ exports: [
2243
+ ProductDocumentsComponent
2244
+ ]
2245
+ },] }
2246
+ ];
2247
+
2248
+ class ProductSymbolsComponent {
2058
2249
  constructor() {
2059
2250
  this.symbolStrings = [];
2060
2251
  }
@@ -2074,108 +2265,248 @@ let ProductSymbolsComponent = class ProductSymbolsComponent {
2074
2265
  }
2075
2266
  ngOnInit() {
2076
2267
  }
2077
- };
2078
- __decorate([
2079
- Input()
2080
- ], ProductSymbolsComponent.prototype, "symbols", null);
2081
- __decorate([
2082
- HostBinding('class')
2083
- ], ProductSymbolsComponent.prototype, "_className", void 0);
2084
- ProductSymbolsComponent = __decorate([
2085
- Component({
2086
- selector: 'app-product-symbols',
2087
- template: "<div *ngIf=\"symbols && symbols.length > 0\">\n <app-header [label]=\"'SYMBOLS' | localize\" [amount]=\"symbols?.length\"></app-header>\n <co-scroll-container>\n <co-tile small noImagePlaceholder *ngFor=\"let symbol of symbolStrings\">\n <ng-container tile-over-image>\n <div class=\"symbol\" [textContent]=\"symbol\"></div>\n </ng-container>\n <ng-container tile-extra-bottom-content>\n <div class=\"symbol-name\" [textContent]=\"'Wat moet hier?'\"></div>\n </ng-container>\n </co-tile>\n </co-scroll-container>\n</div>\n",
2088
- styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}"]
2089
- })
2090
- ], ProductSymbolsComponent);
2268
+ }
2269
+ ProductSymbolsComponent.decorators = [
2270
+ { type: Component, args: [{
2271
+ selector: 'app-product-symbols',
2272
+ template: `
2273
+ <div *ngIf="symbols && symbols.length > 0">
2274
+ <app-header [label]="'SYMBOLS' | localize" [amount]="symbols?.length"></app-header>
2275
+ <co-scroll-container>
2276
+ <co-tile small noImagePlaceholder *ngFor="let symbol of symbolStrings">
2277
+ <ng-container tile-over-image>
2278
+ <div class="symbol" [textContent]="symbol"></div>
2279
+ </ng-container>
2280
+ <ng-container tile-extra-bottom-content>
2281
+ <div class="symbol-name" [textContent]="'Wat moet hier?'"></div>
2282
+ </ng-container>
2283
+ </co-tile>
2284
+ </co-scroll-container>
2285
+ </div>
2286
+ `,
2287
+ styles: [":host{display:block}:host.floor .symbol{font-family:iOneFloorsymbols}:host.ginetex .symbol{font-family:iOneGinetexsymbols}.symbol{font-size:100px}\n"]
2288
+ },] }
2289
+ ];
2290
+ ProductSymbolsComponent.ctorParameters = () => [];
2291
+ ProductSymbolsComponent.propDecorators = {
2292
+ symbols: [{ type: Input }],
2293
+ _className: [{ type: HostBinding, args: ['class',] }]
2294
+ };
2295
+
2296
+ class ProductSymbolsModule {
2297
+ }
2298
+ ProductSymbolsModule.decorators = [
2299
+ { type: NgModule, args: [{
2300
+ imports: [
2301
+ CommonModule,
2302
+ HeaderModule,
2303
+ PipeModule,
2304
+ ScrollContainerModule,
2305
+ TileModule
2306
+ ],
2307
+ declarations: [
2308
+ ProductSymbolsComponent
2309
+ ],
2310
+ exports: [
2311
+ ProductSymbolsComponent
2312
+ ]
2313
+ },] }
2314
+ ];
2315
+
2316
+ class ProductInfoTabsModule {
2317
+ }
2318
+ ProductInfoTabsModule.decorators = [
2319
+ { type: NgModule, args: [{
2320
+ imports: [
2321
+ CommonModule,
2322
+ PipeModule,
2323
+ ProductAdditionalInfoModule,
2324
+ ProductPropertiesModule,
2325
+ ProductDocumentModule,
2326
+ ProductSymbolsModule
2327
+ ],
2328
+ declarations: [
2329
+ ProductInfoTabsComponent
2330
+ ],
2331
+ exports: [
2332
+ ProductInfoTabsComponent
2333
+ ]
2334
+ },] }
2335
+ ];
2091
2336
 
2092
- let ProductPageModule = class ProductPageModule {
2093
- };
2094
- ProductPageModule = __decorate([
2095
- NgModule({
2096
- imports: [
2097
- CommonModule,
2098
- IconModule,
2099
- LoaderModule,
2100
- PipeModule,
2101
- NumberPickerModule,
2102
- ButtonModule,
2103
- PriceDisplayPipeModule,
2104
- InputTextModule,
2105
- FilesUploadModule,
2106
- ScrollContainerModule,
2107
- TileModule,
2108
- LevelIndicatorModule,
2109
- ArticleTileModule,
2110
- ],
2111
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
2112
- declarations: [
2113
- ProductPageComponent,
2114
- ProductSelectorTypeComponent,
2115
- ImageCarouselComponent,
2116
- ProductDescriptionComponent,
2117
- ProductAdditionalDescriptionComponent,
2118
- ProductPriceComponent,
2119
- ProductAddtocartComponent,
2120
- ProductRelatedComponent,
2121
- ProductStockComponent,
2122
- ProductDeliveryComponent,
2123
- ProductInfoTabsComponent,
2124
- ProductDocumentsComponent,
2125
- HeaderComponent,
2126
- ProductInfoComponent,
2127
- ProductAdditionalInfoComponent,
2128
- ProductPropertiesComponent,
2129
- ProductSymbolsComponent
2130
- ],
2131
- exports: [ProductPageComponent]
2132
- })
2133
- ], ProductPageModule);
2337
+ class ProductPageModule {
2338
+ }
2339
+ ProductPageModule.decorators = [
2340
+ { type: NgModule, args: [{
2341
+ imports: [
2342
+ CommonModule,
2343
+ ProductSelectorTypeModule,
2344
+ ImageCarouselModule,
2345
+ IconModule,
2346
+ ProductDescriptionModule,
2347
+ ProductAdditionalDescriptionModule,
2348
+ ProductPriceModule,
2349
+ ProductAddtocartModule,
2350
+ ProductRelatedModule,
2351
+ ProductStockModule,
2352
+ ProductDeliveryModule,
2353
+ ProductInfoTabsModule,
2354
+ PipeModule
2355
+ ],
2356
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
2357
+ declarations: [
2358
+ ProductPageComponent
2359
+ ],
2360
+ exports: [
2361
+ ProductPageComponent
2362
+ ]
2363
+ },] }
2364
+ ];
2134
2365
 
2135
- let ProductExternalSourceModule = class ProductExternalSourceModule {
2136
- };
2137
- ProductExternalSourceModule = __decorate([
2138
- NgModule({
2139
- imports: [
2140
- CommonModule,
2141
- ProductPageModule
2142
- ],
2143
- declarations: [
2144
- ProductExternalSourceComponent
2145
- ],
2146
- exports: [
2147
- ProductExternalSourceComponent
2148
- ]
2149
- })
2150
- ], ProductExternalSourceModule);
2366
+ class IoneProductModule {
2367
+ }
2368
+ IoneProductModule.decorators = [
2369
+ { type: NgModule, args: [{
2370
+ imports: [
2371
+ // BrowserAnimationsModule,
2372
+ CommonModule,
2373
+ ProductPageModule
2374
+ ],
2375
+ declarations: [
2376
+ IoneProductComponent
2377
+ ],
2378
+ exports: [
2379
+ IoneProductComponent
2380
+ ],
2381
+ bootstrap: [
2382
+ IoneProductComponent
2383
+ ]
2384
+ },] }
2385
+ ];
2386
+
2387
+ class ProductExternalSourceComponent {
2388
+ constructor(_sanitizer, _productConnectorService, _appEventService) {
2389
+ this._sanitizer = _sanitizer;
2390
+ this._productConnectorService = _productConnectorService;
2391
+ this._appEventService = _appEventService;
2392
+ this.addToCart = new EventEmitter();
2393
+ this.addToQuote = new EventEmitter();
2394
+ this.alternativeClick = new EventEmitter();
2395
+ this.showProduct = false;
2396
+ this.loaded = false;
2397
+ this.externalSettings = {};
2398
+ this._subs = [];
2399
+ }
2400
+ set externalSource(value) {
2401
+ this._externalSource = value;
2402
+ this.loaded = false;
2403
+ this._prepareExternalSource();
2404
+ }
2405
+ get externalSource() {
2406
+ return this._externalSource;
2407
+ }
2408
+ showClass() {
2409
+ return true;
2410
+ }
2411
+ ngOnInit() {
2412
+ this._subs.push(this._appEventService.onAddToCart.subscribe(json => this.addToCart.next(json)), this._appEventService.onAddToQuote.subscribe(json => this.addToQuote.next(json)), this._appEventService.onAlternativeClick.subscribe(article => this.alternativeClick.next(article)));
2413
+ }
2414
+ ngOnDestroy() {
2415
+ this._subs.forEach(s => s.unsubscribe());
2416
+ }
2417
+ _prepareExternalSource() {
2418
+ return __awaiter(this, void 0, void 0, function* () {
2419
+ if (!this._externalSource) {
2420
+ return;
2421
+ }
2422
+ this.externalUrl = undefined;
2423
+ this.externalSettings = {};
2424
+ if (this.externalSource.type === 'CATF') {
2425
+ // get bundle settings from external source
2426
+ const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
2427
+ this.externalSettings = JSON.parse(bundleSettings);
2428
+ if (this.options) {
2429
+ this.externalSettings.options = this.options;
2430
+ }
2431
+ // this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
2432
+ // this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
2433
+ if (this.externalSource.username && this.externalSource.password) {
2434
+ this.externalSettings.useLoginEncryption = true;
2435
+ this.externalSettings.username = this.externalSource.username;
2436
+ this.externalSettings.password = this.externalSource.password;
2437
+ }
2438
+ // finally show the catalog
2439
+ this.showProduct = true;
2440
+ }
2441
+ else {
2442
+ this.externalUrl = this.externalSource.url;
2443
+ this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
2444
+ this.showProduct = false;
2445
+ }
2446
+ this.loaded = true;
2447
+ });
2448
+ }
2449
+ }
2450
+ ProductExternalSourceComponent.decorators = [
2451
+ { type: Component, args: [{
2452
+ selector: 'co-product-external-source',
2453
+ template: `
2454
+ <ng-container *ngIf="loaded">
2455
+ <ng-container *ngIf="showProduct">
2456
+ <app-product-page
2457
+ [sku]="sku"
2458
+ [settings]="externalSettings"
2459
+ ></app-product-page>
2460
+ </ng-container>
2461
+ <ng-container *ngIf="!showProduct">
2462
+ <iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
2463
+ </ng-container>
2464
+ </ng-container>
2465
+ `,
2466
+ providers: [
2467
+ ProductEventService,
2468
+ ProductSettingsService,
2469
+ ProductConnectorAdapterService,
2470
+ ProductConnectorService
2471
+ ],
2472
+ encapsulation: ViewEncapsulation.None
2473
+ },] }
2474
+ ];
2475
+ ProductExternalSourceComponent.ctorParameters = () => [
2476
+ { type: DomSanitizer },
2477
+ { type: ProductConnectorService },
2478
+ { type: ProductEventService }
2479
+ ];
2480
+ ProductExternalSourceComponent.propDecorators = {
2481
+ sku: [{ type: Input }],
2482
+ externalSource: [{ type: Input }],
2483
+ options: [{ type: Input }],
2484
+ addToCart: [{ type: Output }],
2485
+ addToQuote: [{ type: Output }],
2486
+ alternativeClick: [{ type: Output }],
2487
+ showClass: [{ type: HostBinding, args: ['class.co-product-external-source',] }]
2488
+ };
2151
2489
 
2152
- let IoneProductModule = class IoneProductModule {
2153
- };
2154
- IoneProductModule = __decorate([
2155
- NgModule({
2156
- imports: [
2157
- // BrowserAnimationsModule,
2158
- CommonModule,
2159
- ProductExternalSourceModule,
2160
- ProductPageModule
2161
- ],
2162
- declarations: [
2163
- IoneProductComponent
2164
- ],
2165
- entryComponents: [
2166
- IoneProductComponent
2167
- ],
2168
- providers: [],
2169
- exports: [IoneProductComponent],
2170
- bootstrap: [
2171
- IoneProductComponent
2172
- ]
2173
- })
2174
- ], IoneProductModule);
2490
+ class ProductExternalSourceModule {
2491
+ }
2492
+ ProductExternalSourceModule.decorators = [
2493
+ { type: NgModule, args: [{
2494
+ imports: [
2495
+ CommonModule,
2496
+ ProductPageModule
2497
+ ],
2498
+ declarations: [
2499
+ ProductExternalSourceComponent
2500
+ ],
2501
+ exports: [
2502
+ ProductExternalSourceComponent
2503
+ ]
2504
+ },] }
2505
+ ];
2175
2506
 
2176
2507
  /**
2177
2508
  * Generated bundle index. Do not edit.
2178
2509
  */
2179
2510
 
2180
- export { IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version, ProductPageModule as ɵa, PipeModule as ɵb, ProductSymbolsComponent as ɵba, IoneProductComponent as ɵbb, LocalizePipe as ɵc, DictionaryService as ɵd, JsonUtilsService as ɵe, ProductPageComponent as ɵf, ProductConnectorService as ɵg, ProductConnectorAdapterService as ɵh, ProductSettingsService as ɵi, IconCacheService as ɵj, ProductEventService as ɵk, ProductSelectorTypeComponent as ɵl, ImageCarouselComponent as ɵm, ProductDescriptionComponent as ɵn, ProductAdditionalDescriptionComponent as ɵo, ProductPriceComponent as ɵp, ProductAddtocartComponent as ɵq, ProductRelatedComponent as ɵr, ProductStockComponent as ɵs, ProductDeliveryComponent as ɵt, ProductInfoTabsComponent as ɵu, ProductDocumentsComponent as ɵv, HeaderComponent as ɵw, ProductInfoComponent as ɵx, ProductAdditionalInfoComponent as ɵy, ProductPropertiesComponent as ɵz };
2511
+ export { IoneProductComponent, IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version, ProductPageModule as ɵa, ProductSelectorTypeModule as ɵb, ProductStockModule as ɵba, ProductStockComponent as ɵbb, ProductDeliveryModule as ɵbc, ProductDeliveryComponent as ɵbd, ProductInfoTabsModule as ɵbe, ProductAdditionalInfoModule as ɵbf, ProductAdditionalInfoComponent as ɵbg, ProductPropertiesModule as ɵbh, ProductPropertiesComponent as ɵbi, ProductDocumentModule as ɵbj, ProductDocumentsComponent as ɵbk, ProductSymbolsModule as ɵbl, ProductSymbolsComponent as ɵbm, ProductInfoTabsComponent as ɵbn, ProductPageComponent as ɵbo, PipeModule as ɵc, LocalizePipe as ɵd, DictionaryService as ɵe, JsonUtilsService as ɵf, ProductSelectorTypeComponent as ɵg, IconCacheService as ɵh, ImageCarouselModule as ɵi, ImageCarouselComponent as ɵj, ProductConnectorService as ɵk, ProductConnectorAdapterService as ɵl, ProductSettingsService as ɵm, ProductEventService as ɵn, ProductDescriptionModule as ɵo, ProductDescriptionComponent as ɵp, ProductAdditionalDescriptionModule as ɵq, ProductAdditionalDescriptionComponent as ɵr, ProductPriceModule as ɵs, ProductPriceComponent as ɵt, ProductAddtocartModule as ɵu, ProductAddtocartComponent as ɵv, ProductRelatedModule as ɵw, HeaderModule as ɵx, HeaderComponent as ɵy, ProductRelatedComponent as ɵz };
2181
2512
  //# sourceMappingURL=colijnit-product.js.map