{"version":3,"mappings":"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","names":["c","constructor","s","g","Z","this","f","centerMode","dots","infinite","autoplay","autoplaySpeed","arrows","nextArrow","prevArrow","slidesToShow","slidesToScroll","speed","responsive","breakpoint","settings","ngOnInit","productService","webshopServiceFactory","createWebshopService","m","searchProducts","search","page","shopOnly","size","productsLoading$","getProductsLoadingObservable","productsResponse$","getProductsResponseObservable","pipe","t","ngUnsubscribe$","subscribe","allPromo","campaignInfo","showProducts","promoService","setSelectedPromo","viewPromoProducts","emit","ngOnDestroy","next","complete","w","selectors","e","config","availableOnlyCheckboxEnabled","searchForm","queryString","availableOnly","setValue","searchWord","availableOnlyFlag","submitSearch","valid","value","hasOwnProperty","emptySearchEnabled","initialSearchSubmitted","resetSearch","reset","updateValueAndValidity","trackFeaturedProducts","matomoService","trackEvent","Y","n","i","r","a","u","h","C","M","y","P","k","ads","length","adsRestService","getCurrentAds","q","userService","isAdmin","adService","showAd","return_object","isSubmitted","get","formGroupDirective","resetForm","_","products$","getProductsObservable","productSuggestions","errorMsg","Object","assign","docuLightService","setSearchString","target","performSearch","keyCode","hideAllResults","idf","selectedIdf","onSelect","router","navigate","navService","getRouteForProductType","type","id","viewAll","searchEnabled","viewAllResults","onFocus","searchString","onBlur","getErrMessage","imageErrorHandler","src","H","x","b","addToCartForm","initializeForm","ngOnChanges","products","quantityObj","forEach","price","minQuantity","campaignId","addControl","getPrice","cents","retailPrice","getMinQty","updateQuantity","parseInt","isNaN","controls","addToCart","L","product","quantity","cartService","openAddConfirmDialog","afterClosed","T","autoFocus","data","perform","items","dialog","open","at","navigateToProductDetails","canShowAdvantageDropdown","openSubsequentDeliveryModal","showSubsequentDeliveryModal","canAddToCart","availabilityStatus","promotion","isSubsequentDelivery","isNotAvailable","isDisabled","z","$","D","dt","Et","selectedPromoId","processPromoProducts","scrollPosition$","getScrollPositionObservable","productCache$","getProductCacheObservable","endOfResult","end","total","moreLoading","dokuLightService","searchRequestSize","loadMore","setTimeout","scrollingService","scrollToYPositionOfVisibleViewport","unsubscribe","route","queryParams","promo","showNewItems","determineScrollPositionOfVisibleViewport","activateProduct","activeItem","deactivateProduct","onChangeQuantity","quantities","scrollToTop","document","querySelector","scrollIntoView","updateScrollingPosition","showPricingTable","amountOfPrices","toggleView","view","setProductViewType","updateItemsPerRow","toggleAvailableResults","checked","getPromoInfo","promoDisclaimer","find","disclaimer","filter","onResize","window","innerWidth","itemsPerRow","hasPricesInRow","Math","floor","slice","some","openSubsequentDeliveryForm","minWidth","distributionCenterId","selectedDistributionCenterId","Nt","notification","html","pzn","replace","I","rt","ct","J","W","super","quantityInput","decreaseQuantity","srcElement","updateProfaxCart","proFaxService","addItemToCart","proFaxCart$","getProFaxCartObservable","amount","resetProfaxCart","j","U","filterByCampaign","addProfaxProductsToCart","proFaxCart","keys","indexOf","reduce","push","proFaxResetter$","updateCartTotal","calculateTotals","emptyProfaxCart","V","validateQuantity","updatePromoCart","promoCart$","getPromoCartObservable","resetPromoCart","isQuantityValid","Number","toString","includes","title","K","promoCart","validateAmount","promoResetter$","emptyPromoCart","mtmEvent","calculateAdvantage","G","updateUberCart","uberService","uberCart$","getUberCartObservable","resetUberCart","X","uberCart","uberResetter$","emptyUberCart","resetProducts","tt","xt","F","E","N","nt","d","isPhoenixUser","isInternalUser","input","selectedIdf$","currentlyDisplayedIdf","distributionCenters","productType","initPossibleHeadingValues","productsRequest$","getProductsRequestObservable","vendorId","snapshot","paramMap","loadMoreItems","store","start","displayNewBatch","activeSearchBox","heading","values","KW","calendarService","getWeekOfTheYear","loadNewItems","isStandardShop","isParagraph73Shop","isPinShop","isProFaxShop","isPromoShop","isTopPrisma","isPaybackShop","isUberShop","isExclusiveOffersShop","hasRequiredAuthority","isPrivateStockShop","resetSelectedPromo","showAllResults","et","ot","pt","path","component","pathMatch","R","Uo","el","zone","platformId","afterChange","EventEmitter","beforeChange","destroy","init","currentIndex","slides","initialized","_removedSlides","_addedSlides","unslick","ngAfterViewInit","ngAfterViewChecked","isPlatformServer","nextSlidesLength","slickItem","runOutsideAngular","$instance","slick","nativeElement","idx","initSlick","jQuery","on","event","run","_a","initialSlide","currentSlide","first","last","$slides","options","nextSlide","addSlide","removeSlide","slickGoTo","index","slickNext","slickPrev","slickPause","slickPlay","undefined","changes","previousValue","currentValue","refresh","newOptions","SlickCarouselComponent","ɵfac","i0","PLATFORM_ID","ɵcmp","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ngContentSelectors","encapsulation","carousel","isPlatformBrowser","SlickItemDirective","ɵdir","SlickCarouselModule","ɵmod","ɵinj","CommonModule"],"sources":["webpack:///src/app/modules/webshop/components/product-promotions/product-promotions.component.html","webpack:///src/app/modules/webshop/components/product-promotions/product-promotions.component.ts","webpack:///src/app/modules/webshop/components/search-box/search-box.component.html","webpack:///src/app/modules/webshop/components/search-box/search-box.component.ts","webpack:///src/app/modules/webshop/components/search-box-doculight/search-box-doculight.component.html","webpack:///src/app/modules/webshop/components/search-box-doculight/search-box-doculight.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-list-compact-view/infinite-list-compact-view.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-list-compact-view/infinite-list-compact-view.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-result-list.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-result-list.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-p73-result-list/infinite-p73-result-list.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-p73-result-list/infinite-p73-result-list.component.ts","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-profax/cart-provider-profax.component.html","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-profax/cart-provider-profax.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-pro-fax-result-list/infinite-pro-fax-result-list.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-pro-fax-result-list/infinite-pro-fax-result-list.component.ts","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-promo/cart-provider-promo.component.html","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-promo/cart-provider-promo.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-promo-result-list/infinite-promo-result-list.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-promo-result-list/infinite-promo-result-list.component.ts","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-uber/cart-provider-uber.component.html","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-uber/cart-provider-uber.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-uber-result-list/infinite-uber-result-list.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-uber-result-list/infinite-uber-result-list.component.ts","webpack:///src/app/modules/webshop/components/price-scale/price-scale-payback/price-scale-payback.component.html","webpack:///src/app/modules/webshop/components/price-scale/price-scale-payback/price-scale-payback.component.ts","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-payback/cart-provider-payback.component.html","webpack:///src/app/modules/webshop/components/cart/cart-provider/cart-provider-payback/cart-provider-payback.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-payback-result-list/infinite-payback-result-list.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/infinite-payback-result-list/infinite-payback-result-list.component.ts","webpack:///src/app/modules/webshop/components/infinite-result-list/private-stock/private-stock.component.ts","webpack:///src/app/modules/webshop/webshop.component.html","webpack:///src/app/modules/webshop/components/infinite-result-list/private-stock/private-stock.component.html","webpack:///src/app/modules/webshop/webshop.component.ts","webpack:///src/app/modules/webshop/webshop-loader/webshop-loader.component.ts","webpack:///src/app/modules/webshop/webshop-loader/webshop-loader.component.html","webpack:///src/app/modules/webshop/webshop-loader/webshop-loader.module.ts","webpack:///node_modules/ngx-slick-carousel/fesm2015/ngx-slick-carousel.mjs"],"sourcesContent":["

Exklusive Online-Sparangebote

\n
\n
\n Kampagnen werden geladen.\n
\n
\n \n

Zur Zeit sind keine aktiven Kampagnen verfügbar.
\n Die nächsten Angebote lassen aber nicht lange auf sich warten, schauen Sie bald wieder vorbei.

\n
\n \n
\n
\n
\n
\n {{ promo.start | date: 'shortDate' }}
BIS
\n {{ promo.end | date: 'shortDate' }}
\n
\n \n
\n

{{ promo.name }}

\n
\n
\n
\n
\n","import {\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {WebshopServiceFactory} from '../../../../core/services/shop/webshop-service.factory';\nimport {Observable, Subject} from 'rxjs';\nimport {ProductsResponse} from '../../../../core/models/shop/products-response.model';\nimport {ProductServiceAbstract} from '../../../../core/services/shop/product-service.abstract';\nimport {ProductType} from '../../../../core/models/shop/product-type.model';\nimport {PromoService} from '../../../../core/services/shop/promo.service';\n\n@Component({\n selector: 'app-product-promotions',\n templateUrl: './product-promotions.component.html',\n styleUrls: ['./product-promotions.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ProductPromotionsComponent implements OnInit, OnDestroy {\n\n public productsResponse$: Observable;\n public productsLoading$: Observable;\n public productService: ProductServiceAbstract;\n public allPromo: any[];\n public ngUnsubscribe$ = new Subject();\n @Output() viewPromoProducts: EventEmitter = new EventEmitter()\n slideConfig = {\n centerMode: false,\n dots: true,\n infinite: true,\n autoplay: true,\n autoplaySpeed: 3500,\n arrows: false,\n nextArrow: ``,\n prevArrow: ``,\n slidesToShow: 3,\n slidesToScroll: 3,\n speed: 1500,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n infinite: false,\n dots: false,\n }\n },\n {\n breakpoint: 600,\n settings: {\n slidesToShow: 2,\n slidesToScroll: 2,\n }\n },\n {\n breakpoint: 480,\n settings: {\n slidesToShow: 1,\n slidesToScroll: 1,\n }\n }\n ]\n };\n\n constructor(public webshopServiceFactory: WebshopServiceFactory,\n public promoService: PromoService,\n @Inject('CDN') public CDN) {\n }\n\n ngOnInit(): void {\n this.productService = this.webshopServiceFactory.createWebshopService(\n ProductType.Promo\n );\n\n this.productService.searchProducts({search: '', page: 1, shopOnly: true, size: 20});\n this.productsLoading$ = this.productService.getProductsLoadingObservable();\n this.productsResponse$ = this.productService.getProductsResponseObservable();\n this.productsResponse$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((result) => {\n if (result) {\n this.allPromo = result.campaignInfo;\n }\n });\n }\n\n showProducts(id) {\n this.promoService.setSelectedPromo(id);\n this.viewPromoProducts.emit(id);\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","
\n
\n
\n
\n
\n \n {{(config?.label | translate) || 'Suchbegriff'}}\n \n \n
\n
\n
\n Nur verfügbare Produkte anzeigen\n
\n
\n \n \n
\n
\n
\n
\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FormControl, FormGroup} from '@angular/forms';\nimport {MatomoService} from '../../../../core/services/matomo.service';\n\n@Component({\n selector: 'search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss']\n})\nexport class SearchBoxComponent implements OnInit {\n @Input() searchWord: string;\n @Input() availableOnlyFlag: boolean;\n @Output() search: EventEmitter = new EventEmitter();\n @Input() config: any;\n public queryString: FormControl = new FormControl('');\n public availableOnly: FormControl = new FormControl('');\n public searchForm: FormGroup;\n public initialSearchSubmitted: boolean;\n\n constructor(private matomoService: MatomoService) {\n }\n\n ngOnInit() {\n if (this.config.availableOnlyCheckboxEnabled) {\n this.searchForm = new FormGroup({\n queryString: this.queryString,\n availableOnly: this.availableOnly\n });\n } else {\n this.searchForm = new FormGroup({\n queryString: this.queryString\n });\n }\n\n this.queryString.setValue(this.searchWord);\n if (this.config.availableOnlyCheckboxEnabled) {\n this.availableOnly.setValue(this.availableOnlyFlag);\n }\n }\n\n submitSearch() {\n if (this.searchForm.valid && (this.queryString.value !== ''\n || (this.config.hasOwnProperty('emptySearchEnabled') && this.config.emptySearchEnabled === true))) {\n this.search.emit(this.searchForm.value);\n this.initialSearchSubmitted = true;\n }\n }\n\n resetSearch() {\n this.searchForm.reset();\n this.searchForm.updateValueAndValidity();\n this.search.emit({queryString: ''});\n this.initialSearchSubmitted = false;\n }\n\n trackFeaturedProducts() {\n this.matomoService.trackEvent('Produkt Suche', 'Klick auf', 'Featured Products');\n }\n}\n","
\n
\n
\n
\n
\n \n {{ (config?.label | translate) || 'Suchbegriff' }}\n \n \n \n \n \n \n \n 4 &&\n !(productsLoading$ | async)\">\n {{ errorMsg }}\n \n \n \n
\n
\n \n
\n
{{ option.id }}
\n
\n
{{option.price[0].cents | currency:'EUR':'symbol':'1.2-2' }}
\n
\n \n
\n
\n
\n 5 &&\n !(productsLoading$ | async)\">\n Alle Ergebnisse\n \n
\n
\n {{ getErrMessage() }}\n \n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n 0\">\n
\n \n \"{{ads[0].title}}\"\n \n
\n
\n \n
","import {Component, EventEmitter, Inject, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {FormControl, FormGroup, FormGroupDirective, Validators} from '@angular/forms';\nimport {Router} from '@angular/router';\nimport {ProductServiceAbstract} from '../../../../core/services/shop/product-service.abstract';\nimport {Observable, Subject} from 'rxjs';\nimport {Product} from '../../../../core/models/shop/product.model';\nimport {debounceTime, takeUntil} from 'rxjs/operators';\nimport {ProductType} from '../../../../core/models/shop/product-type.model';\nimport {WebshopServiceFactory} from '../../../../core/services/shop/webshop-service.factory';\nimport {DokuLightService} from '../../../../core/services/shop/doku-light.service';\nimport {ViewEncapsulation} from '@angular/core';\nimport {ProductsResponse} from '../../../../core/models/shop/products-response.model';\nimport {Store} from '@ngrx/store';\nimport * as fromReducers from '../../../../core/store/reducers';\nimport {MatomoService} from \"../../../../core/services/matomo.service\";\nimport {NavService} from '../../../../core/services/nav.service';\nimport {AdsRestService} from \"../../../../core/services/api/cms/ads.rest-service\";\nimport {AdsService} from \"../../../../core/services/ads.service\";\nimport {UserService} from \"../../../../core/services/user.service\";\nimport {AvailabilityStatus} from '../../../../core/models/shop/product-availability-status.model';\n\n@Component({\n selector: 'search-box-doculight',\n templateUrl: './search-box-doculight.component.html',\n styleUrls: ['./search-box-doculight.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchBoxDoculightComponent implements OnInit {\n // the searchWord Input is used to detect change\n // when user clicks on promotion\n @Input() set searchWord(value: string) {\n this.isSubmitted = false;\n if (this.searchForm) {\n if (value) {\n this.searchForm.get('queryString').setValue(value);\n } else {\n this.formGroupDirective.resetForm();\n }\n }\n }\n @Input() availableOnlyFlag: boolean;\n public search = new Subject();\n @Input() config: any;\n @Input() selectedIdf: any;\n public queryString: FormControl = new FormControl('', [Validators.required]);\n public availableOnly: FormControl = new FormControl('');\n public searchForm: FormGroup;\n public initialSearchSubmitted: boolean;\n public ads = [];\n\n public productService: ProductServiceAbstract;\n public products$: Observable;\n public productSuggestions: Product[];\n public productsLoading$: Observable;\n public errorMsg = '';\n public ngUnsubscribe$: Subject = new Subject();\n @Output() searchEnabled: EventEmitter = new EventEmitter();\n public isSubmitted = false;\n @ViewChild(FormGroupDirective, {static: false}) formGroupDirective: FormGroupDirective;\n AvailabilityStatus: typeof AvailabilityStatus = AvailabilityStatus;\n\n constructor(@Inject(WebshopServiceFactory) public webshopServiceFactory: WebshopServiceFactory,\n public docuLightService: DokuLightService,\n public store: Store,\n public router: Router,\n @Inject(UserService) public userService: UserService,\n private matomoService: MatomoService,\n private adsRestService: AdsRestService,\n private adService: AdsService,\n public navService: NavService,\n @Inject('CDN') public CDN) {\n if (this.ads.length < 1) {\n this.adsRestService.getCurrentAds('FEATURED_BANNER')\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(ads => {\n if (this.userService.isAdmin()) {\n this.ads = this.adService.showAd(ads.return_object, true);\n } else {\n this.ads = this.adService.showAd(ads.return_object);\n }\n });\n }\n }\n\n ngOnInit() {\n if (this.config.availableOnlyCheckboxEnabled) {\n this.searchForm = new FormGroup({\n queryString: this.queryString,\n availableOnly: this.availableOnly\n });\n } else {\n this.searchForm = new FormGroup({\n queryString: this.queryString\n });\n }\n\n if (this.config.availableOnlyCheckboxEnabled) {\n this.availableOnly.setValue(this.availableOnlyFlag);\n }\n\n this.productService = this.webshopServiceFactory.createWebshopService(ProductType.DokuLight);\n\n this.products$ = this.productService.getProductsObservable();\n this.productsLoading$ = this.productService.getProductsLoadingObservable();\n this.productsLoading$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((loading) => {\n if (!loading) {\n this.products$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((item) => {\n if (item) {\n this.productSuggestions = item;\n if (item.length === 0) {\n this.errorMsg = 'PZN ist unbekannt oder außer Handel';\n } else {\n this.errorMsg = '';\n }\n }\n });\n }\n });\n\n this.search\n .pipe(takeUntil(this.ngUnsubscribe$))\n .pipe(debounceTime(1000))\n .subscribe(productRequest => {\n const newProductRequest = Object.assign({}, productRequest, {page: 0});\n this.productService.searchProducts(newProductRequest);\n this.productSuggestions = [];\n this.errorMsg = '';\n });\n\n\n }\n\n submitSearch(e) {\n this.docuLightService.setSearchString(e.target.value);\n this.performSearch(e.keyCode !== 13);\n }\n\n performSearch(enterKeyNotPressed) {\n if (this.searchForm.valid &&\n (\n (this.queryString.value !== '' && this.queryString.value?.length > 2 ) ||\n (this.config.hasOwnProperty('emptySearchEnabled') && this.config.emptySearchEnabled === true))\n ) {\n if (enterKeyNotPressed) {\n this.docuLightService.hideAllResults();\n }\n this.errorMsg = '';\n const req = {search: this.queryString.value};\n Object.assign(req, {idf: this.selectedIdf});\n this.search.next(req);\n }\n }\n\n resetSearch() {\n this.searchForm.reset();\n this.formGroupDirective.resetForm();\n this.productSuggestions = [];\n this.errorMsg = '';\n this.initialSearchSubmitted = false;\n this.isSubmitted = false;\n }\n\n onSelect(product) {\n this.router.navigate(['/product-details/' + this.navService.getRouteForProductType(product.type) + '/' + product.id ]);\n }\n\n viewAll() {\n this.isSubmitted = true;\n if (this.queryString.value !== '' && this.queryString.value?.length > 2) {\n this.searchEnabled.emit();\n this.performSearch(false);\n }\n }\n\n viewAllResults() {\n this.searchEnabled.emit();\n }\n\n onFocus() {\n if (this.docuLightService.searchString === '') {\n this.productSuggestions = [];\n }\n }\n\n onBlur() {\n if (this.docuLightService.searchString === '') {\n this.formGroupDirective.resetForm();\n }\n }\n\n getErrMessage() {\n const value = this.queryString.value;\n if (value === '' || !value) {\n return 'Pflichtangabe';\n }\n return '';\n }\n\n trackFeaturedProducts() {\n this.docuLightService.searchString = '';\n this.matomoService.trackEvent('Produkt Suche', 'Klick auf', 'Featured Products');\n }\n\n imageErrorHandler(event) {\n event.target.src = '../../../../../assets/img/placeholders/placeholder-200.jpg';\n }\n\n}\n","
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PZNArtikelbezeichnungAEPPreisVorteil
auf AEP
Verfüg-
barkeit
Bestell-
menge
In den
Warenkorb
\n \n \n \"{{\n \n {{ prod.id }}\n \n

\n
\n {{ prod.manufacturer }}\n
{{ prod.retailPrice | currency:'EUR':'symbol':'1.2-2' }}{{ (getPrice(prod)| currency:'EUR':'symbol':'1.2-2' ) }}\n
\n \n 0 && getMinQty(prod.price, prod) === price.minQuantity\">{{ 1 - (price.cents / prod.retailPrice) | percent:'1.2-2' }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
MengePreis
(pro Einheit)
Vorteil
(auf AEP)
ab {{price.minQuantity}}{{price.cents | currency:'EUR':'symbol':'1.2-2'}}{{ 1 - (price.cents / prod.retailPrice) | percent:'1.2-2' }}
\n
\n
\n \n
 
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n\n \n
\n
\n
\n
\n \n \n\n \n \n\n \n \n
\n
\n
","import {Component, Inject, Input, OnInit, OnChanges, SimpleChanges, Output, EventEmitter} from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { Product } from '../../../../../core/models/shop/product.model';\nimport { CartItem } from '../../../../../core/models/shop/cart-item.model';\nimport { CartService } from '../../../../../core/services/cart.service';\nimport { NavService } from '../../../../../core/services/nav.service';\nimport { AddToCartConfirmDialogComponent } from '../../cart/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component';\nimport {AvailabilityStatus} from '../../../../../core/models/shop/product-availability-status.model';\n\n@Component({\n selector: 'infinite-list-compact-card',\n templateUrl: './infinite-list-compact-view.component.html',\n styleUrls: ['./infinite-list-compact-view.component.scss']\n})\nexport class InfiniteListCompactViewComponent implements OnInit, OnChanges {\n @Input() products: Product[];\n @Output() showSubsequentDeliveryModal: EventEmitter = new EventEmitter();\n\n public quantityObj: any = {};\n public addToCartForm: FormGroup;\n\n public ngUnsubscribe$ = new Subject();\n AvailabilityStatus: typeof AvailabilityStatus = AvailabilityStatus;\n constructor(\n @Inject('CDN') public CDN: string,\n public dialog: MatDialog,\n public cartService: CartService,\n public navService: NavService,\n public router: Router\n ) {\n this.addToCartForm = new FormGroup({});\n }\n\n ngOnInit(): void {\n this.initializeForm();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['products']) {\n this.initializeForm();\n }\n }\n\n private initializeForm(): void {\n this.quantityObj = {};\n this.addToCartForm = new FormGroup({});\n\n if (this.products && this.products.length > 0) {\n this.products.forEach((product: Product) => {\n const initialQuantity = product.price[0].minQuantity || 1;\n\n // Create a unique form control name using product.id and product.campaignId\n const formControlName = `quantityInput_${product.id}_${product.campaignId}`;\n\n // Store the quantity in quantityObj using the unique key\n this.quantityObj[`${product.id}_${product.campaignId}`] = initialQuantity;\n\n // Add a new form control using the unique form control name\n this.addToCartForm.addControl(\n formControlName,\n new FormControl(initialQuantity, [Validators.min(1), Validators.max(999)])\n );\n });\n }\n }\n\n imageErrorHandler(event: any) {\n event.target.src = '../../../../../assets/img/placeholders/placeholder-200.jpg';\n }\n\n getPrice(product: Product): number {\n const productKey = `${product.id}_${product.campaignId}`;\n let price = product.price[0].minQuantity === this.quantityObj[productKey] ? product.price[0].cents : product.retailPrice;\n for (const pr of product.price) {\n if (this.quantityObj[productKey] && this.quantityObj[productKey] >= pr.minQuantity) {\n price = pr.cents;\n }\n }\n return price;\n }\n\n getMinQty(prices: any[], product: Product): number {\n const productKey = `${product.id}_${product.campaignId}`;\n let minQty = prices[0].minQuantity;\n for (const pr of prices) {\n if (this.quantityObj[productKey] && this.quantityObj[productKey] >= pr.minQuantity) {\n minQty = pr.minQuantity;\n }\n }\n return minQty;\n }\n\n updateQuantity(event: Event, product: Product): void {\n const target = event.target as HTMLInputElement;\n let value = parseInt(target.value, 10);\n\n // Ensure the value is within the valid range\n if (isNaN(value) || value < 1) {\n value = 1;\n } else if (value > 999) {\n value = 999;\n }\n\n // Use the unique form control name based on product.id and product.campaignId\n const formControlName = `quantityInput_${product.id}_${product.campaignId}`;\n this.addToCartForm.controls[formControlName].setValue(value);\n\n // Update the quantity object with the validated value\n this.quantityObj[`${product.id}_${product.campaignId}`] = value;\n }\n\n addToCart(product: Product): void {\n const productKey = `${product.id}_${product.campaignId}`;\n const item = new CartItem({ product, quantity: this.quantityObj[productKey] });\n if (item.quantity < 100) {\n this.cartService.addToCart([item]);\n } else {\n const dialogRef = this.openAddConfirmDialog(item);\n dialogRef.afterClosed().pipe(takeUntil(this.ngUnsubscribe$)).subscribe(result => {\n if (result) {\n this.cartService.addToCart([item]);\n }\n });\n }\n }\n\n openAddConfirmDialog(item: CartItem): MatDialogRef {\n const confirmDialogConfig = new MatDialogConfig();\n confirmDialogConfig.autoFocus = true;\n confirmDialogConfig.data = { perform: false, items: [item] };\n return this.dialog.open(AddToCartConfirmDialogComponent, confirmDialogConfig);\n }\n\n navigateToProductDetails(product: Product): void {\n const type = this.navService.getRouteForProductType(product.type);\n this.router.navigate([`/product-details/${type}/${product.id}`]);\n }\n\n canShowAdvantageDropdown(product: Product): boolean {\n if (product.price.length < 2) {\n return false;\n }\n\n for (const price of product.price) {\n if ((1 - (price.cents / product.retailPrice)) > 0 && this.getMinQty(product.price, product) === price.minQuantity) {\n return true;\n }\n }\n return false;\n }\n\n openSubsequentDeliveryModal(product: Product) {\n this.showSubsequentDeliveryModal.emit(product);\n }\n\n // Checks if the primary \"Add to Cart\" button should be enabled and visible\n canAddToCart(prod: any): boolean {\n return prod.retailPrice > 0 &&\n (prod.availabilityStatus === AvailabilityStatus.ENABLE || prod.promotion) &&\n prod.availabilityStatus !== AvailabilityStatus.SUBSEQUENT_ORDER;\n }\n\n // Checks if the \"Nachlieferung\" (Subsequent Delivery) button should be visible\n isSubsequentDelivery(prod: any): boolean {\n return prod.retailPrice > 0 &&\n prod.availabilityStatus === AvailabilityStatus.SUBSEQUENT_ORDER &&\n !prod.promotion;\n }\n\n // Checks if the product is not available and should show the inactive button\n isNotAvailable(prod: any): boolean {\n return prod.retailPrice === 0 ||\n (prod.availabilityStatus === AvailabilityStatus.DISABLE && !prod.promotion);\n }\n\n // Determines if the primary \"Add to Cart\" button should be disabled\n isDisabled(prod: any): boolean {\n return prod.availabilityStatus === AvailabilityStatus.DISABLE && !prod.promotion;\n }\n}\n"," \n \n
\n
\n \n
\n

Ergebnisse zu Ihrer Suche nach\n \"{{dokuLightService.searchString}}\" (nur verfügbare)

\n

\n

\n
\n \n \n

Ergebnisse filtern

\n
\n
\n
\n
\n Nur sofort lieferbar\n \n
\n
\n
\n
\n
\n \n
0)\">\n

Ansicht der Ergebnisse:

\n \n \n \n
\n
\n \n
verfügbar
\n
\n
\n \n
nicht verfügbar
\n
\n
\n \n
nachlieferfähig
\n
\n
\n
\n \n \n
0\">\n
\n
\n \n
\n
\n \"{{\n
\n
\n
\n
\n

\n {{product.manufacturer}}
\n PZN: {{product.id}}
\n Inhalt: {{product.content}}\n
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n
BestellmengePreis
(pro Einheit)
Vorteil
(auf AEP)
ab {{price.minQuantity}}{{price.cents | currency:'EUR':'symbol':'1.2-2'}}{{ 1 - (price.cents / product.retailPrice) | percent:'1.2-2' }}
\n
\n
\n \n \n \n \n
\n
\n
\n
\n
\n\n \n
0\" class=\"position-relative\">\n \n
\n\n \n
0\">\n
\n \n
\n
\n\n \n
\n

Es konnten keine Suchergebnisse gefunden werden.

\n
\n\n
\n Produkte werden gesucht.\n
\n\n
\n Produkte werden geladen.\n
\n
\n \n
\n
\n

\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n","import {\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport {Product} from '../../../../core/models/shop/product.model';\nimport {Observable, Subject} from 'rxjs';\nimport {ProductsResponse} from '../../../../core/models/shop/products-response.model';\nimport {take, takeUntil} from 'rxjs/operators';\nimport {ProductType} from '../../../../core/models/shop/product-type.model';\nimport * as fromReducers from '../../../../core/store/reducers';\nimport {Store} from '@ngrx/store';\nimport {WebshopServiceFactory} from '../../../../core/services/shop/webshop-service.factory';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ProductServiceAbstract} from '../../../../core/services/shop/product-service.abstract';\nimport {ScrollingService} from '../../../../core/services/scrolling.service';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {MatomoService} from '../../../../core/services/matomo.service';\nimport {PromoService} from '../../../../core/services/shop/promo.service';\nimport {DokuLightService} from '../../../../core/services/shop/doku-light.service';\nimport {ThemePalette} from '@angular/material/core';\nimport {ProductViewTypes} from '../../../../core/models/enums/product-view-types.model';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {NavService} from '../../../../core/services/nav.service';\nimport {MatDialog, MatDialogConfig} from '@angular/material/dialog';\nimport {\n SubsequentDeliveryFormModalComponent\n} from '../../../shared/subsequent-delivery-form-modal/subsequent-delivery-form-modal.component';\n\n\n@Component({\n selector: 'infinite-result-list',\n templateUrl: './infinite-result-list.component.html',\n styleUrls: ['./infinite-result-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class InfiniteResultListComponent implements OnInit, OnDestroy {\n public total: number;\n public activeItem: string;\n public endOfResult: boolean;\n public moreLoading = false;\n\n public productsResponse$: Observable;\n public products$: Observable;\n public products: Product[];\n public productsLoading$: Observable;\n public productCache$: Observable;\n public scrollPosition$: Observable;\n public productService: ProductServiceAbstract;\n\n ProductViewTypes: typeof ProductViewTypes = ProductViewTypes;\n ProductType: typeof ProductType = ProductType;\n primary: ThemePalette = 'primary';\n\n @Input() data: any;\n @Input() activeSearchBox: boolean;\n @Input() searchWord: string;\n @Input() availableOnlyFlag: boolean;\n @Input() totalsInformation: string;\n @Input() type: ProductType;\n @Input() view: ProductViewTypes;\n @Input() showAllResults: boolean;\n @Input() selectedIdf: string;\n @Input() selectedDistributionCenterId: number;\n\n @Output() loadMore: EventEmitter = new EventEmitter();\n @Output() search: EventEmitter = new EventEmitter();\n public quantities: { [key: number]: number } = {};\n\n ngUnsubscribe$ = new Subject();\n promoDisclaimer: string;\n itemsPerRow: number;\n notification: any = null;\n constructor(\n @Inject(ScrollingService) public scrollingService: ScrollingService,\n @Inject(WebshopServiceFactory)\n public webshopServiceFactory: WebshopServiceFactory,\n public translateService: TranslateService,\n public store: Store,\n public promoService: PromoService,\n public dokuLightService: DokuLightService,\n public navService: NavService,\n public router: Router,\n @Inject('CDN') public CDN,\n @Inject('API_URL') public API_URL?,\n @Inject(DomSanitizer) public sanitizer?: DomSanitizer,\n public matomoService?: MatomoService,\n private route?: ActivatedRoute,\n public dialog?: MatDialog\n ) {\n }\n\n ngOnInit(): void {\n this.productService = this.webshopServiceFactory.createWebshopService(\n this.type\n );\n\n this.productsResponse$ = this.productService.getProductsResponseObservable();\n this.products$ = this.productService.getProductsObservable();\n this.products$.subscribe((products) => {\n if (products && products.length > 0) {\n this.products = products;\n if (this.type === ProductType.Promo && this.promoService.selectedPromoId) {\n this.processPromoProducts();\n }\n }\n });\n this.scrollPosition$ = this.productService.getScrollPositionObservable();\n this.productsLoading$ = this.productService.getProductsLoadingObservable();\n this.productCache$ = this.productService.getProductCacheObservable();\n\n this.productsResponse$\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((response) => {\n if (response) {\n this.endOfResult = response.end;\n this.total = response.total;\n this.moreLoading = false;\n if (this.products?.length < this.dokuLightService.searchRequestSize && !response.end) {\n this.loadMore.emit();\n this.moreLoading = true;\n }\n }\n });\n\n this.scrollPosition$\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((pos) => {\n setTimeout(\n () => this.scrollingService.scrollToYPositionOfVisibleViewport(pos),\n 1500\n );\n })\n .unsubscribe();\n\n this.route.queryParams.subscribe(query => {\n if (query) {\n if (query.hasOwnProperty('promo') && this.dokuLightService.searchString === '') {\n this.viewPromoProducts(query['promo']);\n }\n }\n }\n );\n }\n\n showNewItems() {\n this.moreLoading = true;\n const pos = this.scrollingService.determineScrollPositionOfVisibleViewport();\n this.loadMore.emit();\n setTimeout(\n () => this.scrollingService.scrollToYPositionOfVisibleViewport(pos),\n 0\n );\n }\n\n activateProduct(e: string): void {\n this.activeItem = e;\n }\n\n deactivateProduct(e: string): void {\n if (this.activeItem === e) {\n this.activeItem = null;\n }\n }\n\n onChangeQuantity(event) {\n this.quantities[event.product] = event;\n }\n\n scrollToTop() {\n document.querySelector('#searchResultWrapper')\n .scrollIntoView();\n }\n\n ngOnDestroy() {\n this.productService.updateScrollingPosition(\n this.scrollingService.determineScrollPositionOfVisibleViewport()\n );\n\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n\n showPricingTable(product: Product) {\n if (product.price.length > 0) {\n if (product.amountOfPrices > 1) {\n return true;\n }\n\n if (product.retailPrice !== product.price[0].cents) {\n return true;\n }\n }\n return false;\n }\n\n toggleView(type: ProductViewTypes) {\n this.quantities = {};\n this.view = type;\n this.dokuLightService.setProductViewType(type);\n this.updateItemsPerRow();\n }\n\n viewPromoProducts(campaignId) {\n this.dokuLightService.setSearchString('');\n this.promoService.setSelectedPromo(campaignId);\n this.products$.pipe(take(1)).subscribe((products) => {\n this.products = products;\n this.processPromoProducts();\n });\n }\n\n toggleAvailableResults(e) {\n this.search.emit({queryString: this.dokuLightService.searchString, availableOnly: e.checked});\n this.products$.pipe(take(1)).subscribe((products) => {\n this.products = products;\n if (this.type === ProductType.Promo) {\n this.processPromoProducts();\n }\n });\n }\n\n processPromoProducts() {\n this.promoService.getPromoInfo().pipe(takeUntil(this.ngUnsubscribe$)).subscribe((info) => {\n if (info) {\n this.promoDisclaimer = info.find((details) => details.id === this.promoService.selectedPromoId)?.disclaimer;\n }\n });\n this.products = this.products.filter(p => p.campaignId === this.promoService.selectedPromoId);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n this.updateItemsPerRow();\n }\n\n updateItemsPerRow() {\n const screenWidth = window.innerWidth;\n if (screenWidth < 1146) {\n this.itemsPerRow = 2;\n } else {\n this.itemsPerRow = 3;\n }\n }\n\n // Method to check if any product in the current row has amountOfPrices > 1\n // so if all products in a row doesn't have pricing advantage it doesn't show that big gap\n hasPricesInRow(index: number): boolean {\n const rowStartIndex = Math.floor(index / this.itemsPerRow) * this.itemsPerRow;\n const rowEndIndex = rowStartIndex + this.itemsPerRow;\n return this.products.slice(rowStartIndex, rowEndIndex).some(product => product.amountOfPrices > 1);\n }\n\n navigateToProductDetails(product: Product): void {\n const type = this.navService.getRouteForProductType(product.type);\n this.router.navigate([`/product-details/${type}/${product.id}`]);\n }\n\n openSubsequentDeliveryForm(product: Product) {\n const addNewDialogConfig = new MatDialogConfig();\n addNewDialogConfig.autoFocus = false;\n addNewDialogConfig.minWidth = '35vw';\n addNewDialogConfig.data = {\n idf: this.selectedIdf,\n distributionCenterId: this.selectedDistributionCenterId,\n product: product,\n perform: false\n };\n this.dialog.open(SubsequentDeliveryFormModalComponent, addNewDialogConfig).afterClosed()\n .pipe(takeUntil(this.ngUnsubscribe$)).subscribe(result => {\n if (result && result.data) {\n this.scrollToTop();\n this.notification = {\n html: `Der Nachlieferungsauftrag für das Produkt ${result.data[0].pzn.replace(/^0+/, '')} ist erfolgreich.`,\n type: 'success'\n };\n\n setTimeout(() => {\n this.notification = null;\n }, 4000);\n }\n });\n }\n}\n","\n
\n
\n

Ergebnisse zu Ihrer Suche nach \"{{searchWord}}\" (nur verfügbare)

\n

\n

\n
\n
\n
\n

\n {{product.name}}

\n

\n Artikelnummer: {{product.id}}
\n Land: {{product.country}}
\n Inhalt: {{product.content}}\n

\n

Bitte beachten Sie: Die Preise sind Tagespreise und daher ca.-Angaben.

\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

Es konnten keine Suchergebnisse gefunden werden.

\n

Sollten Sie die gewünschten Produkte nicht finden oder gezielt Produkte suchen: Kontaktieren Sie uns gern.

\n
\n
\n \n
\n
\n

Montag bis Freitag in der Zeit von 08:30 – 17:00 Uhr
\n Telefon: 0800 1010417
\n Fax: 0800 1010576
\n E-Mail: imex-import@phoenixgroup.eu

\n
\n
\n
\n\n
\n Produkte werden gesucht.\n
\n
\n Produkte werden geladen.\n
\n\n
\n
\n
\n \n
\n \n
\n
\n
\n","import {InfiniteResultListComponent} from '../infinite-result-list.component';\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'infinite-p73-result-list',\n templateUrl: './infinite-p73-result-list.component.html',\n styleUrls: ['../infinite-result-list.component.scss']\n})\nexport class InfiniteP73ResultListComponent extends InfiniteResultListComponent {\n\n}\n\n","
\n
\n
\n
\n \n
\n
\n
\n
\n","import {CartProviderComponent} from '../cart-provider.component';\nimport {Component, Inject, Input} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {ProFaxService} from '../../../../../../core/services/shop/pro-fax.service';\nimport {takeUntil} from 'rxjs/operators';\nimport {CartService} from '../../../../../../core/services/cart.service';\nimport {MatDialog} from '@angular/material/dialog';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {MatomoService} from '../../../../../../core/services/matomo.service';\nimport {CartItem} from '../../../../../../core/models/shop/cart-item.model';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {NavService} from '../../../../../../core/services/nav.service';\n\n@Component({\n selector: 'cart-provider-profax',\n templateUrl: './cart-provider-profax.component.html',\n styleUrls: ['../cart-provider.component.scss']\n})\nexport class CartProviderProfaxComponent extends CartProviderComponent {\n\n public quantity = 0;\n @Input() proFaxService: ProFaxService;\n @Input() resetProfaxCart: Subject;\n\n public proFaxCart$: Observable;\n\n constructor(\n public dialog: MatDialog,\n @Inject(CartService) public cartService: CartService,\n public matomoService: MatomoService,\n public router: Router,\n public navService: NavService\n ) {\n super(dialog, cartService, matomoService, router, navService);\n this.addToCartForm = new FormGroup({\n quantityInput: new FormControl(this.quantityInput,\n [\n Validators.min(1),\n Validators.max(100000)\n ])\n });\n }\n\n decreaseQuantity(): void {\n if (this.quantity > 0) {\n this.quantity--;\n }\n }\n\n updateQuantity(e): void {\n if (e.srcElement.value < 0) {\n e.srcElement.value = 0;\n this.quantityInput.setValue(0);\n } else if (e.srcElement.value > 100000) {\n e.srcElement.value = 100000;\n this.quantityInput.setValue(100000);\n }\n\n if (e.srcElement.value >= 0) {\n this.quantity = e.srcElement.value;\n }\n }\n\n updateProfaxCart(event) {\n this.proFaxService.updateProfaxCart(event.srcElement.value, this.product);\n const item = new CartItem({product: this.product, quantity: event.srcElement.value});\n this.matomoService.addItemToCart(item);\n }\n\n ngOnInit() {\n const product_id = this.product.id + this.product.campaignId;\n const campaign_id = this.product.campaignId;\n // init amounts\n this.proFaxCart$ = this.proFaxService.getProFaxCartObservable();\n this.proFaxCart$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((cart: any) => {\n if (cart && cart.hasOwnProperty(product_id)) {\n this.quantityInput.setValue(cart[product_id].amount);\n this.quantity = cart[product_id].amount;\n }\n }).unsubscribe();\n\n this.resetProfaxCart.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(cid => {\n if (cid === campaign_id) {\n this.quantityInput.setValue(0);\n this.quantity = 0;\n }\n });\n }\n}\n","\n
\n
\n
\n Kampagnen werden geladen.\n
\n
\n

Zur Zeit sind keine aktiven Kampagnen verfügbar. Bitte versuchen Sie es später noch einmal.

\n
\n 0\">\n
\n
\n \n
\n \n \n\n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
PZNInhaltArtikelbezeichnungEinzelpreis
(mit Staffelung)
AEP
pro Einheit
Ihr VorteilBestell-
menge
{{ prod.id }}{{ prod.content }}{{ prod.name }}\n ab Bestellmenge {{prod.price[prod.amountOfPrices - 1].minQuantity}}
\n {{ prod.price[prod.amountOfPrices - 1].cents | currency:'EUR':'symbol':'1.2-2' }}\n
{{ prod.retailPrice | currency:'EUR':'symbol':'1.2-2'}}{{ prod.advantage }}\n \n
\n

Alle Preise zzgl. 19% MwSt. Die mit * gekennzeichneten Artikel zzgl.7%\n MwSt. Preisänderungen und Irrtum vorbehalten.
In unseren äußerst günstigen\n Angebotspreisen ist der Skonto bereits integriert. Lieferung solange der Vorrat reicht.\n

\n
\n \n
\n
\n
\n
\n
\n
\n\n\n
\n
\n","import {InfiniteResultListComponent} from '../infinite-result-list.component';\nimport {Component, Inject, OnInit} from '@angular/core';\nimport {Product} from '../../../../../core/models/shop/product.model';\nimport {Observable, Subject} from 'rxjs';\nimport {ScrollingService} from '../../../../../core/services/scrolling.service';\nimport {WebshopServiceFactory} from '../../../../../core/services/shop/webshop-service.factory';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Store} from '@ngrx/store';\nimport * as fromReducers from '../../../../../core/store/reducers';\nimport {CartService} from '../../../../../core/services/cart.service';\nimport {CartItem} from '../../../../../core/models/shop/cart-item.model';\nimport {takeUntil} from 'rxjs/operators';\nimport {ProFaxService} from '../../../../../core/services/shop/pro-fax.service';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport {AddToCartConfirmDialogComponent} from '../../cart/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {NavService} from \"../../../../../core/services/nav.service\";\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'infinite-pro-fax-result-list',\n templateUrl: './infinite-pro-fax-result-list.component.html',\n styleUrls: ['../infinite-result-list.component.scss', './infinite-pro-fax-result-list.component.scss']\n})\nexport class InfiniteProFaxResultListComponent extends InfiniteResultListComponent implements OnInit {\n\n public proFaxCart$: Observable;\n public proFaxCart: any;\n\n public proFaxResetter$: Subject = new Subject();\n\n constructor(@Inject(ScrollingService) public scrollingService: ScrollingService,\n @Inject(WebshopServiceFactory) public webshopServiceFactory: WebshopServiceFactory,\n public translateService: TranslateService,\n public store: Store,\n @Inject('CDN') public CDN,\n @Inject('API_URL') public API_URL,\n @Inject(DomSanitizer) public sanitizer: DomSanitizer,\n @Inject(CartService) public cartService: CartService,\n public dialog: MatDialog,\n public navService: NavService,\n public router: Router) {\n super(scrollingService, webshopServiceFactory, translateService, store, CDN, API_URL, navService, router, sanitizer);\n\n }\n\n filterByCampaign(id: string): Product[] {\n return this.products.filter(p => p.campaignId === id);\n }\n\n addProfaxProductsToCart(campaignId: string) {\n const pfCart = this.proFaxCart;\n const items: CartItem[] = Object.keys(pfCart)\n .filter(p => p.indexOf(campaignId) >= 0)\n .reduce((obj, p) => {\n obj.push(new CartItem({\n product: pfCart[p].product,\n quantity: pfCart[p].amount\n }));\n return obj;\n }, []);\n\n if (items.reduce((sum, ci) => {\n sum += +ci.quantity;\n return +sum;\n }, 0) < 100) {\n this.cartService.addToCart(items);\n this.proFaxResetter$.next(campaignId);\n this.matomoService.updateCartTotal(this.cartService.calculateTotals().total);\n } else {\n const dialogRef = this.openAddConfirmDialog(items);\n dialogRef.afterClosed().pipe(takeUntil(this.ngUnsubscribe$)).subscribe(result => {\n if (!result) {\n return;\n } else {\n this.cartService.addToCart(items);\n this.proFaxResetter$.next(campaignId);\n this.matomoService.updateCartTotal(this.cartService.calculateTotals().total);\n }\n });\n }\n }\n\n openAddConfirmDialog(items: CartItem[]): MatDialogRef {\n const confirmDialogConfig = new MatDialogConfig();\n confirmDialogConfig.autoFocus = true;\n confirmDialogConfig.data = {perform: false, items: items};\n return this.dialog.open(AddToCartConfirmDialogComponent, confirmDialogConfig);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n this.proFaxCart$ = (this.productService).getProFaxCartObservable();\n this.proFaxCart$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((cart: any) => {\n this.proFaxCart = cart;\n });\n\n this.proFaxResetter$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((campaignId) => {\n (this.productService).emptyProfaxCart(campaignId);\n });\n }\n}\n\n","
\n
\n
\n
\n \n
\n
\n
\n
\nBitte geben Sie eine ganze Zahl ein.\nDie Menge 0 ist nicht erlaubt.\n","import {CartProviderComponent} from '../cart-provider.component';\nimport {Component, Inject, Input, OnInit} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {CartService} from '../../../../../../core/services/cart.service';\nimport {MatDialog} from '@angular/material/dialog';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {MatomoService} from '../../../../../../core/services/matomo.service';\nimport {CartItem} from '../../../../../../core/models/shop/cart-item.model';\nimport {PromoService} from '../../../../../../core/services/shop/promo.service';\nimport {Router} from '@angular/router';\nimport {NavService} from '../../../../../../core/services/nav.service';\n\n@Component({\n selector: 'cart-provider-promo',\n templateUrl: './cart-provider-promo.component.html',\n styleUrls: ['../cart-provider.component.scss']\n})\nexport class CartProviderPromoComponent extends CartProviderComponent implements OnInit {\n public isQuantityValid = true;\n public quantity = null; // Users mustn't add a product with quantity \"0\" #64231\n @Input() promoService: PromoService;\n @Input() resetPromoCart: Subject;\n\n public promoCart$: Observable;\n\n constructor(\n public dialog: MatDialog,\n @Inject(CartService) public cartService: CartService,\n public matomoService: MatomoService,\n public router: Router,\n public navService: NavService\n ) {\n super(dialog, cartService, matomoService, router, navService);\n this.addToCartForm = new FormGroup({\n quantityInput: new FormControl(this.quantityInput,\n [\n Validators.pattern('^[0-9]{1,6}$'),\n Validators.min(1),\n Validators.max(100000)\n ])\n });\n }\n\n decreaseQuantity(): void {\n if (this.quantity > 0) {\n this.quantity--;\n }\n }\n\n updateQuantity(e): void {\n if (e.srcElement.value < 0) {\n e.srcElement.value = 0;\n this.quantityInput.setValue(0);\n } else if (e.srcElement.value > 100000) {\n e.srcElement.value = 100000;\n this.quantityInput.setValue(100000);\n }\n\n if (e.srcElement.value >= 0) {\n this.quantity = e.srcElement.value;\n }\n\n this.validateQuantity(e.srcElement.value);\n }\n\n updatePromoCart(event) {\n this.promoService.updatePromoCart(event.srcElement.value, this.product);\n const item = new CartItem({product: this.product, quantity: event.srcElement.value});\n this.matomoService.addItemToCart(item);\n }\n\n ngOnInit() {\n const product_id = this.product.id + this.product.campaignId;\n const campaign_id = this.product.campaignId;\n // init amounts\n this.promoCart$ = this.promoService.getPromoCartObservable();\n this.promoCart$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((cart: any) => {\n if (cart && cart.hasOwnProperty(product_id)) {\n this.quantityInput.setValue(cart[product_id].amount);\n this.quantity = cart[product_id].amount;\n }\n }).unsubscribe();\n\n this.resetPromoCart.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(cid => {\n if (cid === campaign_id) {\n this.quantityInput.setValue(0);\n this.quantity = null;\n }\n });\n }\n\n validateQuantity(amount) {\n if (!amount) {\n this.isQuantityValid = true;\n return;\n }\n this.isQuantityValid = !isNaN(Number(amount)) && !amount.toString().includes(',') && !amount.toString().includes('.');\n }\n}\n","
\n \n \"{{ads[0].title}}\"\n \n
\n \"{{ads[0].title}}\"\n
\n
\n\n
\n
\n
\n Kampagnen werden geladen.\n
\n
\n

Zur Zeit sind keine aktiven Kampagnen verfügbar. Bitte versuchen Sie es später noch einmal.

\n
\n 0\">\n
\n
\n \n
\n
\n

\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n 2\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n
PZNInhaltArtikelbezeichnungAEP
pro Einheit
Einzelpreisab MengeIhr VorteilBestell-
menge
{{ prod.id }}{{ prod.content }}{{ prod.price[0].cents | currency:'EUR':'symbol':'1.2-2'}}\n {{ prod.price[1].cents | currency:'EUR':'symbol':'1.2-2' }}\n {{ prod.price[1].minQuantity}}{{ calculateAdvantage(prod.price[1].cents, prod.price[0].cents) | percent:'0.1-1' }}\n \n
\n {{ item.cents | currency:'EUR':'symbol':'1.2-2' }}\n {{ item.minQuantity }}{{ calculateAdvantage(item.cents, prod.price[0].cents) | percent:'0.1-1' }}\n
\n

\n
\n \n
\n
\n
\n
\n
\n
\n
\n","import {InfiniteResultListComponent} from '../infinite-result-list.component';\nimport {Component, Inject, OnInit} from '@angular/core';\nimport {Product} from '../../../../../core/models/shop/product.model';\nimport {Observable, Subject} from 'rxjs';\nimport {ScrollingService} from '../../../../../core/services/scrolling.service';\nimport {WebshopServiceFactory} from '../../../../../core/services/shop/webshop-service.factory';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Store} from '@ngrx/store';\nimport * as fromReducers from '../../../../../core/store/reducers';\nimport {CartService} from '../../../../../core/services/cart.service';\nimport {CartItem} from '../../../../../core/models/shop/cart-item.model';\nimport {takeUntil} from 'rxjs/operators';\nimport {PromoService} from '../../../../../core/services/shop/promo.service';\nimport {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';\nimport {AddToCartConfirmDialogComponent} from '../../cart/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {MatomoService} from '../../../../../core/services/matomo.service';\nimport {AdsRestService} from '../../../../../core/services/api/cms/ads.rest-service';\nimport {NavService} from '../../../../../core/services/nav.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'infinite-promo-result-list',\n templateUrl: './infinite-promo-result-list.component.html',\n styleUrls: ['../infinite-result-list.component.scss', './infinite-promo-result-list.component.scss']\n})\nexport class InfinitePromoResultListComponent extends InfiniteResultListComponent implements OnInit {\n\n public promoCart$: Observable;\n public promoCart: any;\n public ads;\n\n public promoResetter$: Subject = new Subject();\n\n\n constructor(@Inject(ScrollingService) public scrollingService: ScrollingService,\n @Inject(WebshopServiceFactory) public webshopServiceFactory: WebshopServiceFactory,\n public translateService: TranslateService,\n public store: Store,\n @Inject('CDN') public CDN,\n @Inject('API_URL') public API_URL,\n @Inject('STORAGE') public STORAGE,\n @Inject(DomSanitizer) public sanitizer: DomSanitizer,\n @Inject(CartService) public cartService: CartService,\n public matomoService: MatomoService,\n private adsRestService: AdsRestService,\n public navService: NavService,\n public router: Router,\n public dialog: MatDialog) {\n super(scrollingService, webshopServiceFactory, translateService, store, API_URL, CDN, navService, router, sanitizer);\n }\n\n filterByCampaign(id: string): Product[] {\n return this.products.filter(p => p.campaignId === id);\n }\n\n addToCart(campaignId: string) {\n // add the selected products to the cart\n // there might be some limits to the amount of products that can be ordered\n const pCart = this.promoCart;\n // if we have invalid entries wo don't add any item to cart\n for (const key in pCart) {\n if (!this.validateAmount(pCart[key].amount)) {\n return;\n }\n }\n const items: CartItem[] = Object.keys(pCart)\n .filter(p => p.indexOf(campaignId) >= 0)\n .reduce((obj, p) => {\n // Users mustn't add a product with quantity \"0\" #64231\n if (pCart[p].amount > 0) {\n obj.push(new CartItem({\n product: pCart[p].product,\n quantity: pCart[p].amount\n }));\n }\n return obj;\n }, []);\n\n if (items.length === 0) {\n return;\n }\n\n this.cartService.addToCart(items);\n this.promoResetter$.next(campaignId);\n this.matomoService.updateCartTotal(this.cartService.calculateTotals().total);\n\n }\n\n validateAmount(amount) {\n return !isNaN(Number(amount)) && !amount.toString().includes(',') && !amount.toString().includes('.');\n }\n\n openAddConfirmDialog(items: CartItem[]): MatDialogRef {\n const confirmDialogConfig = new MatDialogConfig();\n confirmDialogConfig.autoFocus = true;\n confirmDialogConfig.data = {perform: false, items: items};\n return this.dialog.open(AddToCartConfirmDialogComponent, confirmDialogConfig);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.promoCart$ = (this.productService).getPromoCartObservable();\n this.promoCart$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((cart: any) => {\n this.promoCart = cart;\n });\n\n this.promoResetter$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((campaignId) => {\n (this.productService).emptyPromoCart(campaignId);\n });\n\n this.adsRestService.getCurrentAds('PROMO')\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(ads => {\n this.ads = ads.return_object;\n });\n }\n\n mtmEvent(action) {\n this.matomoService.trackEvent('Klick auf Ads Banner', action);\n }\n\n calculateAdvantage(newp, oldp) {\n return 1 - (newp / oldp);\n }\n}\n\n","
\n
\n
\n
\n \n
\n
\n
\n
\nBitte geben Sie eine ganze Zahl ein.\nDie Menge 0 ist nicht erlaubt.\n","import {CartProviderComponent} from '../cart-provider.component';\nimport {Component, Inject, Input, OnInit} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {CartService} from '../../../../../../core/services/cart.service';\nimport {MatDialog} from '@angular/material/dialog';\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\nimport {MatomoService} from '../../../../../../core/services/matomo.service';\nimport {CartItem} from '../../../../../../core/models/shop/cart-item.model';\nimport {UberService} from '../../../../../../core/services/shop/uber.service';\nimport {Router} from '@angular/router';\nimport {NavService} from '../../../../../../core/services/nav.service';\n\n@Component({\n selector: 'cart-provider-uber',\n templateUrl: './cart-provider-uber.component.html',\n styleUrls: ['../cart-provider.component.scss']\n})\nexport class CartProviderUberComponent extends CartProviderComponent implements OnInit {\n public isQuantityValid = true;\n public quantity = null; // Users mustn't add a product with quantity \"0\" #64231\n @Input() uberService: UberService;\n @Input() resetUberCart: Subject;\n\n public uberCart$: Observable;\n\n constructor(\n public dialog: MatDialog,\n @Inject(CartService) public cartService: CartService,\n public matomoService: MatomoService,\n public router: Router,\n public navService: NavService\n ) {\n super(dialog, cartService, matomoService, router, navService);\n this.addToCartForm = new FormGroup({\n quantityInput: new FormControl(this.quantityInput,\n [\n Validators.pattern('^[0-9]{1,6}$'),\n Validators.min(1),\n Validators.max(100000)\n ])\n });\n }\n\n decreaseQuantity(): void {\n if (this.quantity > 0) {\n this.quantity--;\n }\n }\n\n updateQuantity(e): void {\n if (e.srcElement.value < 0) {\n e.srcElement.value = 0;\n this.quantityInput.setValue(0);\n } else if (e.srcElement.value > 100000) {\n e.srcElement.value = 100000;\n this.quantityInput.setValue(100000);\n }\n\n if (e.srcElement.value >= 0) {\n this.quantity = e.srcElement.value;\n }\n\n this.validateQuantity(e.srcElement.value);\n }\n\n updateUberCart(event) {\n this.uberService.updateUberCart(event.srcElement.value, this.product);\n const item = new CartItem({product: this.product, quantity: event.srcElement.value});\n this.matomoService.addItemToCart(item);\n }\n\n ngOnInit() {\n const product_id = this.product.id + this.product.campaignId;\n const campaign_id = this.product.campaignId;\n // init amounts\n this.uberCart$ = this.uberService.getUberCartObservable();\n this.uberCart$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((cart: any) => {\n if (cart && cart.hasOwnProperty(product_id)) {\n this.quantityInput.setValue(cart[product_id].amount);\n this.quantity = cart[product_id].amount;\n }\n }).unsubscribe();\n\n this.resetUberCart.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(cid => {\n if (cid === campaign_id) {\n this.quantityInput.setValue(0);\n this.quantity = null;\n }\n });\n }\n\n validateQuantity(amount) {\n if (!amount) {\n this.isQuantityValid = true;\n return;\n }\n this.isQuantityValid = !isNaN(Number(amount)) && !amount.toString().includes(',') && !amount.toString().includes('.');\n }\n}\n","
\n \n \"{{ads[0].title}}\"\n \n
\n \"{{ads[0].title}}\"\n
\n
\n\n Zurück zur Übersicht\n\n
\n
\n
\n Kampagnen werden geladen.\n
\n
\n

Zur Zeit sind keine aktiven Kampagnen verfügbar. Bitte versuchen Sie es später noch einmal.

\n
\n 0\">\n
\n
\n \n
\n
\n

\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n 2\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n
PZNInhaltArtikelbezeichnungAEP
pro Einheit
Einzelpreisab MengeIhr VorteilBestell-
menge
{{ prod.id }}{{ prod.content }}{{ prod.price[0].cents | currency:'EUR':'symbol':'1.2-2'}}\n {{ prod.price[1].cents | currency:'EUR':'symbol':'1.2-2' }}\n {{ prod.price[1].minQuantity}}{{ calculateAdvantage(prod.price[1].cents, prod.price[0].cents) | percent:'0.1-1' }}\n \n
\n {{ item.cents | currency:'EUR':'symbol':'1.2-2' }}\n {{ item.minQuantity }}{{ calculateAdvantage(item.cents, prod.price[0].cents) | percent:'0.1-1' }}\n
\n

\n
\n \n
\n
\n
\n
\n
\n
\n
\n","import {InfiniteResultListComponent} from '../infinite-result-list.component';\nimport {Component, Inject, OnDestroy, OnInit} from '@angular/core';\nimport {Product} from '../../../../../core/models/shop/product.model';\nimport {Observable, Subject} from 'rxjs';\nimport {ScrollingService} from '../../../../../core/services/scrolling.service';\nimport {WebshopServiceFactory} from '../../../../../core/services/shop/webshop-service.factory';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Store} from '@ngrx/store';\nimport * as fromReducers from '../../../../../core/store/reducers';\nimport {CartService} from '../../../../../core/services/cart.service';\nimport {CartItem} from '../../../../../core/models/shop/cart-item.model';\nimport {takeUntil} from 'rxjs/operators';\nimport {UberService} from '../../../../../core/services/shop/uber.service';\nimport {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';\nimport {AddToCartConfirmDialogComponent} from '../../cart/add-to-cart-confirm-dialog/add-to-cart-confirm-dialog.component';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {MatomoService} from '../../../../../core/services/matomo.service';\nimport {AdsService} from '../../../../../core/services/ads.service';\nimport {NavService} from \"../../../../../core/services/nav.service\";\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'infinite-uber-result-list',\n templateUrl: './infinite-uber-result-list.component.html',\n styleUrls: ['../infinite-result-list.component.scss', './infinite-uber-result-list.component.scss']\n})\nexport class InfiniteUberResultListComponent extends InfiniteResultListComponent implements OnInit, OnDestroy {\n\n public uberCart$: Observable;\n public uberCart: any;\n public ads = [];\n\n public uberResetter$: Subject = new Subject();\n\n\n constructor(@Inject(ScrollingService) public scrollingService: ScrollingService,\n @Inject(WebshopServiceFactory) public webshopServiceFactory: WebshopServiceFactory,\n public translateService: TranslateService,\n public navService: NavService,\n public router: Router,\n public store: Store,\n @Inject('API_URL') public API_URL,\n @Inject(DomSanitizer) public sanitizer: DomSanitizer,\n @Inject(CartService) public cartService: CartService,\n public matomoService: MatomoService,\n public adService: AdsService,\n public dialog: MatDialog,\n @Inject('CDN') public CDN) {\n super(scrollingService, webshopServiceFactory, translateService, store, API_URL, CDN, navService, router, sanitizer);\n }\n\n filterByCampaign(id: string): Product[] {\n return this.products.filter(p => p.campaignId === id);\n }\n\n addToCart(campaignId: string) {\n // add the selected products to the cart\n // there might be some limits to the amount of products that can be ordered\n const pCart = this.uberCart;\n // if we have invalid entries wo don't add any item to cart\n for (const key in pCart) {\n if (!this.validateAmount(pCart[key].amount)) {\n return;\n }\n }\n const items: CartItem[] = Object.keys(pCart)\n .filter(p => p.indexOf(campaignId) >= 0)\n .reduce((obj, p) => {\n // Users mustn't add a product with quantity \"0\" #64231\n if (pCart[p].amount > 0) {\n obj.push(new CartItem({\n product: pCart[p].product,\n quantity: pCart[p].amount\n }));\n }\n return obj;\n }, []);\n\n if (items.length === 0) {\n return;\n }\n\n this.cartService.addToCart(items);\n this.uberResetter$.next(campaignId);\n this.matomoService.updateCartTotal(this.cartService.calculateTotals().total);\n\n }\n\n validateAmount(amount) {\n return !isNaN(Number(amount)) && !amount.toString().includes(',') && !amount.toString().includes('.');\n }\n\n openAddConfirmDialog(items: CartItem[]): MatDialogRef {\n const confirmDialogConfig = new MatDialogConfig();\n confirmDialogConfig.autoFocus = true;\n confirmDialogConfig.data = {perform: false, items: items};\n return this.dialog.open(AddToCartConfirmDialogComponent, confirmDialogConfig);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.uberCart$ = (this.productService).getUberCartObservable();\n this.uberCart$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((cart: any) => {\n this.uberCart = cart;\n });\n\n this.uberResetter$.pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe((campaignId) => {\n (this.productService).emptyUberCart(campaignId);\n });\n\n // this.adService.getAds().then(ads => {\n // this.ads = this.adService.showAd('uber');\n // });\n }\n\n mtmEvent(action) {\n this.matomoService.trackEvent('Klick auf Ads Banner', action);\n }\n\n calculateAdvantage(newp, oldp) {\n return 1 - (newp / oldp);\n }\n\n ngOnDestroy() {\n (this.productService).resetProducts();\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n\n","\n \n
\n
{{product.advantage}}
\n
{{ product.price[0].cents | currency:'EUR':'symbol':'1.2-2' }}
\n
\n exkl. MwSt.
\n {{product.deliveryNotice}}\n
\n
\n
\n
\n","import {PriceScaleComponent} from '../price-scale.component';\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'price-scale-payback',\n templateUrl: './price-scale-payback.component.html',\n styleUrls: ['../price-scale.component.scss']\n})\nexport class PriceScalePaybackComponent extends PriceScaleComponent {\n\n}\n","
\n
\n
\n
\n \n \n \n
\n
\n \n
\n
\n {{product.shipping ? ('+'+(product.shipping | currency:'EUR':'symbol':'1.2-2') +' Versand')\n : (product.available ? 'verfügbar' : 'nicht verfügbar')}}\n \n
\n
\n \n \n
\n
\n","import {CartProviderComponent} from '../cart-provider.component';\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'cart-provider-payback',\n templateUrl: './cart-provider-payback.component.html',\n styleUrls: ['../cart-provider.component.scss']\n})\nexport class CartProviderPaybackComponent extends CartProviderComponent {\n\n}\n","\n
\n
\n

Ergebnisse zu Ihrer Suche nach \"{{searchWord}}\" (nur verfügbare)

\n

\n

\n
\n
\n
\n
\n \"{{product.name}}\"/\n
\n
\n
\n \n

{{product.name}}

\n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n

Es konnten keine Angebote gefunden werden.

\n
\n\n
\n
\n
\n \n
\n \n
\n
\n
\n","import {InfiniteResultListComponent} from '../infinite-result-list.component';\nimport {Component} from '@angular/core';\n\n@Component({\n selector: 'infinite-payback-result-list',\n templateUrl: './infinite-payback-result-list.component.html',\n styleUrls: ['../infinite-result-list.component.scss']\n})\nexport class InfinitePaybackResultListComponent extends InfiniteResultListComponent {\n\n}\n\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'private-stock',\n templateUrl: './private-stock.component.html',\n styleUrls: ['./private-stock.component.scss']\n})\nexport class PrivateStockComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","
0\" class=\"flex-headline\"\n id=\"profax-heading\">\n
\n \"ProFax\n
\n

Jetzt bestellen!
\n Angebote gültig vom {{ (productsResponse$ | async)?.campaignInfo[0].startDateShort }}\n bis {{ (productsResponse$ | async)?.campaignInfo[0].endDateShort }}

\n

1\">Jetzt bestellen!
\n Profitieren Sie von unseren aktuellen Pro-Fax-Angeboten

\n
\n
\n
\n
\n
\n
\n

{{data.heading.id | translate }}

\n

{{data.heading.id | translate : {KW: data.heading.values.KW} }}

\n {{(data.activeSearchBox?.desc | translate) || ''}}\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n \n

{{data.heading.id | translate }}

\n

{{data.heading.id | translate : {KW: data.heading.values.KW} }}

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n
\n \n \n
\n
\n\n\n\n\n
\n

Shop '{{data.productType}}'!

\n
\n\n","
\n \"\"\n
\n
\n
\n

Erlesenes genießen

\n
\n
\n

Das PHOENIX Privatsortiment gibt es seit über 30 Jahren und umfasst neben\n preisgekrönten Weinen aus allen renommierten Weinregionen der Welt auch\n ausgezeichneten Sekt und Champagner sowie Spirituosen und Delikatessen. In den\n letzten Jahren wurden sowohl das Weinsortiment als auch die anderen\n Sortimentsbereiche weiter ausgebaut. Das vielfältige Angebot überzeugt durch das\n hervorragende Preis-/Genussverhältnis und wird jedes Jahr verfeinert. Haben wir Ihr\n Interesse geweckt?

\n\n

Hier finden Sie den Privatsortiment-Shop\n

\n
\n
\n
\n
\n
\n
\n
\n
\n
","import {takeUntil, withLatestFrom} from 'rxjs/operators';\nimport {ProductServiceAbstract} from '../../core/services/shop/product-service.abstract';\nimport {ChangeDetectionStrategy, Component, Inject, Input, OnDestroy, OnInit} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {ActivatedRoute} from '@angular/router';\nimport {ProductsResponse} from '../../core/models/shop/products-response.model';\nimport * as fromReducers from '../../core/store/reducers';\nimport {Store} from '@ngrx/store';\nimport {ProductRequest} from '../../core/models/shop/product-request.model';\nimport {WebshopServiceFactory} from '../../core/services/shop/webshop-service.factory';\nimport {TranslateService} from '@ngx-translate/core';\nimport {CalendarService} from '../../core/services/calendar.service';\nimport {Product} from '../../core/models/shop/product.model';\nimport {ProductType} from '../../core/models/shop/product-type.model';\nimport {ProductViewTypes} from '../../core/models/enums/product-view-types.model';\nimport {UserService} from '../../core/services/user.service';\nimport {PromoService} from '../../core/services/shop/promo.service';\nimport {DokuLightService} from '../../core/services/shop/doku-light.service';\nimport {InternalUserAuthority} from '../../core/models/enums/internal-user-authority.model';\n\n\n@Component({\n selector: 'app-webshop',\n templateUrl: './webshop.component.html',\n styleUrls: ['./webshop.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WebshopComponent implements OnInit, OnDestroy {\n @Input() public data;\n\n public ngUnsubscribe$: Subject = new Subject();\n public productService: ProductServiceAbstract;\n\n public search = new Subject();\n public loadMoreItems = new Subject();\n\n public productsRequest$: Observable;\n public productsResponse$: Observable;\n public products$: Observable;\n\n public searchWord: string;\n public availableOnlyFlag = false;\n\n ProductType: typeof ProductType = ProductType;\n\n public currentlyDisplayedIdf;\n public input = false;\n public idf: string;\n public idfs$: Observable;\n protected readonly InternalUserAuthority = InternalUserAuthority;\n public selectedDistributionCenterId: number;\n\n constructor(\n @Inject(WebshopServiceFactory) public webshopServiceFactory: WebshopServiceFactory,\n public translate: TranslateService,\n public calendarService: CalendarService,\n public store: Store,\n public route: ActivatedRoute,\n public promoService: PromoService,\n public dokuLightService: DokuLightService,\n public userService: UserService) {\n if (this.userService.isPhoenixUser() || this.userService.isInternalUser()) {\n this.input = true;\n }\n this.userService.selectedIdf$.pipe(takeUntil(this.ngUnsubscribe$)).subscribe(idf => {\n if(idf) {\n this.currentlyDisplayedIdf = idf.idf;\n this.selectedDistributionCenterId = idf.distributionCenters[0]?.id;\n }\n })\n }\n\n\n ngOnInit() {\n if (this.data) {\n const productType = this.promoService.selectedPromoId !== null ? ProductType.Promo : this.data.productType;\n this.initPossibleHeadingValues();\n\n this.productService = this.webshopServiceFactory.createWebshopService(productType);\n\n if (!this.productService) {\n return;\n }\n\n this.productsRequest$ = this.productService.getProductsRequestObservable();\n this.productsResponse$ = this.productService.getProductsResponseObservable();\n this.products$ = this.productService.getProductsObservable();\n this.search\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(productRequest => {\n let pageNum = 1;\n if (productType === ProductType.DokuLight) {\n pageNum = 0;\n }\n const newProductRequest = Object.assign({}, productRequest, {page: pageNum});\n if (productType === ProductType.Uber) {\n newProductRequest['vendorId'] = this.route.snapshot.paramMap.get('vendorId');\n this.productService.searchProducts(newProductRequest);\n } else {\n this.productService.searchProducts(newProductRequest);\n }\n });\n\n this.loadMoreItems.pipe(\n withLatestFrom(this.store))\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(([_, state]) => {\n // fetch old request and get next page\n const newProductRequest = Object.assign(\n {},\n WebshopServiceFactory.fetchWebshopRequestFromState(productType, state),\n {page: WebshopServiceFactory.fetchWebshopResponseFromState(productType, state).start + 1, size: 20}\n );\n this.productService.displayNewBatch(newProductRequest);\n });\n\n // maintain searchwords and flags\n this.productsRequest$\n .pipe(takeUntil(this.ngUnsubscribe$)).subscribe((request) => {\n if (request) {\n if (request.hasOwnProperty('search')) {\n this.searchWord = request['search'];\n }\n this.availableOnlyFlag = request['availableOnly'];\n }\n });\n\n // trigger initial search under some circumstances\n let nostatus = false;\n if (!this.data.activeSearchBox) {\n this.products$\n .subscribe(products => {\n nostatus = products.length === 0;\n }).unsubscribe();\n }\n if (nostatus) {\n this.search.next({});\n }\n }\n }\n\n initPossibleHeadingValues(): void {\n if (this.data.hasOwnProperty('heading') && this.data.heading.hasOwnProperty('values')) {\n if (this.data.heading.values.hasOwnProperty('KW')) {\n this.data.heading.values.KW = this.calendarService.getWeekOfTheYear();\n }\n }\n\n }\n\n // changeIdf(idf) {\n // this.currentlyDisplayedIdf = idf;\n // }\n\n loadNewItems(): void {\n this.loadMoreItems.next();\n }\n\n submitSearch(e) {\n const req = {search: e.queryString};\n if (e.availableOnly) {\n Object.assign(req, {availableOnly: e.availableOnly});\n }\n Object.assign(req, {idf: this.currentlyDisplayedIdf});\n this.search.next(req);\n }\n\n isStandardShop(): boolean {\n return this.data.productType !== ProductType.Paragraph73\n && this.data.productType !== ProductType.Profax\n && this.data.productType !== ProductType.Payback\n && this.data.productType !== ProductType.Promo\n && this.data.productType !== ProductType.TopPrisma\n && this.data.productType !== ProductType.Uber;\n }\n\n isParagraph73Shop(): boolean {\n return this.data.productType === ProductType.Paragraph73;\n }\n\n isPinShop(): boolean {\n return this.data.productType === ProductType.OffersPin;\n }\n\n isProFaxShop(): boolean {\n return this.data.productType === ProductType.Profax;\n }\n\n isPromoShop(): boolean {\n return this.data.productType === ProductType.Promo;\n }\n\n isTopPrisma(): boolean {\n return this.data.productType === ProductType.TopPrisma;\n }\n\n isPaybackShop(): boolean {\n return this.data.productType === ProductType.Payback;\n }\n\n isUberShop(): boolean {\n return this.data.productType === ProductType.Uber;\n }\n\n isExclusiveOffersShop(): boolean {\n return this.userService.hasRequiredAuthority(\n ['EXCLUSIVE_OFFERS']) && this.isStandardShop() && !this.isTopPrisma() && !this.isPinShop();\n }\n\n isPrivateStockShop(): boolean {\n return this.data.productType === ProductType.PrivateStock;\n }\n\n searchEnabled() {\n this.promoService.resetSelectedPromo();\n this.dokuLightService.showAllResults();\n }\n /**\n * Unsubscribe from all subscriptions.\n */\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\n\n@Component({\n selector: 'app-webshop-loader',\n templateUrl: './webshop-loader.component.html'\n})\nexport class WebshopLoaderComponent implements OnInit {\n public data;\n\n constructor(public route: ActivatedRoute) {\n this.data = this.route.snapshot.data;\n }\n\n ngOnInit() {\n }\n\n}\n","","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WebshopLoaderComponent} from './webshop-loader.component';\nimport {RouterModule} from '@angular/router';\nimport {WebshopModule} from '../webshop.module';\n\nexport const routes = [\n {path: '', component: WebshopLoaderComponent, pathMatch: 'full'}\n];\n@NgModule({\n imports: [\n CommonModule,\n RouterModule.forChild(routes),\n WebshopModule\n ],\n declarations: [WebshopLoaderComponent],\n exports: [WebshopLoaderComponent]\n})\nexport class WebshopLoaderModule {\n static routes = routes;\n}\n","import { isPlatformServer, isPlatformBrowser, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { EventEmitter, PLATFORM_ID, forwardRef, Component, Inject, Input, Output, Directive, Host, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * Slick component\n */\nclass SlickCarouselComponent {\n /**\n * Constructor\n */\n constructor(el, zone, platformId) {\n this.el = el;\n this.zone = zone;\n this.platformId = platformId;\n this.afterChange = new EventEmitter();\n this.beforeChange = new EventEmitter();\n this.breakpoint = new EventEmitter();\n this.destroy = new EventEmitter();\n this.init = new EventEmitter();\n // access from parent component can be a problem with change detection timing. Please use afterChange output\n this.currentIndex = 0;\n this.slides = [];\n this.initialized = false;\n this._removedSlides = [];\n this._addedSlides = [];\n }\n /**\n * On component destroy\n */\n ngOnDestroy() {\n this.unslick();\n }\n ngAfterViewInit() {\n this.ngAfterViewChecked();\n }\n /**\n * On component view checked\n */\n ngAfterViewChecked() {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n if (this._addedSlides.length > 0 || this._removedSlides.length > 0) {\n const nextSlidesLength = this.slides.length - this._removedSlides.length + this._addedSlides.length;\n if (!this.initialized) {\n if (nextSlidesLength > 0) {\n this.initSlick();\n }\n // if nextSlidesLength is zere, do nothing\n }\n else if (nextSlidesLength === 0) { // unslick case\n this.unslick();\n }\n else {\n this._addedSlides.forEach(slickItem => {\n this.slides.push(slickItem);\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickAdd', slickItem.el.nativeElement);\n });\n });\n this._addedSlides = [];\n this._removedSlides.forEach(slickItem => {\n const idx = this.slides.indexOf(slickItem);\n this.slides = this.slides.filter(s => s !== slickItem);\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickRemove', idx);\n });\n });\n this._removedSlides = [];\n }\n }\n }\n /**\n * init slick\n */\n initSlick() {\n this.slides = this._addedSlides;\n this._addedSlides = [];\n this._removedSlides = [];\n this.zone.runOutsideAngular(() => {\n this.$instance = jQuery(this.el.nativeElement);\n this.$instance.on('init', (event, slick) => {\n this.zone.run(() => {\n this.init.emit({ event, slick });\n });\n });\n this.$instance.slick(this.config);\n this.zone.run(() => {\n var _a;\n this.initialized = true;\n this.currentIndex = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.initialSlide) || 0;\n });\n this.$instance.on('afterChange', (event, slick, currentSlide) => {\n this.zone.run(() => {\n this.afterChange.emit({\n event,\n slick,\n currentSlide,\n first: currentSlide === 0,\n last: slick.$slides.length === currentSlide + slick.options.slidesToScroll\n });\n this.currentIndex = currentSlide;\n });\n });\n this.$instance.on('beforeChange', (event, slick, currentSlide, nextSlide) => {\n this.zone.run(() => {\n this.beforeChange.emit({ event, slick, currentSlide, nextSlide });\n this.currentIndex = nextSlide;\n });\n });\n this.$instance.on('breakpoint', (event, slick, breakpoint) => {\n this.zone.run(() => {\n this.breakpoint.emit({ event, slick, breakpoint });\n });\n });\n this.$instance.on('destroy', (event, slick) => {\n this.zone.run(() => {\n this.destroy.emit({ event, slick });\n this.initialized = false;\n });\n });\n });\n }\n addSlide(slickItem) {\n this._addedSlides.push(slickItem);\n }\n removeSlide(slickItem) {\n this._removedSlides.push(slickItem);\n }\n /**\n * Slick Method\n */\n slickGoTo(index) {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickGoTo', index);\n });\n }\n slickNext() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickNext');\n });\n }\n slickPrev() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickPrev');\n });\n }\n slickPause() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickPause');\n });\n }\n slickPlay() {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickPlay');\n });\n }\n unslick() {\n if (this.$instance) {\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('unslick');\n });\n this.$instance = undefined;\n }\n this.initialized = false;\n }\n ngOnChanges(changes) {\n if (this.initialized) {\n const config = changes['config'];\n if (config.previousValue !== config.currentValue && config.currentValue !== undefined) {\n const refresh = config.currentValue['refresh'];\n const newOptions = Object.assign({}, config.currentValue);\n delete newOptions['refresh'];\n this.zone.runOutsideAngular(() => {\n this.$instance.slick('slickSetOption', newOptions, refresh);\n });\n }\n }\n }\n}\n/** @nocollapse */ SlickCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickCarouselComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\n/** @nocollapse */ SlickCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.2\", type: SlickCarouselComponent, selector: \"ngx-slick-carousel\", inputs: { config: \"config\" }, outputs: { afterChange: \"afterChange\", beforeChange: \"beforeChange\", breakpoint: \"breakpoint\", destroy: \"destroy\", init: \"init\" }, providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((() => SlickCarouselComponent)),\n multi: true\n }], exportAs: [\"slick-carousel\"], usesOnChanges: true, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickCarouselComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'ngx-slick-carousel',\n exportAs: 'slick-carousel',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((() => SlickCarouselComponent)),\n multi: true\n }],\n template: '',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n }, propDecorators: { config: [{\n type: Input\n }], afterChange: [{\n type: Output\n }], beforeChange: [{\n type: Output\n }], breakpoint: [{\n type: Output\n }], destroy: [{\n type: Output\n }], init: [{\n type: Output\n }] } });\nclass SlickItemDirective {\n constructor(el, platformId, carousel) {\n this.el = el;\n this.platformId = platformId;\n this.carousel = carousel;\n }\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.carousel.addSlide(this);\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n this.carousel.removeSlide(this);\n }\n }\n}\n/** @nocollapse */ SlickItemDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickItemDirective, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: SlickCarouselComponent, host: true }], target: i0.ɵɵFactoryTarget.Directive });\n/** @nocollapse */ SlickItemDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.2\", type: SlickItemDirective, selector: \"[ngxSlickItem]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickItemDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngxSlickItem]',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: SlickCarouselComponent, decorators: [{\n type: Host\n }] }];\n } });\n\nclass SlickCarouselModule {\n}\n/** @nocollapse */ SlickCarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ SlickCarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickCarouselModule, declarations: [SlickCarouselComponent,\n SlickItemDirective], imports: [CommonModule], exports: [SlickCarouselComponent,\n SlickItemDirective] });\n/** @nocollapse */ SlickCarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickCarouselModule, imports: [[\n CommonModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.2\", ngImport: i0, type: SlickCarouselModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [\n SlickCarouselComponent,\n SlickItemDirective,\n ],\n exports: [\n SlickCarouselComponent,\n SlickItemDirective,\n ]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SlickCarouselComponent, SlickCarouselModule, SlickItemDirective };\n"]}