@colijnit/product 2.9.0 → 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.
- package/app/components/core/header/header.module.d.ts +2 -0
- package/app/components/image-carousel/image-carousel.module.d.ts +2 -0
- package/app/components/product-additional-description/product-additional-description.module.d.ts +2 -0
- package/app/components/product-additional-info/product-additional-info.module.d.ts +2 -0
- package/app/components/product-addtocart/product-addtocart.module.d.ts +2 -0
- package/app/components/product-delivery/product-delivery.module.d.ts +2 -0
- package/app/components/product-description/product-description.module.d.ts +2 -0
- package/app/components/product-documents/product-document.module.d.ts +2 -0
- package/app/components/product-info-tabs/product-info-tabs.module.d.ts +2 -0
- package/app/components/product-page/product-page.component.d.ts +3 -1
- package/app/components/product-price/product-price.module.d.ts +2 -0
- package/app/components/product-properties/product-properties.module.d.ts +2 -0
- package/app/components/product-related/product-related.module.d.ts +2 -0
- package/app/components/product-selector-type/product-selector-type.module.d.ts +2 -0
- package/app/components/product-stock/product-stock.component.d.ts +3 -1
- package/app/components/product-stock/product-stock.module.d.ts +2 -0
- package/app/components/product-symbols/product-symbols.module.d.ts +2 -0
- package/app/ione-product.component.d.ts +6 -2
- package/app/ione-product.module.d.ts +0 -2
- package/bundles/colijnit-product.umd.js +1467 -998
- package/bundles/colijnit-product.umd.js.map +1 -1
- package/colijnit-product.d.ts +40 -28
- package/colijnit-product.metadata.json +1 -1
- package/esm2015/app/components/core/header/header.component.js +21 -17
- package/esm2015/app/components/core/header/header.module.js +19 -0
- package/esm2015/app/components/image-carousel/image-carousel.component.js +51 -35
- package/esm2015/app/components/image-carousel/image-carousel.module.js +23 -0
- package/esm2015/app/components/product-additional-description/product-additional-description.component.js +20 -15
- package/esm2015/app/components/product-additional-description/product-additional-description.module.js +21 -0
- package/esm2015/app/components/product-additional-info/product-additional-info.component.js +22 -20
- package/esm2015/app/components/product-additional-info/product-additional-info.module.js +21 -0
- package/esm2015/app/components/product-addtocart/product-addtocart.component.js +43 -40
- package/esm2015/app/components/product-addtocart/product-addtocart.module.js +24 -0
- package/esm2015/app/components/product-delivery/product-delivery.component.js +22 -15
- package/esm2015/app/components/product-delivery/product-delivery.module.js +23 -0
- package/esm2015/app/components/product-description/product-description.component.js +18 -14
- package/esm2015/app/components/product-description/product-description.module.js +19 -0
- package/esm2015/app/components/product-documents/product-document.module.js +25 -0
- package/esm2015/app/components/product-documents/product-documents.component.js +19 -18
- package/esm2015/app/components/product-external-source/product-external-source.component.js +32 -45
- package/esm2015/app/components/product-external-source/product-external-source.module.js +17 -19
- package/esm2015/app/components/product-info-tabs/product-info-tabs.component.js +36 -18
- package/esm2015/app/components/product-info-tabs/product-info-tabs.module.js +29 -0
- package/esm2015/app/components/product-page/product-page.component.js +56 -60
- package/esm2015/app/components/product-page/product-page.module.js +40 -62
- package/esm2015/app/components/product-price/product-price.component.js +26 -19
- package/esm2015/app/components/product-price/product-price.module.js +23 -0
- package/esm2015/app/components/product-properties/product-properties.component.js +24 -17
- package/esm2015/app/components/product-properties/product-properties.module.js +21 -0
- package/esm2015/app/components/product-related/product-related.component.js +33 -24
- package/esm2015/app/components/product-related/product-related.module.js +24 -0
- package/esm2015/app/components/product-selector-type/product-selector-type.component.js +32 -28
- package/esm2015/app/components/product-selector-type/product-selector-type.module.js +23 -0
- package/esm2015/app/components/product-stock/product-stock.component.js +29 -16
- package/esm2015/app/components/product-stock/product-stock.module.js +23 -0
- package/esm2015/app/components/product-symbols/product-symbols.component.js +28 -17
- package/esm2015/app/components/product-symbols/product-symbols.module.js +26 -0
- package/esm2015/app/enum/icon.enum.js +1 -1
- package/esm2015/app/enum/language-code.enum.js +1 -1
- package/esm2015/app/enum/selector-type.enum.js +1 -1
- package/esm2015/app/ione-product.component.js +58 -56
- package/esm2015/app/ione-product.module.js +21 -39
- package/esm2015/app/model/article-quantity.model.js +1 -1
- package/esm2015/app/model/icon.js +1 -1
- package/esm2015/app/model/productSettings.js +1 -1
- package/esm2015/app/model/render-modes.js +1 -1
- package/esm2015/app/model/render-parameters.js +1 -1
- package/esm2015/app/model/settings-options.js +1 -1
- package/esm2015/app/model/stock-and-delivery.js +1 -1
- package/esm2015/app/pipe/localize.pipe.js +8 -12
- package/esm2015/app/pipe/pipe.module.js +16 -18
- package/esm2015/app/product-version.js +3 -3
- package/esm2015/app/service/dictionary.service.js +10 -11
- package/esm2015/app/service/icon-cache.service.js +10 -12
- package/esm2015/app/service/product-connector-adapter.service.js +8 -8
- package/esm2015/app/service/product-connector.service.js +7 -8
- package/esm2015/app/service/product-event.service.js +12 -20
- package/esm2015/app/service/product-settings.service.js +7 -8
- package/esm2015/app/utils/bit-utils.js +1 -1
- package/esm2015/app/utils/json-utils.service.js +9 -10
- package/esm2015/assets/dictionary/text.properties.js +1 -1
- package/esm2015/colijnit-product.js +41 -29
- package/esm2015/public_api.js +2 -1
- package/fesm2015/colijnit-product.js +1070 -756
- package/fesm2015/colijnit-product.js.map +1 -1
- package/package.json +15 -18
- package/public_api.d.ts +1 -0
- package/app/components/product-info/product-info.component.d.ts +0 -14
- package/app/service/product-initializer.service.d.ts +0 -6
- package/bundles/colijnit-product.umd.min.js +0 -16
- package/bundles/colijnit-product.umd.min.js.map +0 -1
- package/esm2015/app/components/product-info/product-info.component.js +0 -38
- package/esm2015/app/service/product-initializer.service.js +0 -26
- package/esm5/app/components/core/header/header.component.js +0 -24
- package/esm5/app/components/image-carousel/image-carousel.component.js +0 -170
- package/esm5/app/components/product-additional-description/product-additional-description.component.js +0 -59
- package/esm5/app/components/product-additional-info/product-additional-info.component.js +0 -142
- package/esm5/app/components/product-addtocart/product-addtocart.component.js +0 -133
- package/esm5/app/components/product-delivery/product-delivery.component.js +0 -47
- package/esm5/app/components/product-description/product-description.component.js +0 -21
- package/esm5/app/components/product-documents/product-documents.component.js +0 -31
- package/esm5/app/components/product-external-source/product-external-source.component.js +0 -126
- package/esm5/app/components/product-external-source/product-external-source.module.js +0 -26
- package/esm5/app/components/product-info/product-info.component.js +0 -39
- package/esm5/app/components/product-info-tabs/product-info-tabs.component.js +0 -70
- package/esm5/app/components/product-page/product-page.component.js +0 -247
- package/esm5/app/components/product-page/product-page.module.js +0 -69
- package/esm5/app/components/product-price/product-price.component.js +0 -74
- package/esm5/app/components/product-properties/product-properties.component.js +0 -60
- package/esm5/app/components/product-related/product-related.component.js +0 -78
- package/esm5/app/components/product-selector-type/product-selector-type.component.js +0 -54
- package/esm5/app/components/product-stock/product-stock.component.js +0 -41
- package/esm5/app/components/product-symbols/product-symbols.component.js +0 -43
- package/esm5/app/enum/icon.enum.js +0 -19
- package/esm5/app/enum/language-code.enum.js +0 -8
- package/esm5/app/enum/selector-type.enum.js +0 -7
- package/esm5/app/ione-product.component.js +0 -161
- package/esm5/app/ione-product.module.js +0 -47
- package/esm5/app/model/article-quantity.model.js +0 -7
- package/esm5/app/model/icon.js +0 -18
- package/esm5/app/model/productSettings.js +0 -18
- package/esm5/app/model/render-modes.js +0 -7
- package/esm5/app/model/render-parameters.js +0 -12
- package/esm5/app/model/settings-options.js +0 -15
- package/esm5/app/model/stock-and-delivery.js +0 -10
- package/esm5/app/pipe/localize.pipe.js +0 -33
- package/esm5/app/pipe/pipe.module.js +0 -23
- package/esm5/app/product-version.js +0 -12
- package/esm5/app/service/dictionary.service.js +0 -95
- package/esm5/app/service/icon-cache.service.js +0 -47
- package/esm5/app/service/product-connector-adapter.service.js +0 -248
- package/esm5/app/service/product-connector.service.js +0 -141
- package/esm5/app/service/product-event.service.js +0 -38
- package/esm5/app/service/product-initializer.service.js +0 -29
- package/esm5/app/service/product-settings.service.js +0 -107
- package/esm5/app/utils/bit-utils.js +0 -22
- package/esm5/app/utils/json-utils.service.js +0 -42
- package/esm5/assets/dictionary/text.properties.js +0 -67
- package/esm5/colijnit-product.js +0 -34
- package/esm5/public_api.js +0 -5
- package/fesm5/colijnit-product.js +0 -2582
- package/fesm5/colijnit-product.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
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 {
|
|
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 = "
|
|
28
|
-
this.publishDate = "
|
|
30
|
+
this.symVer = "12.0.0";
|
|
31
|
+
this.publishDate = "23-9-2023 11:50:39";
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
|
|
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 =
|
|
52
|
-
JsonUtilsService =
|
|
53
|
-
Injectable
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
]
|
|
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
|
-
|
|
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 =
|
|
238
|
-
Injectable
|
|
239
|
-
]
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
Output
|
|
596
|
-
|
|
597
|
-
|
|
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
|
-
|
|
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,13 +625,17 @@ 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();
|
|
629
|
+
this.settingsLoaded = false;
|
|
630
630
|
this._subs = [];
|
|
631
631
|
// this.sku = "70000107";
|
|
632
632
|
this._subs.push(
|
|
633
633
|
// this._dictionary.dictionaryLoaded.subscribe(d => this.upAndLoaded = true),
|
|
634
634
|
this._appEventService.onAddToCart.subscribe((json) => {
|
|
635
635
|
this._handleAddToCart(json);
|
|
636
|
-
}), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections))
|
|
636
|
+
}), this._appEventService.onAddToQuote.subscribe(json => this.onAddToQuote.emit(json)), this._appEventService.onAlternativeClick.subscribe(article => this.onAlternativeClick.emit(article)), this._appEventService.onArticleInfoReceived.subscribe(info => this._handleAnswerInfoReceived(info)), this._appEventService.onArticleReceived.subscribe(article => this.onArticleReceived.emit(article)), this._appEventService.onSelectionsReceived.subscribe(selections => this.onSelectionsReceived.emit(selections)), this._settingsService.settingsLoaded.subscribe(loaded => {
|
|
637
|
+
this.settingsLoaded = loaded;
|
|
638
|
+
}));
|
|
637
639
|
}
|
|
638
640
|
set settings(value) {
|
|
639
641
|
if (value) {
|
|
@@ -651,6 +653,11 @@ let IoneProductComponent = class IoneProductComponent {
|
|
|
651
653
|
get settings() {
|
|
652
654
|
return this._settings;
|
|
653
655
|
}
|
|
656
|
+
ngOnInit() {
|
|
657
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
658
|
+
yield this._settingsService.initializeSettings();
|
|
659
|
+
});
|
|
660
|
+
}
|
|
654
661
|
ngOnChanges(changes) {
|
|
655
662
|
this._changeDetector.detectChanges();
|
|
656
663
|
}
|
|
@@ -667,11 +674,16 @@ let IoneProductComponent = class IoneProductComponent {
|
|
|
667
674
|
const articleTreeData = JSON.parse(json);
|
|
668
675
|
if (articleTreeData.articleTree && articleTreeData.articleTree.article) {
|
|
669
676
|
if (articleTreeData.articleTree.compositeGoods && Array.isArray(articleTreeData.articleTree.compositeGoods) &&
|
|
670
|
-
articleTreeData.articleTree.compositeGoods.length > 0 &&
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
677
|
+
articleTreeData.articleTree.compositeGoods.length > 0 &&
|
|
678
|
+
articleTreeData.articleTree.subArticles && Array.isArray(articleTreeData.articleTree.subArticles)) {
|
|
679
|
+
const compositeGoods = articleTreeData.articleTree.compositeGoods;
|
|
680
|
+
compositeGoods.sort((a, b) => a.versionNumber < b.versionNumber ? -1 : 1);
|
|
681
|
+
for (let i = 0; i < compositeGoods.length; i++) {
|
|
682
|
+
const good = compositeGoods[i];
|
|
683
|
+
const subArticle = articleTreeData.articleTree.subArticles.find(s => s.goodId === good.memberGoodId);
|
|
684
|
+
if (subArticle) {
|
|
685
|
+
yield this._ione.addWebSessionTransactionLine(subArticle.articleNumber, good.quantity);
|
|
686
|
+
}
|
|
675
687
|
}
|
|
676
688
|
}
|
|
677
689
|
else {
|
|
@@ -683,7 +695,28 @@ let IoneProductComponent = class IoneProductComponent {
|
|
|
683
695
|
this.onAddToCart.emit(json);
|
|
684
696
|
});
|
|
685
697
|
}
|
|
686
|
-
|
|
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
|
+
];
|
|
687
720
|
IoneProductComponent.ctorParameters = () => [
|
|
688
721
|
{ type: DictionaryService },
|
|
689
722
|
{ type: JsonUtilsService },
|
|
@@ -692,185 +725,18 @@ IoneProductComponent.ctorParameters = () => [
|
|
|
692
725
|
{ type: ProductEventService },
|
|
693
726
|
{ type: ProductSettingsService }
|
|
694
727
|
];
|
|
695
|
-
|
|
696
|
-
Input
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
Output
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
Output
|
|
706
|
-
|
|
707
|
-
__decorate([
|
|
708
|
-
Output()
|
|
709
|
-
], IoneProductComponent.prototype, "onAlternativeClick", void 0);
|
|
710
|
-
__decorate([
|
|
711
|
-
Output()
|
|
712
|
-
], IoneProductComponent.prototype, "onArticleInfoReceived", void 0);
|
|
713
|
-
__decorate([
|
|
714
|
-
Output()
|
|
715
|
-
], IoneProductComponent.prototype, "onArticleReceived", void 0);
|
|
716
|
-
__decorate([
|
|
717
|
-
Output()
|
|
718
|
-
], IoneProductComponent.prototype, "onSelectionsReceived", void 0);
|
|
719
|
-
__decorate([
|
|
720
|
-
Output()
|
|
721
|
-
], IoneProductComponent.prototype, "onAddToQuote", void 0);
|
|
722
|
-
IoneProductComponent = __decorate([
|
|
723
|
-
Component({
|
|
724
|
-
selector: 'app-ione-product',
|
|
725
|
-
template: `
|
|
726
|
-
<app-product-page [sku]="sku"
|
|
727
|
-
></app-product-page>
|
|
728
|
-
`,
|
|
729
|
-
providers: [
|
|
730
|
-
ProductEventService,
|
|
731
|
-
ProductSettingsService,
|
|
732
|
-
ProductConnectorAdapterService,
|
|
733
|
-
ProductConnectorService
|
|
734
|
-
],
|
|
735
|
-
encapsulation: ViewEncapsulation.Emulated,
|
|
736
|
-
styles: [""]
|
|
737
|
-
})
|
|
738
|
-
], IoneProductComponent);
|
|
739
|
-
|
|
740
|
-
let ProductInitializerService = class ProductInitializerService {
|
|
741
|
-
constructor(_settingsService) {
|
|
742
|
-
this._settingsService = _settingsService;
|
|
743
|
-
}
|
|
744
|
-
initializeApp() {
|
|
745
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
746
|
-
return this._settingsService.initializeSettings();
|
|
747
|
-
});
|
|
748
|
-
}
|
|
749
|
-
};
|
|
750
|
-
ProductInitializerService.ctorParameters = () => [
|
|
751
|
-
{ type: ProductSettingsService }
|
|
752
|
-
];
|
|
753
|
-
ProductInitializerService.ɵprov = ɵɵdefineInjectable({ factory: function ProductInitializerService_Factory() { return new ProductInitializerService(ɵɵinject(ProductSettingsService)); }, token: ProductInitializerService, providedIn: "root" });
|
|
754
|
-
ProductInitializerService = __decorate([
|
|
755
|
-
Injectable({
|
|
756
|
-
providedIn: 'root',
|
|
757
|
-
})
|
|
758
|
-
], ProductInitializerService);
|
|
759
|
-
|
|
760
|
-
let ProductExternalSourceComponent = class ProductExternalSourceComponent {
|
|
761
|
-
constructor(_sanitizer, _productConnectorService, _appEventService) {
|
|
762
|
-
this._sanitizer = _sanitizer;
|
|
763
|
-
this._productConnectorService = _productConnectorService;
|
|
764
|
-
this._appEventService = _appEventService;
|
|
765
|
-
this.addToCart = new EventEmitter();
|
|
766
|
-
this.addToQuote = new EventEmitter();
|
|
767
|
-
this.alternativeClick = new EventEmitter();
|
|
768
|
-
this.showProduct = false;
|
|
769
|
-
this.loaded = false;
|
|
770
|
-
this.externalSettings = {};
|
|
771
|
-
this._subs = [];
|
|
772
|
-
}
|
|
773
|
-
set externalSource(value) {
|
|
774
|
-
this._externalSource = value;
|
|
775
|
-
this.loaded = false;
|
|
776
|
-
this._prepareExternalSource();
|
|
777
|
-
}
|
|
778
|
-
get externalSource() {
|
|
779
|
-
return this._externalSource;
|
|
780
|
-
}
|
|
781
|
-
showClass() {
|
|
782
|
-
return true;
|
|
783
|
-
}
|
|
784
|
-
ngOnInit() {
|
|
785
|
-
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)));
|
|
786
|
-
}
|
|
787
|
-
ngOnDestroy() {
|
|
788
|
-
this._subs.forEach(s => s.unsubscribe());
|
|
789
|
-
}
|
|
790
|
-
_prepareExternalSource() {
|
|
791
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
792
|
-
if (!this._externalSource) {
|
|
793
|
-
return;
|
|
794
|
-
}
|
|
795
|
-
this.externalUrl = undefined;
|
|
796
|
-
this.externalSettings = {};
|
|
797
|
-
if (this.externalSource.type === 'CATF') {
|
|
798
|
-
// get bundle settings from external source
|
|
799
|
-
const bundleSettings = yield this._productConnectorService.getProductBundleSettings(this.externalSource.url, parseInt(this.externalSource.schema, 0));
|
|
800
|
-
this.externalSettings = JSON.parse(bundleSettings);
|
|
801
|
-
if (this.options) {
|
|
802
|
-
this.externalSettings.options = this.options;
|
|
803
|
-
}
|
|
804
|
-
// this.externalSettings.assetPath = "https://cdn1.colijn-it.nl/content43";
|
|
805
|
-
// this.externalSettings.threeDAssetPath = "https://cdn1.colijn-it.nl/content43";
|
|
806
|
-
if (this.externalSource.username && this.externalSource.password) {
|
|
807
|
-
this.externalSettings.useLoginEncryption = true;
|
|
808
|
-
this.externalSettings.username = this.externalSource.username;
|
|
809
|
-
this.externalSettings.password = this.externalSource.password;
|
|
810
|
-
}
|
|
811
|
-
// finally show the catalog
|
|
812
|
-
this.showProduct = true;
|
|
813
|
-
}
|
|
814
|
-
else {
|
|
815
|
-
this.externalUrl = this.externalSource.url;
|
|
816
|
-
this.safeUrl = this._sanitizer.bypassSecurityTrustResourceUrl(this.externalUrl);
|
|
817
|
-
this.showProduct = false;
|
|
818
|
-
}
|
|
819
|
-
this.loaded = true;
|
|
820
|
-
});
|
|
821
|
-
}
|
|
822
|
-
};
|
|
823
|
-
ProductExternalSourceComponent.ctorParameters = () => [
|
|
824
|
-
{ type: DomSanitizer },
|
|
825
|
-
{ type: ProductConnectorService },
|
|
826
|
-
{ type: ProductEventService }
|
|
827
|
-
];
|
|
828
|
-
__decorate([
|
|
829
|
-
Input()
|
|
830
|
-
], ProductExternalSourceComponent.prototype, "sku", void 0);
|
|
831
|
-
__decorate([
|
|
832
|
-
Input()
|
|
833
|
-
], ProductExternalSourceComponent.prototype, "externalSource", null);
|
|
834
|
-
__decorate([
|
|
835
|
-
Input()
|
|
836
|
-
], ProductExternalSourceComponent.prototype, "options", void 0);
|
|
837
|
-
__decorate([
|
|
838
|
-
Output()
|
|
839
|
-
], ProductExternalSourceComponent.prototype, "addToCart", void 0);
|
|
840
|
-
__decorate([
|
|
841
|
-
Output()
|
|
842
|
-
], ProductExternalSourceComponent.prototype, "addToQuote", void 0);
|
|
843
|
-
__decorate([
|
|
844
|
-
Output()
|
|
845
|
-
], ProductExternalSourceComponent.prototype, "alternativeClick", void 0);
|
|
846
|
-
__decorate([
|
|
847
|
-
HostBinding('class.co-product-external-source')
|
|
848
|
-
], ProductExternalSourceComponent.prototype, "showClass", null);
|
|
849
|
-
ProductExternalSourceComponent = __decorate([
|
|
850
|
-
Component({
|
|
851
|
-
selector: 'co-product-external-source',
|
|
852
|
-
template: `
|
|
853
|
-
<ng-container *ngIf="loaded">
|
|
854
|
-
<ng-container *ngIf="showProduct">
|
|
855
|
-
<app-product-page
|
|
856
|
-
[sku]="sku"
|
|
857
|
-
[settings]="externalSettings"
|
|
858
|
-
></app-product-page>
|
|
859
|
-
</ng-container>
|
|
860
|
-
<ng-container *ngIf="!showProduct">
|
|
861
|
-
<iframe width="100%" height="100%" [src]="safeUrl" frameborder="0" allowfullscreen></iframe>
|
|
862
|
-
</ng-container>
|
|
863
|
-
</ng-container>
|
|
864
|
-
`,
|
|
865
|
-
providers: [
|
|
866
|
-
ProductEventService,
|
|
867
|
-
ProductSettingsService,
|
|
868
|
-
ProductConnectorAdapterService,
|
|
869
|
-
ProductConnectorService
|
|
870
|
-
],
|
|
871
|
-
encapsulation: ViewEncapsulation.None
|
|
872
|
-
})
|
|
873
|
-
], 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
|
+
};
|
|
874
740
|
|
|
875
741
|
class StockAndDelivery {
|
|
876
742
|
constructor(stock, deliveryDescription) {
|
|
@@ -924,7 +790,7 @@ const IconSvg = {
|
|
|
924
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>"
|
|
925
791
|
};
|
|
926
792
|
|
|
927
|
-
|
|
793
|
+
class IconCacheService {
|
|
928
794
|
constructor(_sanitizer) {
|
|
929
795
|
this._sanitizer = _sanitizer;
|
|
930
796
|
this._iconCache = {};
|
|
@@ -948,18 +814,18 @@ let IconCacheService = class IconCacheService {
|
|
|
948
814
|
}
|
|
949
815
|
}
|
|
950
816
|
}
|
|
951
|
-
}
|
|
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
|
+
];
|
|
952
824
|
IconCacheService.ctorParameters = () => [
|
|
953
825
|
{ type: DomSanitizer }
|
|
954
|
-
];
|
|
955
|
-
IconCacheService.ɵprov = ɵɵdefineInjectable({ factory: function IconCacheService_Factory() { return new IconCacheService(ɵɵinject(DomSanitizer)); }, token: IconCacheService, providedIn: "root" });
|
|
956
|
-
IconCacheService = __decorate([
|
|
957
|
-
Injectable({
|
|
958
|
-
providedIn: 'root'
|
|
959
|
-
})
|
|
960
|
-
], IconCacheService);
|
|
826
|
+
];
|
|
961
827
|
|
|
962
|
-
|
|
828
|
+
class ProductPageComponent {
|
|
963
829
|
constructor(_ione, _renderer, _changeDetector, iconCache, settingsService, appEventService) {
|
|
964
830
|
this._ione = _ione;
|
|
965
831
|
this._renderer = _renderer;
|
|
@@ -968,6 +834,7 @@ let ProductPageComponent = class ProductPageComponent {
|
|
|
968
834
|
this.settingsService = settingsService;
|
|
969
835
|
this.appEventService = appEventService;
|
|
970
836
|
this.icon = IconEnum;
|
|
837
|
+
this.openStockEvent = new EventEmitter();
|
|
971
838
|
this.configurable = false;
|
|
972
839
|
this.threeD = false;
|
|
973
840
|
this.show2D = true;
|
|
@@ -1101,7 +968,49 @@ let ProductPageComponent = class ProductPageComponent {
|
|
|
1101
968
|
}));
|
|
1102
969
|
});
|
|
1103
970
|
}
|
|
1104
|
-
|
|
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
|
+
];
|
|
1105
1014
|
ProductPageComponent.ctorParameters = () => [
|
|
1106
1015
|
{ type: ProductConnectorService },
|
|
1107
1016
|
{ type: Renderer2 },
|
|
@@ -1110,62 +1019,16 @@ ProductPageComponent.ctorParameters = () => [
|
|
|
1110
1019
|
{ type: ProductSettingsService },
|
|
1111
1020
|
{ type: ProductEventService }
|
|
1112
1021
|
];
|
|
1113
|
-
|
|
1114
|
-
ViewChild
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
], ProductPageComponent.prototype, "fullscreenbutton", void 0);
|
|
1122
|
-
__decorate([
|
|
1123
|
-
Input()
|
|
1124
|
-
], ProductPageComponent.prototype, "sku", null);
|
|
1125
|
-
__decorate([
|
|
1126
|
-
Input()
|
|
1127
|
-
], ProductPageComponent.prototype, "settings", null);
|
|
1128
|
-
ProductPageComponent = __decorate([
|
|
1129
|
-
Component({
|
|
1130
|
-
selector: 'app-product-page',
|
|
1131
|
-
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",
|
|
1132
|
-
animations: [
|
|
1133
|
-
trigger('toggleFullScreen', [
|
|
1134
|
-
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0', 'width': '100%', 'height': '100%' })),
|
|
1135
|
-
state('halfscreen', style({ 'position': '*', 'top': '*', 'left': '*', 'width': '*', 'height': '*' })),
|
|
1136
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
|
|
1137
|
-
]),
|
|
1138
|
-
trigger('toggleTopLeft', [
|
|
1139
|
-
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'left': '0' })),
|
|
1140
|
-
state('halfscreen', style({ 'position': 'absolute', 'top': '*', 'left': '*' })),
|
|
1141
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
|
|
1142
|
-
]),
|
|
1143
|
-
trigger('toggleTopRight', [
|
|
1144
|
-
state('fullscreen', style({ 'position': 'fixed', 'top': '0', 'right': '0' })),
|
|
1145
|
-
state('halfscreen', style({ 'position': '*', 'top': '*', 'right': '*' })),
|
|
1146
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
|
|
1147
|
-
]),
|
|
1148
|
-
trigger('toggleFullScreenRight', [
|
|
1149
|
-
state('fullscreen', style({ 'position': 'fixed', 'width': '400px', 'top': '0', 'right': '0' })),
|
|
1150
|
-
state('halfscreen', style({ 'position': '*', 'width': '*', 'top': '*', 'right': '*' })),
|
|
1151
|
-
transition('halfscreen <=> fullscreen', animate('200ms ease-in-out')),
|
|
1152
|
-
]),
|
|
1153
|
-
trigger('toggleVisibilityByState', [
|
|
1154
|
-
state('hide', style({ 'opacity': '0', 'display': 'none' })),
|
|
1155
|
-
state('show', style({ 'display': 'block', 'opacity': '1' })),
|
|
1156
|
-
transition('hide <=> show', animate('200ms 100ms ease-in-out')),
|
|
1157
|
-
]),
|
|
1158
|
-
trigger('toggleVisibility', [
|
|
1159
|
-
state('void', style({ 'opacity': '0' })),
|
|
1160
|
-
state('*', style({ 'opacity': '1' })),
|
|
1161
|
-
transition('void => *', animate('200ms ease-in-out')),
|
|
1162
|
-
])
|
|
1163
|
-
],
|
|
1164
|
-
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}}"]
|
|
1165
|
-
})
|
|
1166
|
-
], 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
|
+
};
|
|
1167
1030
|
|
|
1168
|
-
|
|
1031
|
+
class ProductSelectorTypeComponent {
|
|
1169
1032
|
constructor(_iconCache, _changeDetector) {
|
|
1170
1033
|
this._iconCache = _iconCache;
|
|
1171
1034
|
this._changeDetector = _changeDetector;
|
|
@@ -1184,35 +1047,101 @@ let ProductSelectorTypeComponent = class ProductSelectorTypeComponent {
|
|
|
1184
1047
|
this.onIconClick.next(this.currentType);
|
|
1185
1048
|
this._changeDetector.detectChanges();
|
|
1186
1049
|
}
|
|
1187
|
-
}
|
|
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
|
+
];
|
|
1188
1072
|
ProductSelectorTypeComponent.ctorParameters = () => [
|
|
1189
1073
|
{ type: IconCacheService },
|
|
1190
1074
|
{ type: ChangeDetectorRef }
|
|
1191
1075
|
];
|
|
1192
|
-
|
|
1193
|
-
Input
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
Input()
|
|
1200
|
-
], ProductSelectorTypeComponent.prototype, "currentType", void 0);
|
|
1201
|
-
__decorate([
|
|
1202
|
-
Output()
|
|
1203
|
-
], ProductSelectorTypeComponent.prototype, "onIconClick", void 0);
|
|
1204
|
-
__decorate([
|
|
1205
|
-
Output()
|
|
1206
|
-
], ProductSelectorTypeComponent.prototype, "currentTypeChange", void 0);
|
|
1207
|
-
ProductSelectorTypeComponent = __decorate([
|
|
1208
|
-
Component({
|
|
1209
|
-
selector: 'app-product-selector-type',
|
|
1210
|
-
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",
|
|
1211
|
-
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}"]
|
|
1212
|
-
})
|
|
1213
|
-
], 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
|
+
};
|
|
1214
1083
|
|
|
1215
|
-
|
|
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
|
+
];
|
|
1143
|
+
|
|
1144
|
+
class ImageCarouselComponent {
|
|
1216
1145
|
constructor(_ione, _appEventService, _changeDetector, _domSanitizer, iconCache) {
|
|
1217
1146
|
this._ione = _ione;
|
|
1218
1147
|
this._appEventService = _appEventService;
|
|
@@ -1324,7 +1253,44 @@ let ImageCarouselComponent = class ImageCarouselComponent {
|
|
|
1324
1253
|
}
|
|
1325
1254
|
}
|
|
1326
1255
|
}
|
|
1327
|
-
}
|
|
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
|
+
];
|
|
1328
1294
|
ImageCarouselComponent.ctorParameters = () => [
|
|
1329
1295
|
{ type: ProductConnectorService },
|
|
1330
1296
|
{ type: ProductEventService },
|
|
@@ -1332,50 +1298,72 @@ ImageCarouselComponent.ctorParameters = () => [
|
|
|
1332
1298
|
{ type: DomSanitizer },
|
|
1333
1299
|
{ type: IconCacheService }
|
|
1334
1300
|
];
|
|
1335
|
-
|
|
1336
|
-
ViewChild
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
ImageCarouselComponent
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
]
|
|
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
|
+
];
|
|
1363
1329
|
|
|
1364
|
-
|
|
1330
|
+
class ProductDescriptionComponent {
|
|
1365
1331
|
constructor() { }
|
|
1366
1332
|
ngOnInit() {
|
|
1367
1333
|
}
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
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
|
+
];
|
|
1379
1367
|
|
|
1380
1368
|
class BitUtils {
|
|
1381
1369
|
static IsShortDescription(bit) {
|
|
@@ -1395,7 +1383,7 @@ class BitUtils {
|
|
|
1395
1383
|
}
|
|
1396
1384
|
}
|
|
1397
1385
|
|
|
1398
|
-
|
|
1386
|
+
class ProductAdditionalDescriptionComponent {
|
|
1399
1387
|
constructor(_appEventService) {
|
|
1400
1388
|
this._appEventService = _appEventService;
|
|
1401
1389
|
}
|
|
@@ -1428,22 +1416,46 @@ let ProductAdditionalDescriptionComponent = class ProductAdditionalDescriptionCo
|
|
|
1428
1416
|
}
|
|
1429
1417
|
}
|
|
1430
1418
|
}
|
|
1431
|
-
}
|
|
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
|
+
];
|
|
1432
1434
|
ProductAdditionalDescriptionComponent.ctorParameters = () => [
|
|
1433
1435
|
{ type: ProductEventService }
|
|
1434
1436
|
];
|
|
1435
|
-
|
|
1436
|
-
Input
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
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
|
+
];
|
|
1445
1457
|
|
|
1446
|
-
|
|
1458
|
+
class ProductPriceComponent {
|
|
1447
1459
|
constructor(_changeDetector) {
|
|
1448
1460
|
this._changeDetector = _changeDetector;
|
|
1449
1461
|
this.showFromPrice = false;
|
|
@@ -1487,25 +1499,52 @@ let ProductPriceComponent = class ProductPriceComponent {
|
|
|
1487
1499
|
return '€';
|
|
1488
1500
|
}
|
|
1489
1501
|
}
|
|
1490
|
-
}
|
|
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
|
+
];
|
|
1491
1521
|
ProductPriceComponent.ctorParameters = () => [
|
|
1492
1522
|
{ type: ChangeDetectorRef }
|
|
1493
1523
|
];
|
|
1494
|
-
|
|
1495
|
-
Input
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
Input()
|
|
1499
|
-
], ProductPriceComponent.prototype, "configurable", null);
|
|
1500
|
-
ProductPriceComponent = __decorate([
|
|
1501
|
-
Component({
|
|
1502
|
-
selector: 'app-product-price',
|
|
1503
|
-
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",
|
|
1504
|
-
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}}"]
|
|
1505
|
-
})
|
|
1506
|
-
], ProductPriceComponent);
|
|
1524
|
+
ProductPriceComponent.propDecorators = {
|
|
1525
|
+
pricing: [{ type: Input }],
|
|
1526
|
+
configurable: [{ type: Input }]
|
|
1527
|
+
};
|
|
1507
1528
|
|
|
1508
|
-
|
|
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
|
+
];
|
|
1546
|
+
|
|
1547
|
+
class ProductAddtocartComponent {
|
|
1509
1548
|
constructor(iconCache, _ioneControllerService, _appEventService, _settingsService) {
|
|
1510
1549
|
this.iconCache = iconCache;
|
|
1511
1550
|
this._ioneControllerService = _ioneControllerService;
|
|
@@ -1554,50 +1593,73 @@ let ProductAddtocartComponent = class ProductAddtocartComponent {
|
|
|
1554
1593
|
return yield this._ioneControllerService.getJsonArticleFlatTree(article.article.goodId, article.article.goodType, article.quantity, true, configuratorStatistics);
|
|
1555
1594
|
});
|
|
1556
1595
|
}
|
|
1557
|
-
}
|
|
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
|
+
];
|
|
1558
1625
|
ProductAddtocartComponent.ctorParameters = () => [
|
|
1559
1626
|
{ type: IconCacheService },
|
|
1560
1627
|
{ type: ProductConnectorService },
|
|
1561
1628
|
{ type: ProductEventService },
|
|
1562
1629
|
{ type: ProductSettingsService }
|
|
1563
1630
|
];
|
|
1564
|
-
|
|
1565
|
-
ViewChild
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
Input
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
], ProductAddtocartComponent.prototype, "configuring", void 0);
|
|
1576
|
-
__decorate([
|
|
1577
|
-
HostBinding('class.full-screen'),
|
|
1578
|
-
Input()
|
|
1579
|
-
], ProductAddtocartComponent.prototype, "fullscreen", void 0);
|
|
1580
|
-
__decorate([
|
|
1581
|
-
Input()
|
|
1582
|
-
], ProductAddtocartComponent.prototype, "quantity", null);
|
|
1583
|
-
__decorate([
|
|
1584
|
-
Output()
|
|
1585
|
-
], ProductAddtocartComponent.prototype, "startConfiguration", void 0);
|
|
1586
|
-
__decorate([
|
|
1587
|
-
Output()
|
|
1588
|
-
], ProductAddtocartComponent.prototype, "addToCartClick", void 0);
|
|
1589
|
-
__decorate([
|
|
1590
|
-
Output()
|
|
1591
|
-
], ProductAddtocartComponent.prototype, "addToQuoteClick", void 0);
|
|
1592
|
-
ProductAddtocartComponent = __decorate([
|
|
1593
|
-
Component({
|
|
1594
|
-
selector: 'app-product-addtocart',
|
|
1595
|
-
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",
|
|
1596
|
-
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}"]
|
|
1597
|
-
})
|
|
1598
|
-
], 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
|
+
};
|
|
1599
1642
|
|
|
1600
|
-
|
|
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 {
|
|
1601
1663
|
constructor(_iOne, _appEventService) {
|
|
1602
1664
|
this._iOne = _iOne;
|
|
1603
1665
|
this._appEventService = _appEventService;
|
|
@@ -1638,36 +1700,108 @@ let ProductRelatedComponent = class ProductRelatedComponent {
|
|
|
1638
1700
|
}
|
|
1639
1701
|
});
|
|
1640
1702
|
}
|
|
1641
|
-
}
|
|
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
|
+
];
|
|
1642
1728
|
ProductRelatedComponent.ctorParameters = () => [
|
|
1643
1729
|
{ type: ProductConnectorService },
|
|
1644
1730
|
{ type: ProductEventService }
|
|
1645
1731
|
];
|
|
1646
|
-
|
|
1647
|
-
Input
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
Input
|
|
1651
|
-
|
|
1652
|
-
__decorate([
|
|
1653
|
-
Input()
|
|
1654
|
-
], ProductRelatedComponent.prototype, "isSmallModus", void 0);
|
|
1655
|
-
__decorate([
|
|
1656
|
-
Input()
|
|
1657
|
-
], ProductRelatedComponent.prototype, "articles", null);
|
|
1658
|
-
ProductRelatedComponent = __decorate([
|
|
1659
|
-
Component({
|
|
1660
|
-
selector: 'app-product-related',
|
|
1661
|
-
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",
|
|
1662
|
-
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}"]
|
|
1663
|
-
})
|
|
1664
|
-
], ProductRelatedComponent);
|
|
1732
|
+
ProductRelatedComponent.propDecorators = {
|
|
1733
|
+
refType: [{ type: Input }],
|
|
1734
|
+
label: [{ type: Input }],
|
|
1735
|
+
isSmallModus: [{ type: Input }],
|
|
1736
|
+
articles: [{ type: Input }]
|
|
1737
|
+
};
|
|
1665
1738
|
|
|
1666
|
-
|
|
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 {
|
|
1667
1800
|
constructor(_iOne, _iconCache) {
|
|
1668
1801
|
this._iOne = _iOne;
|
|
1669
1802
|
this._iconCache = _iconCache;
|
|
1670
1803
|
this.icon = IconEnum;
|
|
1804
|
+
this.openStockEvent = new EventEmitter();
|
|
1671
1805
|
this.iconData = this._iconCache.getIcon(this.icon.Warehouse);
|
|
1672
1806
|
}
|
|
1673
1807
|
set stockAndDelivery(value) {
|
|
@@ -1677,50 +1811,55 @@ let ProductStockComponent = class ProductStockComponent {
|
|
|
1677
1811
|
}
|
|
1678
1812
|
ngOnInit() {
|
|
1679
1813
|
}
|
|
1680
|
-
|
|
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
|
+
];
|
|
1681
1835
|
ProductStockComponent.ctorParameters = () => [
|
|
1682
1836
|
{ type: ProductConnectorService },
|
|
1683
1837
|
{ type: IconCacheService }
|
|
1684
1838
|
];
|
|
1685
|
-
|
|
1686
|
-
Input
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
Component({
|
|
1690
|
-
selector: 'app-product-stock',
|
|
1691
|
-
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",
|
|
1692
|
-
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}}"]
|
|
1693
|
-
})
|
|
1694
|
-
], ProductStockComponent);
|
|
1839
|
+
ProductStockComponent.propDecorators = {
|
|
1840
|
+
stockAndDelivery: [{ type: Input }],
|
|
1841
|
+
openStockEvent: [{ type: Output }]
|
|
1842
|
+
};
|
|
1695
1843
|
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
LocalizePipe.ctorParameters = () => [
|
|
1714
|
-
{ type: DictionaryService }
|
|
1715
|
-
];
|
|
1716
|
-
LocalizePipe = __decorate([
|
|
1717
|
-
Pipe({
|
|
1718
|
-
name: 'localize'
|
|
1719
|
-
})
|
|
1720
|
-
// A pipe for localizing string values in view templates.
|
|
1721
|
-
], 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
|
+
];
|
|
1722
1861
|
|
|
1723
|
-
|
|
1862
|
+
class ProductDeliveryComponent {
|
|
1724
1863
|
constructor(_localizePipe, _iOne, _iconCache) {
|
|
1725
1864
|
this._localizePipe = _localizePipe;
|
|
1726
1865
|
this._iOne = _iOne;
|
|
@@ -1738,24 +1877,51 @@ let ProductDeliveryComponent = class ProductDeliveryComponent {
|
|
|
1738
1877
|
}
|
|
1739
1878
|
ngOnInit() {
|
|
1740
1879
|
}
|
|
1741
|
-
}
|
|
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
|
+
];
|
|
1742
1897
|
ProductDeliveryComponent.ctorParameters = () => [
|
|
1743
1898
|
{ type: LocalizePipe },
|
|
1744
1899
|
{ type: ProductConnectorService },
|
|
1745
1900
|
{ type: IconCacheService }
|
|
1746
1901
|
];
|
|
1747
|
-
|
|
1748
|
-
Input
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1902
|
+
ProductDeliveryComponent.propDecorators = {
|
|
1903
|
+
stockAndDelivery: [{ type: Input }]
|
|
1904
|
+
};
|
|
1905
|
+
|
|
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
|
+
];
|
|
1757
1923
|
|
|
1758
|
-
|
|
1924
|
+
class ProductInfoTabsComponent {
|
|
1759
1925
|
constructor(_appEventService) {
|
|
1760
1926
|
this._appEventService = _appEventService;
|
|
1761
1927
|
this.activeTabHeight = 0;
|
|
@@ -1797,119 +1963,45 @@ let ProductInfoTabsComponent = class ProductInfoTabsComponent {
|
|
|
1797
1963
|
this.tabs.push({ title: 'SYMBOLS' });
|
|
1798
1964
|
}
|
|
1799
1965
|
}
|
|
1800
|
-
}
|
|
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
|
+
];
|
|
1801
1996
|
ProductInfoTabsComponent.ctorParameters = () => [
|
|
1802
1997
|
{ type: ProductEventService }
|
|
1803
1998
|
];
|
|
1804
|
-
|
|
1805
|
-
ViewChild
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
Input()
|
|
1809
|
-
], ProductInfoTabsComponent.prototype, "article", null);
|
|
1810
|
-
ProductInfoTabsComponent = __decorate([
|
|
1811
|
-
Component({
|
|
1812
|
-
selector: 'app-product-info-tabs',
|
|
1813
|
-
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",
|
|
1814
|
-
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}}"]
|
|
1815
|
-
})
|
|
1816
|
-
], ProductInfoTabsComponent);
|
|
1817
|
-
|
|
1818
|
-
let PipeModule = class PipeModule {
|
|
1819
|
-
};
|
|
1820
|
-
PipeModule = __decorate([
|
|
1821
|
-
NgModule({
|
|
1822
|
-
exports: [
|
|
1823
|
-
LocalizePipe
|
|
1824
|
-
],
|
|
1825
|
-
declarations: [
|
|
1826
|
-
LocalizePipe
|
|
1827
|
-
],
|
|
1828
|
-
providers: [
|
|
1829
|
-
LocalizePipe
|
|
1830
|
-
]
|
|
1831
|
-
})
|
|
1832
|
-
], PipeModule);
|
|
1833
|
-
|
|
1834
|
-
let ProductDocumentsComponent = class ProductDocumentsComponent {
|
|
1835
|
-
constructor(iconCache) {
|
|
1836
|
-
this.iconCache = iconCache;
|
|
1837
|
-
this.icon = IconEnum;
|
|
1838
|
-
this.showLabel = false;
|
|
1839
|
-
this.documents = [];
|
|
1840
|
-
}
|
|
1841
|
-
};
|
|
1842
|
-
ProductDocumentsComponent.ctorParameters = () => [
|
|
1843
|
-
{ type: IconCacheService }
|
|
1844
|
-
];
|
|
1845
|
-
__decorate([
|
|
1846
|
-
Input()
|
|
1847
|
-
], ProductDocumentsComponent.prototype, "showLabel", void 0);
|
|
1848
|
-
__decorate([
|
|
1849
|
-
Input()
|
|
1850
|
-
], ProductDocumentsComponent.prototype, "documents", void 0);
|
|
1851
|
-
ProductDocumentsComponent = __decorate([
|
|
1852
|
-
Component({
|
|
1853
|
-
selector: 'app-product-documents',
|
|
1854
|
-
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",
|
|
1855
|
-
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}"]
|
|
1856
|
-
})
|
|
1857
|
-
], ProductDocumentsComponent);
|
|
1858
|
-
|
|
1859
|
-
let HeaderComponent = class HeaderComponent {
|
|
1860
|
-
constructor() { }
|
|
1861
|
-
ngOnInit() {
|
|
1862
|
-
}
|
|
1863
|
-
};
|
|
1864
|
-
__decorate([
|
|
1865
|
-
Input()
|
|
1866
|
-
], HeaderComponent.prototype, "label", void 0);
|
|
1867
|
-
__decorate([
|
|
1868
|
-
Input()
|
|
1869
|
-
], HeaderComponent.prototype, "amount", void 0);
|
|
1870
|
-
HeaderComponent = __decorate([
|
|
1871
|
-
Component({
|
|
1872
|
-
selector: 'app-header',
|
|
1873
|
-
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",
|
|
1874
|
-
styles: [".header-wrapper{display:flex;flex-direction:row;align-items:center}.header-wrapper .amount{margin-left:5px}"]
|
|
1875
|
-
})
|
|
1876
|
-
], HeaderComponent);
|
|
1877
|
-
|
|
1878
|
-
var TabType;
|
|
1879
|
-
(function (TabType) {
|
|
1880
|
-
TabType["Additional"] = "additional";
|
|
1881
|
-
TabType["Properties"] = "properties";
|
|
1882
|
-
})(TabType || (TabType = {}));
|
|
1883
|
-
let ProductInfoComponent = class ProductInfoComponent {
|
|
1884
|
-
constructor() {
|
|
1885
|
-
this.tabType = TabType;
|
|
1886
|
-
this.currentTab = TabType.Additional;
|
|
1887
|
-
}
|
|
1888
|
-
ngOnInit() {
|
|
1889
|
-
}
|
|
1890
|
-
switchTab(tab) {
|
|
1891
|
-
this.currentTab = tab;
|
|
1892
|
-
}
|
|
1893
|
-
};
|
|
1894
|
-
__decorate([
|
|
1895
|
-
Input()
|
|
1896
|
-
], ProductInfoComponent.prototype, "article", void 0);
|
|
1897
|
-
ProductInfoComponent = __decorate([
|
|
1898
|
-
Component({
|
|
1899
|
-
selector: 'app-product-info',
|
|
1900
|
-
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",
|
|
1901
|
-
animations: [
|
|
1902
|
-
trigger('showContent', [
|
|
1903
|
-
state('void', style({ 'opacity': '0' })),
|
|
1904
|
-
state('*', style({ 'opacity': '1' })),
|
|
1905
|
-
transition('void => *', animate('200ms 100ms ease-in-out')),
|
|
1906
|
-
])
|
|
1907
|
-
],
|
|
1908
|
-
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}"]
|
|
1909
|
-
})
|
|
1910
|
-
], ProductInfoComponent);
|
|
1999
|
+
ProductInfoTabsComponent.propDecorators = {
|
|
2000
|
+
tabContent: [{ type: ViewChild, args: ['tabContent',] }],
|
|
2001
|
+
article: [{ type: Input }]
|
|
2002
|
+
};
|
|
1911
2003
|
|
|
1912
|
-
|
|
2004
|
+
class ProductAdditionalInfoComponent {
|
|
1913
2005
|
constructor(_sanitizer, _connectorService, _changeDetector) {
|
|
1914
2006
|
this._sanitizer = _sanitizer;
|
|
1915
2007
|
this._connectorService = _connectorService;
|
|
@@ -1989,25 +2081,45 @@ let ProductAdditionalInfoComponent = class ProductAdditionalInfoComponent {
|
|
|
1989
2081
|
return;
|
|
1990
2082
|
});
|
|
1991
2083
|
}
|
|
1992
|
-
}
|
|
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
|
+
];
|
|
1993
2097
|
ProductAdditionalInfoComponent.ctorParameters = () => [
|
|
1994
2098
|
{ type: DomSanitizer },
|
|
1995
2099
|
{ type: ProductConnectorService },
|
|
1996
2100
|
{ type: ChangeDetectorRef }
|
|
1997
2101
|
];
|
|
1998
|
-
|
|
1999
|
-
Input
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
],
|
|
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
|
+
];
|
|
2011
2123
|
|
|
2012
2124
|
const propertyMap = new Map([
|
|
2013
2125
|
['articleNr', 'ARTICLE_NUMBER'],
|
|
@@ -2020,7 +2132,7 @@ const propertyMap = new Map([
|
|
|
2020
2132
|
['height', 'HEIGHT'],
|
|
2021
2133
|
['width', 'WIDTH']
|
|
2022
2134
|
]);
|
|
2023
|
-
|
|
2135
|
+
class ProductPropertiesComponent {
|
|
2024
2136
|
constructor() {
|
|
2025
2137
|
this.showLabel = false;
|
|
2026
2138
|
this.properties = [];
|
|
@@ -2045,22 +2157,95 @@ let ProductPropertiesComponent = class ProductPropertiesComponent {
|
|
|
2045
2157
|
}
|
|
2046
2158
|
});
|
|
2047
2159
|
}
|
|
2048
|
-
}
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
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
|
+
};
|
|
2062
2183
|
|
|
2063
|
-
|
|
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 {
|
|
2064
2249
|
constructor() {
|
|
2065
2250
|
this.symbolStrings = [];
|
|
2066
2251
|
}
|
|
@@ -2080,119 +2265,248 @@ let ProductSymbolsComponent = class ProductSymbolsComponent {
|
|
|
2080
2265
|
}
|
|
2081
2266
|
ngOnInit() {
|
|
2082
2267
|
}
|
|
2083
|
-
}
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
]
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
]
|
|
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
|
+
];
|
|
2097
2315
|
|
|
2098
|
-
|
|
2099
|
-
}
|
|
2100
|
-
|
|
2101
|
-
NgModule
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
declarations: [
|
|
2119
|
-
ProductPageComponent,
|
|
2120
|
-
ProductSelectorTypeComponent,
|
|
2121
|
-
ImageCarouselComponent,
|
|
2122
|
-
ProductDescriptionComponent,
|
|
2123
|
-
ProductAdditionalDescriptionComponent,
|
|
2124
|
-
ProductPriceComponent,
|
|
2125
|
-
ProductAddtocartComponent,
|
|
2126
|
-
ProductRelatedComponent,
|
|
2127
|
-
ProductStockComponent,
|
|
2128
|
-
ProductDeliveryComponent,
|
|
2129
|
-
ProductInfoTabsComponent,
|
|
2130
|
-
ProductDocumentsComponent,
|
|
2131
|
-
HeaderComponent,
|
|
2132
|
-
ProductInfoComponent,
|
|
2133
|
-
ProductAdditionalInfoComponent,
|
|
2134
|
-
ProductPropertiesComponent,
|
|
2135
|
-
ProductSymbolsComponent
|
|
2136
|
-
],
|
|
2137
|
-
exports: [ProductPageComponent]
|
|
2138
|
-
})
|
|
2139
|
-
], ProductPageModule);
|
|
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
|
+
];
|
|
2140
2336
|
|
|
2141
|
-
|
|
2142
|
-
}
|
|
2143
|
-
|
|
2144
|
-
NgModule
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
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
|
+
];
|
|
2157
2365
|
|
|
2158
|
-
|
|
2159
|
-
const x = () => context.initializeApp();
|
|
2160
|
-
return x;
|
|
2366
|
+
class IoneProductModule {
|
|
2161
2367
|
}
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
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;
|
|
2184
2440
|
}
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
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
|
+
};
|
|
2489
|
+
|
|
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
|
+
];
|
|
2192
2506
|
|
|
2193
2507
|
/**
|
|
2194
2508
|
* Generated bundle index. Do not edit.
|
|
2195
2509
|
*/
|
|
2196
2510
|
|
|
2197
|
-
export { IoneProductModule, ProductExternalSourceComponent, ProductExternalSourceModule, Version,
|
|
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 };
|
|
2198
2512
|
//# sourceMappingURL=colijnit-product.js.map
|