{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/webshop/elastic/elastic-product-list/ElasticProductList.vue?ce17","webpack:///./src/components/webshop/sorting-options/SortingOptions.vue?81a4","webpack:///src/components/webshop/sorting-options/SortingOptions.vue","webpack:///./src/components/webshop/sorting-options/SortingOptions.vue?251b","webpack:///./src/components/webshop/sorting-options/SortingOptions.vue","webpack:///./bespoke/components/webshop/products/product-list-item/ProductListItem.vue?5f8d","webpack:///./bespoke/utilities/helpers.js","webpack:///./bespoke/models/product.model.js","webpack:///./bespoke/components/webshop/order-product/OrderProduct.vue?10bb","webpack:///./src/components/webshop/order-product/blocks/OrderNormal.vue?5595","webpack:///src/components/webshop/order-product/blocks/OrderNormal.vue","webpack:///./src/components/webshop/order-product/blocks/OrderNormal.vue?93ca","webpack:///./src/components/webshop/order-product/blocks/OrderNormal.vue","webpack:///./src/components/webshop/order-product/blocks/OrderSaleUnit.vue?dd55","webpack:///src/components/webshop/order-product/blocks/OrderSaleUnit.vue","webpack:///./src/components/webshop/order-product/blocks/OrderSaleUnit.vue?fa94","webpack:///./src/components/webshop/order-product/blocks/OrderSaleUnit.vue","webpack:///./src/components/webshop/order-product/blocks/OrderUnits.vue?3ad5","webpack:///src/components/webshop/order-product/blocks/OrderUnits.vue","webpack:///./src/components/webshop/order-product/blocks/OrderUnits.vue?bb3b","webpack:///./src/components/webshop/order-product/blocks/OrderUnits.vue","webpack:///./src/components/webshop/order-product/blocks/OrderGrouped.vue?b083","webpack:///src/components/webshop/order-product/blocks/OrderGrouped.vue","webpack:///./src/components/webshop/order-product/blocks/OrderGrouped.vue?25f3","webpack:///./src/components/webshop/order-product/blocks/OrderGrouped.vue","webpack:///./src/components/webshop/order-product/blocks/OrderVolumeDiscount.vue?d9d9","webpack:///src/components/webshop/order-product/blocks/OrderVolumeDiscount.vue","webpack:///./src/components/webshop/order-product/blocks/OrderVolumeDiscount.vue?4c2a","webpack:///./src/components/webshop/order-product/blocks/OrderVolumeDiscount.vue","webpack:///./src/components/webshop/order-product/blocks/QuantityButtons.vue?40c5","webpack:///src/components/webshop/order-product/blocks/QuantityButtons.vue","webpack:///./src/components/webshop/order-product/blocks/QuantityButtons.vue?9b17","webpack:///./src/components/webshop/order-product/blocks/QuantityButtons.vue","webpack:///./bespoke/bespoke-components/CalculationBox.vue?c7ed","webpack:///bespoke/bespoke-components/CalculationBox.vue","webpack:///./bespoke/bespoke-components/CalculationBox.vue?ab28","webpack:///./bespoke/bespoke-components/CalculationBox.vue","webpack:///./bespoke/bespoke-components/CanopyCalculator.vue?9cd3","webpack:///bespoke/bespoke-components/CanopyCalculator.vue","webpack:///./bespoke/bespoke-components/CanopyCalculator.vue?9cd8","webpack:///./bespoke/bespoke-components/CanopyCalculator.vue","webpack:///bespoke/components/webshop/order-product/OrderProduct.vue","webpack:///./bespoke/components/webshop/order-product/OrderProduct.vue?b887","webpack:///./bespoke/components/webshop/order-product/OrderProduct.vue","webpack:///./src/components/webshop/product-stock/ProductStock.vue?24be","webpack:///src/components/webshop/product-stock/ProductStock.vue","webpack:///./src/components/webshop/product-stock/ProductStock.vue?d09c","webpack:///./src/components/webshop/product-stock/ProductStock.vue","webpack:///./src/components/webshop/product-price/ProductPrice.vue?de37","webpack:///src/components/webshop/product-price/ProductPrice.vue","webpack:///./src/components/webshop/product-price/ProductPrice.vue?30c4","webpack:///./src/components/webshop/product-price/ProductPrice.vue","webpack:///./src/components/webshop/products/product-variant/ProductVariant.vue?2198","webpack:///src/components/webshop/products/product-variant/ProductVariant.vue","webpack:///./src/components/webshop/products/product-variant/ProductVariant.vue?82b8","webpack:///./src/components/webshop/products/product-variant/ProductVariant.vue","webpack:///./src/components/webshop/favorites/FavoritesControl.vue?ecce","webpack:///src/components/webshop/favorites/FavoritesControl.vue","webpack:///./src/components/webshop/favorites/FavoritesControl.vue?727c","webpack:///./src/components/webshop/favorites/FavoritesControl.vue","webpack:///bespoke/components/webshop/products/product-list-item/ProductListItem.vue","webpack:///./bespoke/components/webshop/products/product-list-item/ProductListItem.vue?e300","webpack:///./bespoke/components/webshop/products/product-list-item/ProductListItem.vue","webpack:///./src/components/ui/pagination/Pagination.vue?0510","webpack:///src/components/ui/pagination/Pagination.vue","webpack:///./src/components/ui/pagination/Pagination.vue?73fb","webpack:///./src/components/ui/pagination/Pagination.vue","webpack:///src/components/webshop/elastic/elastic-product-list/ElasticProductList.vue","webpack:///./src/components/webshop/elastic/elastic-product-list/ElasticProductList.vue?fa35","webpack:///./src/components/webshop/elastic/elastic-product-list/ElasticProductList.vue","webpack:///./bespoke/components/webshop/elastic/elastic-product-details/ElasticProductDetails.vue?fd4b","webpack:///./src/components/webshop/products/product-group/ProductGroupMatrix.vue?9ed1","webpack:///src/components/webshop/products/product-group/ProductGroupMatrix.vue","webpack:///./src/components/webshop/products/product-group/ProductGroupMatrix.vue?cbf7","webpack:///./src/components/webshop/products/product-group/ProductGroupMatrix.vue","webpack:///./bespoke/components/webshop/products/product-group/ProductGroupDropdowns.vue?ea41","webpack:///bespoke/components/webshop/products/product-group/ProductGroupDropdowns.vue","webpack:///./bespoke/components/webshop/products/product-group/ProductGroupDropdowns.vue?af11","webpack:///./bespoke/components/webshop/products/product-group/ProductGroupDropdowns.vue","webpack:///./src/components/ui/gallery/Gallery.vue?5e55","webpack:///src/components/ui/gallery/Gallery.vue","webpack:///./src/components/ui/gallery/Gallery.vue?26a8","webpack:///./src/components/ui/gallery/Gallery.vue","webpack:///./src/components/ui/tabs/Tabs.vue?c794","webpack:///src/components/ui/tabs/Tabs.vue","webpack:///./src/components/ui/tabs/Tabs.vue?99cc","webpack:///./src/components/ui/tabs/Tabs.vue","webpack:///./src/components/webshop/products/product-videos/ProductVideos.vue?1cae","webpack:///src/components/webshop/products/product-videos/ProductVideos.vue","webpack:///./src/components/webshop/products/product-videos/ProductVideos.vue?f79c","webpack:///./src/components/webshop/products/product-videos/ProductVideos.vue","webpack:///./src/components/webshop/products/product-documents/ProductDocuments.vue?8973","webpack:///src/components/webshop/products/product-documents/ProductDocuments.vue","webpack:///./src/components/webshop/products/product-documents/ProductDocuments.vue?51e5","webpack:///./src/components/webshop/products/product-documents/ProductDocuments.vue","webpack:///./src/components/webshop/products/product-carousel/ProductCarousel.vue?af26","webpack:///src/components/webshop/products/product-carousel/ProductCarousel.vue","webpack:///./src/components/webshop/products/product-carousel/ProductCarousel.vue?9882","webpack:///./src/components/webshop/products/product-carousel/ProductCarousel.vue","webpack:///./bespoke/bespoke-components/RelatedProductsMatrix.vue?55b1","webpack:///bespoke/bespoke-components/RelatedProductsMatrix.vue","webpack:///./bespoke/bespoke-components/RelatedProductsMatrix.vue?1afb","webpack:///./bespoke/bespoke-components/RelatedProductsMatrix.vue","webpack:///bespoke/components/webshop/elastic/elastic-product-details/ElasticProductDetails.vue","webpack:///./bespoke/components/webshop/elastic/elastic-product-details/ElasticProductDetails.vue?c157","webpack:///./bespoke/components/webshop/elastic/elastic-product-details/ElasticProductDetails.vue","webpack:///./src/components/webshop/product-block/ProductBlock.vue?9b0f","webpack:///src/components/webshop/product-block/ProductBlock.vue","webpack:///./src/components/webshop/product-block/ProductBlock.vue?7d59","webpack:///./src/components/webshop/product-block/ProductBlock.vue","webpack:///./bespoke/components/webshop/elastic/elastic-product-filters/ElasticProductFilters.vue?e210","webpack:///bespoke/components/webshop/elastic/elastic-product-filters/ElasticProductFilters.vue","webpack:///./bespoke/components/webshop/elastic/elastic-product-filters/ElasticProductFilters.vue?da01","webpack:///./bespoke/components/webshop/elastic/elastic-product-filters/ElasticProductFilters.vue","webpack:///./src/components/webshop/shopping-cart/ShoppingCartControl.vue?0715","webpack:///src/components/webshop/shopping-cart/ShoppingCartControl.vue","webpack:///./src/components/webshop/shopping-cart/ShoppingCartControl.vue?616e","webpack:///./src/components/webshop/shopping-cart/ShoppingCartControl.vue","webpack:///./src/utilities/url.js","webpack:///./bespoke/store/modules/elastic.js","webpack:///./src/services/product-service.js","webpack:///./bespoke/store/modules/product-details.js","webpack:///./bespoke/store/modules/shopping-cart.js","webpack:///./src/store/modules/order-entry.js","webpack:///./src/store/modules/global/global-browser.js","webpack:///./src/store/modules/global/global-ws-settings.js","webpack:///./src/store/modules/global/global-cms-settings.js","webpack:///./src/store/modules/global/global-user-information.js","webpack:///./src/store/modules/global/global-endpoints.js","webpack:///./bespoke/store/modules/quoations.js","webpack:///./src/store/store.js","webpack:///./bespoke/quotations/QuotationsList.vue?6a49","webpack:///./bespoke/quotations/QuotationListItem.vue?be8f","webpack:///bespoke/quotations/QuotationListItem.vue","webpack:///./bespoke/quotations/QuotationListItem.vue?9288","webpack:///./bespoke/quotations/QuotationListItem.vue","webpack:///./bespoke/quotations/DeleteQuotation.vue?691e","webpack:///./bespoke/quotations/Prompt.vue?f73d","webpack:///bespoke/quotations/Prompt.vue","webpack:///./bespoke/quotations/Prompt.vue?bd74","webpack:///./bespoke/quotations/Prompt.vue","webpack:///bespoke/quotations/DeleteQuotation.vue","webpack:///./bespoke/quotations/DeleteQuotation.vue?e88c","webpack:///./bespoke/quotations/DeleteQuotation.vue","webpack:///bespoke/quotations/QuotationsList.vue","webpack:///./bespoke/quotations/QuotationsList.vue?3de0","webpack:///./bespoke/quotations/QuotationsList.vue","webpack:///./bespoke/quotations/QuotationDetails.vue?5a1f","webpack:///./bespoke/quotations/SearchProduct.vue?643e","webpack:///./src/components/webshop/search-bar/Searchbar.vue?25bc","webpack:///src/components/webshop/search-bar/Searchbar.vue","webpack:///./src/components/webshop/search-bar/Searchbar.vue?52c1","webpack:///./src/components/webshop/search-bar/Searchbar.vue","webpack:///./bespoke/quotations/DecimalField.vue?975a","webpack:///bespoke/quotations/DecimalField.vue","webpack:///./bespoke/quotations/DecimalField.vue?53cb","webpack:///./bespoke/quotations/DecimalField.vue","webpack:///bespoke/quotations/SearchProduct.vue","webpack:///./bespoke/quotations/SearchProduct.vue?7930","webpack:///./bespoke/quotations/SearchProduct.vue","webpack:///./bespoke/quotations/QuotationLine.vue?a4ee","webpack:///bespoke/quotations/QuotationLine.vue","webpack:///./bespoke/quotations/QuotationLine.vue?0e8b","webpack:///./bespoke/quotations/QuotationLine.vue","webpack:///./bespoke/quotations/AddressCard.vue?521e","webpack:///bespoke/quotations/AddressCard.vue","webpack:///./bespoke/quotations/AddressCard.vue?9cb6","webpack:///./bespoke/quotations/AddressCard.vue","webpack:///./bespoke/quotations/PrintQuotation.vue?e909","webpack:///bespoke/quotations/PrintQuotation.vue","webpack:///./bespoke/quotations/PrintQuotation.vue?ccd7","webpack:///./bespoke/quotations/PrintQuotation.vue","webpack:///./bespoke/quotations/QuotationDiscounts.vue?a66c","webpack:///bespoke/quotations/QuotationDiscounts.vue","webpack:///./bespoke/quotations/QuotationDiscounts.vue?2ee1","webpack:///./bespoke/quotations/QuotationDiscounts.vue","webpack:///./bespoke/quotations/SelectVatPercentage.vue?39e5","webpack:///bespoke/quotations/SelectVatPercentage.vue","webpack:///./bespoke/quotations/SelectVatPercentage.vue?d2c4","webpack:///./bespoke/quotations/SelectVatPercentage.vue","webpack:///./bespoke/quotations/UploadLogo.vue?dc25","webpack:///bespoke/quotations/UploadLogo.vue","webpack:///./bespoke/quotations/UploadLogo.vue?1435","webpack:///./bespoke/quotations/UploadLogo.vue","webpack:///bespoke/quotations/QuotationDetails.vue","webpack:///./bespoke/quotations/QuotationDetails.vue?e8b3","webpack:///./bespoke/quotations/QuotationDetails.vue","webpack:///./bespoke/quotations/SelectQuote.vue?6cf8","webpack:///bespoke/quotations/SelectQuote.vue","webpack:///./src/directives/OutsideClickDirective.js","webpack:///./bespoke/quotations/SelectQuote.vue?3b85","webpack:///./bespoke/quotations/SelectQuote.vue","webpack:///./src/directives/TranslationDirective.js","webpack:///./src/directives/FormatPriceDirective.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","ref","staticClass","class","layoutType","_v","_s","pageTitle","noProductsFound","_e","attrs","pageRange","totalProducts","pageSizes","sortingOptions","on","$event","changeLayout","changePageSize","changePageSorting","scopedSlots","_u","fn","totalPages","currentPage","changePage","proxy","toggleMobileFilters","directives","rawName","type","code","expression","products","_l","blockSize","index","product","id","navigateToProductPage","staticRenderFns","parentClassRef","interpolations","pageRangeString","$$selectedVal","Array","filter","target","options","selected","map","val","_value","multiple","page","pageSorting","sorting","sort","Description","domProps","_t","active","props","pageSize","computed","from","to","methods","$emit","parseInt","component","prices","productImageBanners","screenWidth","banner","_obj","position","bannerVal","ind","Type","style","Color","TextColor","Text","Image","targetUrl","imageAltText","imageTitleText","imageUrl","shortDescription","bespokeGlobalWs","shopName","productStocked","includes","showOrderProductControl","computedProduct","currencySign","getCurrencySign","Promise","resolve","reject","axios","post","then","res","formatPrice","price","decimals","toFixed","replace","Product","undefined","setEmptyProduct","setProduct","images","unshift","subTitle","longDescription","properties","brand","units","saleUnit","discountGroup","setUnits","stock","stockTotal","variantKey","productVariants","customStrings","customDecimals","customBooleans","customDateTimes","includedInCustomerLists","variantCodes","seoInfo","ImageAltText","ImageTitleText","banners","computedBanners","values","show","forEach","Location","computedUnits","a","b","quantity","filteredUnits","unit","customerList","priceObj","rawPrice","rawBasePrice","basePrice","useCalculationBox","changedCalculations","useCanopyCalculator","changedCanopyCalculations","orderType","orderProductNormal","selectedUnitCode","unitsChanged","volumeDiscountChanged","commentPh","orderCommentField","addProductToQuotationEvent","stockLimit","isValidQuantity","quantityFactor","quantityChanged","useOrderMode","useTextButton","orderProduct","initialValue","quantityValue","decrement","increment","handler","exclude","selectExpanded","selectedIndex","description","unitOutOfStock","updateSelectedUnits","showDropdown","expandSelect","unitCode","closeDropdown","NL","defaultPrice","volumeDiscount","volume","updateSelected","initialVolume","manualQuantity","composing","initialQuantity","allowZeroQuantity","watch","Math","sign","ceil","indexOf","_k","keyCode","changeHeight","paneHeight","minPaneHeight","maxPaneHeight","changeWidth","paneWidth","minPaneWidth","maxPaneWidth","showPrices","sqrMeter","CUSTOM_GLASS_PRICE","formattedPriceCustomGlass","totalFormattedPrice","calculationValues","paneldimensionsLabel","panelWidthLabel","toLowerCase","m2","totalPrice","customGlassPrice","processValue","min","created","changeCanopyWidth","canopyWidth","minWidth","maxWidth","changeNumberOfPanels","numberOfPanels","minPanels","maxPanels","changeCanopyDepth","canopyDepth","minDepth","maxDepth","minPanelWidth","maxPanelWidth","labelCanopyWidth","vue","translations","label","label_canopy_width","labelCanopyPlanes","label_canopy_planes","labelCanopyDepth","label_canopy_depth","labelCanopyGlassLength","labelCanopyGlassWidth","labelNumberOfGlassPanels","glasPanelWidth","setNumberOfGlassPanelRestrictions","emitValues","console","log","components","OrderNormal","OrderSaleUnit","OrderUnits","OrderGrouped","OrderVolumeDiscount","QuantityButtons","CalculationBox","CanopyCalculator","initialUnitCode","useOrderComment","orderComment","totalOrderLinesQuantity","useClickThroughButton","showQuotationButton","useQuoteButtonText","calculationsMsg","label_orderline_comment_ph","setOrderType","setOrderQuantities","quoteProduct","productId","productDescription","getComputedQuantity","productPrice","comment","selectedQuote","addProductToQuotation","promptUserForQuote","calcValues","addToCart","payload","getOrderPayload","prod_code","ord_qty","unit_code","prod_comment","$refs","total_price","computedQuantity","stockType","stockIndicator","image","stockIndicators","indicator","indicatorIndex","variantValue","openDropdown","ProductStock","ProductPrice","keys","dropdownUsed","dropdownOpen","computedProductVariants","getProductVariants","isFavoriteComputed","touched","isFavorite","addToFavorites","removeFromFavorites","useDescription","OrderProduct","ProductVariant","FavoritesControl","isSalesAction","activeProductVariantId","shortDesc","showOutOfStockMessage","selectedProduct","updatePage","scrollToTop","scrollToElementId","pages","start","newPageNr","pageNumber","scroll","document","getElementById","scrollIntoView","SortingOptions","Pagination","ProductListItem","location","href","localStorage","setItem","pageYOffset","initElastic","updated","scrollTo","getItem","productDetails","tabs","useCollapse","expanded","videos","documents","prop","showOrderComment","CUSTOM_GLAS_PROD","CUSTOM_CANOPY_PROD","relatedProducts","crossSelling","variant","orderLines","addOrderLinesToCart","variants","render","mainModel","$set","onChange","getPropertyValues","GetMainModel","mainProductProperties","updateShownProduct","event","obj","propertyIndex","filterValues","x","y","ogProperties","mainProductId","returnList","lightbox","lightboxActive","singular","_m","activeIndex","navigate","selectImage","computedTabs","tab","switchTab","tabId","video","url","fileLocation","useCarousel","title","showControlLeft","showControlRight","direction","scrollContainer","scrollBy","left","behavior","scrollLeft","setTimeout","relatedProduct","toggleRow","rowImage","rowTitle","refInFor","relation","groupDescription","relatedProductIndex","prodTitle","priority","classList","toggle","ProductGroupMatrix","Gallery","Tabs","ProductCarousel","ProductVideos","ProductDocuments","RelatedProductsMatrix","productDescriptionHeight","titleUpSelling","title_product_relations","titleCrossSelling","title_product_relations_cross","customBools","SHOW_PROD_COMMENT","showOrderProduct","productProperties","element","clientHeight","mounted","initDetails","$","append","config","ItemSize","$root","$data","productCodes","ProductCodes","productInformationUrl","getProductInformation","getProductStock","getProductPrice","priceRequestWrapper","CustomerId","globalData","userInformation","userLoggedOn","customerId","Pricelist","customerPriceList","Products","ret","ProductId","prod","ProductGroup","ProductUnit","getCustomerLists","filterGroup","filterObj","checkedFilter","elemId","filterActive","ev","checked","filterId","filterValue","closest","addClass","removeClass","updateFilters","collapseList","insertBefore","prev","row","createUrlParams","paramsObj","urlParams","entries","arrParams","paramKeys","param","Values","encodeURI","getUrlParams","decodedUrl","decodeURI","queryString","split","search","queryParts","part","parts","queryKey","queryValue","queryValueArr","arrObj","state","loadingProducts","showMobileFilters","rangeFrom","aggregations","pricingQueryString","activeFilters","filters","sortingType","customerListId","searchConfig","UserId","Category","StringProperties","NumericProperties","StringAggregations","NumericAggregations","ExtraQueries","getters","language","rootState","rootGetters","pageFillCount","ExcludeLabels","ExcludeCategories","IncludeLabels","MinSearchScore","minScore","ShouldIncludeLabels","elasticProductsEndpoint","endpoint","size","query","client","clientCode","priceListCode","groupProducts","sortingstring","productInformationEndpoint","mutations","setLoadingStatus","setSortingOptions","setProducts","productsFound","setProductCodes","setFilters","Number","isNaN","localeCompare","setProductStock","productWithStock","findIndex","setProductPrice","productWithPrice","setSeoInformation","productWithSEO","setProductImageBanners","productWithBanners","setCustomerLists","productWithList","setTotalProducts","setTotalPages","initConfig","From","BlockSize","Aggregations","PricingQueryString","CustomerListId","QueryString","Size","CategoryName","PageSizes","LayoutType","Field","initSearchConfig","updateConfigWithParameters","updateActiveFilters","Language","PartialSearch","setProductVariants","updateUrl","searchtext","history","pushState","actions","commit","dispatch","readoutUrl","params","getProducts","listEndpoint","productsFromList","pagerange","filterSorting","stringAggregations","keyA","toUpperCase","keyb","totalItems","catch","error","mainProductCodes","setStock","showFavorites","getProductSeoInformation","seoInformationEndpoint","getProductImageBanners","productImageBannersUrl","productBanner","Key","Value","getProductPrices","productPriceEndpoint","pricesObj","volumes","round","setPrices","variantCode","productVariantCodes","showStock","productStockEndpoint","getProductVariantPrices","getProductsInListsEndpoint","prodCode","filteredProduct","changedFilter","namespaced","defaultProductInformationEndpoint","vuexStore","$store","defaultStockEndpoint","defaultProductPriceEndpoint","defaultCustomerListEndpoint","defaultProductSeoEndpoint","prodCodes","getStock","getPrices","getSeoInformation","retrievedStock","retrievedPrices","retrievedCustomerLists","getProductCustomerLists","retrievedSeo","stockEndpoint","productStockFetched","productPricesFetched","pricingEndpoint","customerListEndpoint","seoEndpoint","SeoOject","productCode","groupFields","upSelling","relatedProductCodes","bespokeValues","productVariantEndpoint","initial","productVideosEndpoint","setFunction","productDocumentsEndpoint","bespokeProductFieldsEndpoint","relatedProductsEndpoint","replaceState","genericGetProductInformation","callInfo","getRelatedProducts","getVariantCodes","getVariantInformation","groupValueFields","getProductVariantDescriptions","getProductImageSeoInformation","bespokeEndpoints","seoDetailInfo","setProductCode","setGroupFields","setSearchConfig","setProductDetails","setSeoImageInfo","imageList","imageSeoInfo","setRelatedProducts","setRelatedProductCodes","setDocuments","setVideos","setBespokeValues","shoppingCart","shoppingCartRows","totalQuantity","orderProductEndpoint","isArray","JSON","stringify","loggedInStatus","response","errorMessages","pathname","alert","shoppingcartHtml","replaceAll","updateShoppingCart","product_count","orderTotal","updateErrorMessage","message","order_message","totalProductsAdded","updateOrderMessage","set_shopping_cart_delete_buttons","err","productRow","searchText","autocompleteData","setSearchText","setAutoCompleteData","setSelectedProduct","getAutocompleteData","clearSelectedProduct","acData","NOT_AVAILABLE_PROD","updateSearchText","screenHeight","scrollPositionTop","resizeWindow","width","height","initBrowserDetection","innerWidth","innerHeight","addEventListener","store","groupProductsList","useOrderLineComments","productBlockSize","relatedProductBlockSize","setGlobalWsSettings","globalWsSettingsObj","assign","globalWsSettings","bespokeGlobalCms","setGlobalCmsSettings","globalCmsObj","customerUserId","userCustomerId","loggedOn","bespokeUserInformation","setGlobalUserInformation","globalUserInformationObj","globalUserInformation","productStockUrl","orderProductUrl","productPriceUrl","addProductToListEndpoint","removeProductFromListEndpoint","elasticProducts","productInformation","seoInformation","productVariantsEndpoint","productVariantDescriptionEndpoint","productVariantDescription","relatedProductsUrl","productVideosUrl","productDocumentsUrl","bespokeFieldsUrl","setGlobalEndpoints","globalEndpointsObj","loadingQuotations","quotationsBaseAddress","quotations","selectedQuoteId","currentQuoteVatCode","isShowSelectQuotesTool","queingQuoteProduct","quoteProductInQue","defaultVatCode","queueingQuoteProduct","init","getVatCodes","IsSuccess","Vat","Code","createQuote","_","debtorId","vatCode","dateString","QuoteDate","formattedDateString","newQuote","RecId","date","Date","format","isActive","subtotalExclVat","getQuotations","recId","lines","expDateString","QuoteExpirationDate","expParts","formattedExpDateString","expirationDate","InvAddress","Name","TotalExcl","VatCode","quoteIdStoredInSession","quoteId","setSelectedQuote","selectedQuoteIndex","quotationProduct","hdrId","prodDesc","quoteQty","prodPrice","rowAmt","rowOrd","rowOrder","totalExcl","Totals","succesMessage","label_prod_added_to_quote","errorMessage","label_err_add_prod_quote","showSelectQuotesTool","cancelPromptUserForQuote","addQueuedProductToQuoteList","setCurrencySign","setQuotations","setLoadingQuotations","loading","indexSelectedQuote","quote","removeItem","setShowSelectQuotesTool","setQueingQuoteProduct","inQue","setQuoteProductInQue","setTotals","defaults","headers","Vue","use","Vuex","Store","elastic","globalBrowser","globalEndpoints","globalCmsSettings","orderEntry","quoations","deleteQuotation","showDeleteQuotation","line","initDeleteQuotation","printquotation","iframeSource","quotation","setSelectedQuoteEvent","formattedPrice","printTitle","printQuotation","detailsUrl","button","button_print_quote","URL","origin","searchParams","deleteQuote","cancelPrompt","cancel","confirm","Prompt","showPrintIframe","quoteIdToDelete","DeleteQuotation","indexOfLineToDelete","label_deleted_quote","$nextTick","addingQuoteToCartMessage","noResult","quoteDetails","quoteNr","closeProductsWithErrors","closeSearchProduct","addExistingProductToQuotation","logoImgUrl","SaveCompanyLogo","deliveryAddress","titleLabelQuoteFrom","updateAddress","invoiceAddress","titleAddrCard","printQuote","updateDescription","deleteQuotationLine","updateQuantity","updatePrice","initAddProductModal","updateDiscount","updateVatPercentage","discountTotal","vatTotal","totalIncl","addQuoteToCart","placeholder","model","callback","$$v","placeholderCustProd","customProductDesc","customProductPrice","addCustomProductToQuotation","searchString","updateByEnter","emptySelectedProduct","option","updateFromList","textField","updateValue","maxValue","parsedValue","parseInput","newValue","parseFloat","inputString","updateProductDescription","productQuantity","formattedRowAmount","DecimalField","rowAmount","parsedQuantity","closeModal","modalTitle","labelName","address","labelCountry","country","labelAddress","labelCity","labelZip","labelPhone","labelEmail","saveForm","zipCode","city","countryDisplayName","phone","email","openModal","showModal","availableCountries","label_quote_col_name","label_quote_col_cnt","label_quote_col_address","label_quote_col_city","label_quote_col_zip","label_quote_col_phone","label_quote_col_email","addressIncomplete","showAddress","quoteDate","expirationQuoteDate","customProduct","discountIncludingVat","applyingDiscount","Disc","URLSearchParams","updateDiscountType","discountAmountLabel","discountPercentageLabel","discPrice","discountType","discPerc","discountAmount","updateDiscountAmount","label_quote_dd_disc_amt","label_quote_dd_disc_perc","amt","setDiscountMaxValue","amount","Percentage","vatCodes","showUploadLogoEvent","uploadingFile","onFileChange","existingImageUrl","SaveLogo","imageAsBytes","deleteFile","fileIsInvalid","controlIsTainted","showUploadLogo","resetModalState","files","uploadedFileAsFile","hasErrors","maxFileSizeInMB","label_filesize_exceeds","acceptedFileTypes","label_file_types","createImage","uploadedFileName","file","reader","onload","readAsArrayBuffer","validateFile","ImageExists","readAsDataURL","errorMsg","SearchProduct","QuotationLine","AddressCard","showAddProductModal","quoteLines","quoteListUrl","datePickersSet","isAddingQuoteToCart","label_proc_addtocart","showProductsAddedToCartHadErrors","productsWithErrors","showAddToCartLoaderMessage","label_quote_from","title_addr_card","quoteProductToDeleteIndex","label_deleted_prod","quoteProductToUpdate","find","updateQuoteDate","quotationId","quotationDate","selectedDate","updateQuoteExpirationDate","addressDto","Address","ZipCode","City","Phone","CntCode","countryCode","Email","label_chg_address","totalsIncl","GrandTotal","setDatePicker","locale","wrap","inline","altInput","dateFormat","altFormat","defaultDate","dateStr","onOpen","onClose","elementId","flatpickr","quoteExpirationDate","details","expirationDateString","DiscType","formattedExpirationDateString","grandTotal","TotalIncl","VatTotal","LogoImgUrl","Lines","ProdCode","ProdDesc","Qty","LineTotal","RowOrd","Comment","DelAddress","productInfo","showSelectQuotationModal","setSelection","handleOutsideClick","successMessage","label_switched_quote_list","TranslationDirective","inserted","el","translation","innerHTML","componentUpdated","newTranslation","interpolation","FormatPriceDirecive","OutsideClickDirective","binding","vnode","stopPropagation","clickedOnExcludedEl","refName","excludedEl","context","contains","unbind","removeEventListener","directive","FormatPriceDirective","cmsSettings","webshopSettings","endpoints","loadElasticSearch","elasticSearch","h","ElasticProductList","$mount","loadElasticProductDetails","ElasticProductDetails","elasticAggrFilters","ElasticProductFilters","ShoppingCartControl","productBlocks","ProductBlock","Target","QuotationsList","loadVueJsQuotationTool","quotationsStore","SelectQuote","quotationDetails","QuotationDetails","printQuotationDetails","PrintQuotation","productionTip"],"mappings":"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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"productListContainer\",staticClass:\"cmp-elastic-product-list utlz-row utlz-reset\",class:_vm.layoutType},[_c('div',{staticClass:\"utlz-col-md-12\"},[_c('h1',[_vm._v(_vm._s(_vm.pageTitle))]),(!_vm.noProductsFound)?_c('utlz-sorting-options',{attrs:{\"id\":\"sorting-options\",\"pageRange\":_vm.pageRange,\"totalProducts\":_vm.totalProducts,\"layoutType\":_vm.layoutType,\"parentClassRef\":'ref-elastic-product-list',\"pageSize\":_vm.pageSizes,\"pageSorting\":_vm.sortingOptions},on:{\"changeLayout\":function($event){return _vm.changeLayout($event)},\"changePageSize\":function($event){return _vm.changePageSize($event)},\"changePageSorting\":function($event){return _vm.changePageSorting($event)}},scopedSlots:_vm._u([{key:\"pagination\",fn:function(){return [(_vm.totalPages > 1)?_c('utlz-pagination',{attrs:{\"totalPages\":_vm.totalPages,\"currentPage\":_vm.currentPage,\"scrollToTop\":true},on:{\"changePage\":function($event){return _vm.changePage($event)}}}):_vm._e()]},proxy:true},{key:\"toggle-mobile-filters\",fn:function(){return [_c('a',{staticClass:\"toggle-filters-btn button small theme-primary show-mobile\",on:{\"click\":function($event){return _vm.toggleMobileFilters()}}},[_c('i',{staticClass:\"fa fa-filter\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_toggle_mobile_filters' }),expression:\"{ type: 'label', code: 'label_toggle_mobile_filters' }\"}]})])]},proxy:true}],null,false,495735550)}):_vm._e(),_c('transition-group',{staticClass:\"list-items-wrapper utlz-row\",attrs:{\"name\":\"fadein\",\"tag\":\"div\"}},[(!_vm.products.length && !_vm.noProductsFound)?_vm._l(((4 * _vm.blockSize)),function(index){return _c('div',{key:index,staticClass:\"ph-silhouette product-list-item utlz-col-12\",class:'utlz-col-sm-' + _vm.blockSize},[_c('span',{staticClass:\"silhouette-img square\"}),_c('div',{staticClass:\"ph-paragraph\"},[_c('span',{staticClass:\"silhouette-line\"}),_c('span',{staticClass:\"silhouette-line\"}),_c('span',{staticClass:\"silhouette-line\"}),_c('span',{staticClass:\"silhouette-line\"})])])}):_vm._e()],2),_c('transition-group',{staticClass:\"list-items-wrapper utlz-row\",attrs:{\"name\":\"fade\",\"tag\":\"div\"}},_vm._l((_vm.products),function(product){return _c('utlz-product-list-item',{key:product.id,staticClass:\"product-list-item\",attrs:{\"product\":product,\"blockSize\":_vm.blockSize},on:{\"navigateToProductPage\":function($event){return _vm.navigateToProductPage($event)}}})}),1),(_vm.totalPages > 1)?_c('utlz-pagination',{attrs:{\"totalPages\":_vm.totalPages,\"currentPage\":_vm.currentPage},on:{\"changePage\":function($event){return _vm.changePage($event)}}}):_vm._e(),(_vm.noProductsFound)?_c('div',{staticClass:\"no-products-found\"},[_c('h2',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_no_products_found'}),expression:\"{ type: 'label', code: 'label_no_products_found'}\"}]})]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-sorting-options utlz-row normalize-text mb-sm-3\",class:_vm.parentClassRef},[_c('div',{staticClass:\"utlz-col-md-12\"},[_c('div',{staticClass:\"sort-options-wrapper flex-row-wrap justify-content-between align-items-center\"},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_showing_result', interpolations: [_vm.pageRangeString, _vm.totalProducts]}),expression:\"{ type: 'label', code: 'label_showing_result', interpolations: [pageRangeString, totalProducts]}\"}],staticClass:\"product-counter\"}),_c('div',{staticClass:\"select-pagesize\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_show_item_count'}),expression:\"{ type: 'label', code: 'label_show_item_count'}\"}],staticClass:\"select-label\"}),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected),expression:\"selected\"}],staticClass:\"small-tablet\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.changePageSize()}]}},_vm._l((_vm.pageSize),function(page){return _c('option',{key:page},[_vm._v(_vm._s(page))])}),0)]),(_vm.pageSorting.length > 1)?_c('div',{staticClass:\"select-sorting\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_sorting'}),expression:\"{ type: 'label', code: 'label_sorting'}\"}],staticClass:\"select-label\"}),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sorting),expression:\"sorting\"}],staticClass:\"small-tablet\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.sorting=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.changePageSorting()}]}},_vm._l((_vm.pageSorting),function(sort){return _c('option',{key:sort.Description,domProps:{\"value\":sort}},[_vm._v(_vm._s(sort.Description))])}),0)]):_vm._e(),_c('div',{staticClass:\"cmp-slot toggle-filters-slot hidden-lg\"},[_vm._t(\"toggle-mobile-filters\")],2),_c('div',{staticClass:\"cmp-slot pagination-slot\"},[_vm._t(\"pagination\")],2),_c('ul',{staticClass:\"grid-view-btns flex-row-nowrap just-space-between\"},[_c('li',{staticClass:\"blocks\"},[_c('a',{staticClass:\"button square\",class:{ active: _vm.layoutType === 'blocks', 'theme-primary': _vm.layoutType === 'blocks' },on:{\"click\":function($event){return _vm.changeLayout('blocks');}}},[_c('i',{staticClass:\"fa fa-th\"})])]),_c('li',{staticClass:\"list\"},[_c('a',{staticClass:\"button square\",class:{ active: _vm.layoutType === 'rows', 'theme-primary': _vm.layoutType === 'rows'},on:{\"click\":function($event){return _vm.changeLayout('rows');}}},[_c('i',{staticClass:\"fa fa-list\"})])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-sorting-options utlz-row normalize-text mb-sm-3\" :class=\"parentClassRef\">\r\n    <div class=\"utlz-col-md-12\">\r\n      <div class=\"sort-options-wrapper flex-row-wrap justify-content-between align-items-center\">\r\n        <p class=\"product-counter\" v-translation=\"{ type: 'label', code: 'label_showing_result', interpolations: [pageRangeString, totalProducts]}\"></p>\r\n\r\n        <div class=\"select-pagesize\">\r\n          <span class=\"select-label\" v-translation=\"{ type: 'label', code: 'label_show_item_count'}\"></span>\r\n          <select v-model=\"selected\" @change=\"changePageSize()\" class=\"small-tablet\">\r\n            <option v-for=\"page in pageSize\" :key=\"page\">{{page}}</option>\r\n          </select>\r\n        </div>\r\n\r\n        <div class=\"select-sorting\" v-if=\"pageSorting.length > 1\">\r\n          <span class=\"select-label\" v-translation=\"{ type: 'label', code: 'label_sorting'}\"></span>\r\n          <select v-model=\"sorting\" @change=\"changePageSorting()\" class=\"small-tablet\">\r\n            <option v-for=\"sort in pageSorting\" :key=\"sort.Description\" :value=\"sort\">{{sort.Description}}</option>\r\n          </select>\r\n        </div>\r\n\r\n        <div class=\"cmp-slot toggle-filters-slot hidden-lg\">\r\n          <slot name=\"toggle-mobile-filters\"></slot>\r\n        </div>\r\n\r\n        <div class=\"cmp-slot pagination-slot\">\r\n          <slot name=\"pagination\"></slot>\r\n        </div>\r\n\r\n        <ul class=\"grid-view-btns flex-row-nowrap just-space-between\">\r\n          <li class=\"blocks\">\r\n            <a @click=\"changeLayout('blocks');\" class=\"button square\" :class=\"{ active: layoutType === 'blocks', 'theme-primary': layoutType === 'blocks' }\">\r\n              <i class=\"fa fa-th\"></i>\r\n            </a>\r\n          </li>\r\n          <li class=\"list\">\r\n            <a @click=\"changeLayout('rows');\" class=\"button square\" :class=\"{ active: layoutType === 'rows', 'theme-primary': layoutType === 'rows'}\">\r\n              <i class=\"fa fa-list\"></i>\r\n            </a>\r\n          </li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    layoutType: { type: String, required: false, default: 'blocks' },\r\n    totalProducts: { type: Number, required: true },\r\n    pageSize: { type: Array, required: false, default: () => [32, 64, 128] },\r\n    pageSorting: { type: Array, required: false, default: () => [{ 'Description': 'default', 'Field': '', 'Type': 0 }] },\r\n    pageRange: { type: Object, required: true },\r\n    parentClassRef: { type: String, default: '', required: false }\r\n  },\r\n  data () {\r\n    return {\r\n      selected: this.pageSize[0],\r\n      sorting: this.pageSorting[0]\r\n    }\r\n  },\r\n  computed: {\r\n    pageRangeString () {\r\n      return this.pageRange.from + ' - ' + this.pageRange.to;\r\n    }\r\n  },\r\n  methods: {\r\n    changeLayout (layoutType) {\r\n      this.$emit('changeLayout', layoutType);\r\n    },\r\n    changePageSize () {\r\n      this.$emit('changePageSize', parseInt(this.selected));\r\n    },\r\n    changePageSorting () {\r\n      this.$emit('changePageSorting', this.sorting);\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SortingOptions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SortingOptions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SortingOptions.vue?vue&type=template&id=b8bee098&\"\nimport script from \"./SortingOptions.vue?vue&type=script&lang=js&\"\nexport * from \"./SortingOptions.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-product-list-item utlz-col-sm-4\",class:'utlz-col-lg-' + _vm.blockSize},[_c('div',{staticClass:\"utlz-row utlz-no-gutters utlz-gutters-sm item-wrapper\"},[(_vm.product.prices != 'undefined')?[(_vm.isSalesAction)?_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_sales_action' }),expression:\"{ type: 'label', code: 'label_sales_action' }\"}],staticClass:\"action-banner\"}):_vm._e()]:_vm._e(),_c('div',{staticClass:\"utlz-col-3 utlz-col-sm-12 img-container\"},[(_vm.showFavorites)?_c('utlz-favorites-control',{attrs:{\"product\":_vm.product}}):_vm._e(),(_vm.product.productImageBanners.length && _vm.screenWidth >= 576)?[_c('div',{staticClass:\"product-banners\"},_vm._l((_vm.productImageBanners),function(banner,index){\nvar _obj;\nreturn _c('div',{key:'prod-banner-wrapper-' + index,staticClass:\"prod-banner-wrapper\",class:( _obj = {}, _obj[banner.position] = true, _obj )},_vm._l((banner.values),function(bannerVal,ind){return _c('div',{key:'prod-banner-wrapper-' + ind},[(bannerVal.Type === 0)?_c('span',{staticClass:\"text-banner\",style:('background-color:' + bannerVal.Color + ';color: ' + bannerVal.TextColor)},[_vm._v(\"\\n                  \"+_vm._s(bannerVal.Text)+\"\\n                \")]):_vm._e(),(bannerVal.Type === 1)?_c('img',{staticClass:\"img-banner\",attrs:{\"src\":'/' + bannerVal.Image}}):_vm._e()])}),0)}),0)]:_vm._e(),_c('figure',{staticClass:\"img-square prod-img\"},[_c('a',{staticClass:\"clickthrough\",attrs:{\"href\":_vm.product.targetUrl}},[_c('img',{staticClass:\"img-fluid\",attrs:{\"alt\":_vm.product.imageAltText,\"title\":_vm.product.imageTitleText,\"src\":_vm.product.imageUrl ? _vm.product.imageUrl : '/documents/productimages/not-available-large.jpg'}})])])],2),_c('div',{staticClass:\"utlz-col-9 utlz-col-sm-12 text-container\"},[_c('a',{staticClass:\"clickthrough\",attrs:{\"href\":_vm.product.targetUrl}},[(_vm.product.productImageBanners.length && _vm.screenWidth <= 576)?[_c('div',{staticClass:\"product-banners\"},_vm._l((_vm.productImageBanners),function(banner,index){\nvar _obj;\nreturn _c('div',{key:'prod-banner-wrapper-' + index,staticClass:\"prod-banner-wrapper\",class:( _obj = {}, _obj[banner.position] = true, _obj )},_vm._l((banner.values),function(bannerVal,ind){return _c('div',{key:'prod-banner-wrapper-' + ind},[(bannerVal.Type === 0)?_c('span',{staticClass:\"text-banner\",style:('background-color:' + bannerVal.Color + ';color: ' + bannerVal.TextColor)},[_vm._v(\"\\n                  \"+_vm._s(bannerVal.Text)+\"\\n                \")]):_vm._e(),(bannerVal.Type === 1)?_c('img',{staticClass:\"img-banner\",attrs:{\"src\":'/' + bannerVal.Image}}):_vm._e()])}),0)}),0)]:_vm._e(),_c('h2',{staticClass:\"prod-title header-small header-normal-sm\"},[_vm._v(_vm._s(_vm.shortDescription))])],2),(_vm.bespokeGlobalWs.shopName === 'uk' || _vm.bespokeGlobalWs.shopName === 'de')?[(_vm.productStocked)?_c('div',{staticClass:\"prod-stocked-label\",class:{'label-green': _vm.productStocked.includes('UK') || _vm.productStocked.includes('DEU') }},[_c('i',{staticClass:\"fa fa-info-circle\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n          \"+_vm._s(_vm.productStocked)+\"\\n        \")]):_vm._e()]:_vm._e(),_c('div',{staticClass:\"ph-order-product\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showOrderProductControl && _vm.product.prices.length)?_c('utlz-order-product',{attrs:{\"showQuotationButton\":false,\"product\":_vm.computedProduct,\"parentClassRef\":'ref-product-list-item',\"useClickThroughButton\":true}}):_vm._e()],1)],1)],2)],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios from 'axios';\r\n\r\n// BESPOKE THERM-46\r\n// Added helper to retrieve currency sign, call this before \r\n// initiating elastic list and elastic product details\r\nexport let currencySign = '€';\r\n\r\nexport function getCurrencySign () {\r\n  return new Promise((resolve, reject) => {\r\n    axios.post('/bespoke/ajaxmethods.aspx/GetCurrencySign', {}).then(res => {\r\n      currencySign = res.data.d;\r\n      resolve(currencySign);\r\n    });\r\n  });  \r\n}\r\n// END BESPOKE THERM-46\r\n\r\n\r\nexport function formatPrice (price, decimals = 2) {\r\n  // BESPOKE THERM-46\r\n  // Added currencySign\r\n  return currencySign + ' ' + price.toFixed(decimals).replace('.', ',');\r\n  // END BESPOKE THERM-46\r\n}\r\n\r\n// Navigates to vb page, and gives the option to cache current store\r\nexport function navigateToHybridUrl (url, { cacheState, moduleKey, stateTree }) {\r\n  if (cacheState) {\r\n    window.sessionStorage[moduleKey] = JSON.stringify(stateTree);\r\n  }\r\n  window.location.href = url;\r\n}\r\n\r\nexport function retrieveStore (moduleKey) {\r\n  return JSON.parse(window.sessionStorage[moduleKey]);\r\n}\r\n","import { formatPrice } from 'src/utilities/helpers';\r\n\r\nexport class Product {\r\n  constructor (product) {\r\n    if (product === undefined) {\r\n      this.setEmptyProduct();\r\n    } else {\r\n      this.setProduct(product);\r\n      if (this.images) {\r\n        this.images.unshift(this.imageUrl);\r\n      } else {\r\n        this.images = [this.imageUrl];\r\n      }\r\n    }\r\n  }\r\n\r\n  setProduct (product) {\r\n    this.id = product.id;\r\n    this.shortDescription = product.shortDescription;\r\n    this.subTitle = product.subTitle;\r\n    this.longDescription = product.longDescription;\r\n    this.properties = product.properties;\r\n    this.targetUrl = product.targetUrl;\r\n    this.imageUrl = product.imageUrl;\r\n    this.images = product.images;\r\n    this.brand = product.brand;\r\n    this.units = product.units;\r\n    this.saleUnit = product.saleUnit;\r\n    this.discountGroup = product.discountGroup;\r\n    this.prices = [];\r\n    this.units = this.setUnits(product.units);\r\n    this.stock = { stockTotal: null };\r\n    this.variantKey = product.variantKey;\r\n    this.productVariants = [];\r\n    this.customStrings = product.customStrings;\r\n    this.customDecimals = product.customDecimals;\r\n    this.customBooleans = product.customBooleans;\r\n    this.customDateTimes = product.customDateTimes;\r\n    this.includedInCustomerLists = [];\r\n    this.imageAltText = product.id;\r\n    this.imageTitleText = product.id;\r\n    this.productImageBanners = [];\r\n    // BESPOKE DEPG-31\r\n    this.variantCodes = [];\r\n    // END BESPOKE DEPG-31\r\n  }\r\n\r\n  setEmptyProduct () {\r\n    this.id = 'NOTLOADED';\r\n    this.shortDescription = '';\r\n    this.subTitle = '';\r\n    this.longDescription = '';\r\n    this.properties = '';\r\n    this.targetUrl = '';\r\n    this.imageUrl = '';\r\n    this.images = [];\r\n    this.brand = '';\r\n    this.variantKey = '';\r\n    this.units = [];\r\n    this.saleUnit = '';\r\n    this.discountGroup = '';\r\n    this.prices = [];\r\n    this.units = null;\r\n    this.stock = { stockTotal: null };\r\n    this.variantKey = '';\r\n    this.productVariants = [];\r\n    this.customStrings = {};\r\n    this.customDecimals = {};\r\n    this.customBooleans = {};\r\n    this.customDateTimes = {};\r\n    this.includedInCustomerLists = [];\r\n    this.imageAltText = '';\r\n    this.imageTitleText = '';\r\n  }\r\n\r\n  setStock (stock) {\r\n    this.stock = stock;\r\n  }\r\n\r\n  setSeoInformation (seoInfo) {\r\n    this.imageAltText = seoInfo.ImageAltText;\r\n    this.imageTitleText = seoInfo.ImageTitleText;\r\n  }\r\n\r\n  setProductImageBanners (banners) {\r\n    const computedBanners = [\r\n      { position: 'top-left', values: [], show: false },\r\n      { position: 'top-right', values: [], show: false },\r\n      { position: 'bottom-right', values: [], show: false },\r\n      { position: 'bottom-left', values: [], show: false }\r\n    ];\r\n    banners.forEach(banner => {\r\n      computedBanners[banner.Location].values.push(banner);\r\n      computedBanners[banner.Location].show = true;\r\n    });\r\n    this.productImageBanners = computedBanners;\r\n  }\r\n\r\n  setUnits (units) {\r\n    // BESPOKE DEPG\r\n    // Sometimes products have one unit without a quantity, this needs to be filtered out\r\n    if (units) {\r\n      const computedUnits = units.sort((a, b) => (a.quantity > b.quantity) ? 1 : -1);\r\n      const filteredUnits = computedUnits.filter(unit => unit.quantity > 0);\r\n      return filteredUnits.length > 0 ? filteredUnits : null; \r\n    } else return null;\r\n    // END BESPOKE DEPG\r\n  }\r\n\r\n  setProductVariants (productVariants) {\r\n    this.productVariants = productVariants;\r\n  }\r\n\r\n  setCustomerLists (customerList) {\r\n    this.includedInCustomerLists = customerList;\r\n  }\r\n\r\n  setPrices (prices) {\r\n    if (prices !== undefined) {\r\n      prices.forEach(priceObj => {\r\n        priceObj.rawPrice = priceObj.price;\r\n        priceObj.rawBasePrice = priceObj.basePrice;\r\n        priceObj.price = formatPrice(priceObj.price);\r\n        priceObj.basePrice = formatPrice(priceObj.basePrice);\r\n        priceObj.quantity = priceObj.quantity === 0 ? 1 : priceObj.quantity;\r\n      });\r\n    }\r\n    this.prices = prices;\r\n  }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-order-product normalize-headers\",class:_vm.parentClassRef},[(_vm.useCalculationBox && _vm.product.prices.length)?_c('utlz-calculation-box',{attrs:{\"quantity\":_vm.quantity,\"product\":_vm.product},on:{\"changedCalculations\":function($event){return _vm.changedCalculations($event)}}}):_vm._e(),(_vm.useCanopyCalculator && _vm.product.prices.length)?_c('utlz-canopy-calculator',{attrs:{\"quantity\":_vm.quantity,\"product\":_vm.product},on:{\"changedCanopyCalculations\":function($event){return _vm.changedCanopyCalculations($event)}}}):_vm._e(),(_vm.orderType === 'normal')?_c('utlz-order-normal',{on:{\"orderNormal\":function($event){return _vm.orderProductNormal($event)}}}):_vm._e(),(_vm.orderType === 'saleUnit')?_c('utlz-order-saleunit',{attrs:{\"saleUnit\":_vm.product.saleUnit}}):_vm._e(),(_vm.orderType === 'units' && _vm.product.stock)?_c('utlz-order-units',{attrs:{\"units\":_vm.product.units,\"stockTotal\":_vm.product.stock.stockTotal,\"selectedUnitCode\":_vm.selectedUnitCode},on:{\"unitsChanged\":function($event){return _vm.unitsChanged($event)}}}):_vm._e(),(_vm.orderType === 'grouped')?_c('utlz-order-grouped',{attrs:{\"product\":_vm.product}}):_vm._e(),(_vm.orderType === 'volumeDiscount')?_c('utlz-order-volume-discount',{attrs:{\"volumeDiscount\":_vm.product.prices},on:{\"volumeDiscountChanged\":function($event){return _vm.volumeDiscountChanged($event)}}}):_vm._e(),(_vm.useOrderComment)?_c('input',{ref:\"orderComment\",staticClass:\"order-comment\",attrs:{\"type\":\"text\",\"placeholder\":_vm.commentPh},domProps:{\"value\":_vm.orderCommentField}}):_vm._e(),(_vm.useClickThroughButton)?[(_vm.useClickThroughButton)?_c('a',{staticClass:\"button add-to-cart-btn small\",attrs:{\"href\":_vm.product.targetUrl}},[_c('i',{staticClass:\"uws-icon uws-cart\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_order'}),expression:\"{ type: 'button', code: 'button_order'}\"}]})]):_vm._e(),(_vm.showQuotationButton)?[_c('a',{staticClass:\"add-to-quote-btn\",on:{\"click\":function($event){return _vm.addProductToQuotationEvent(_vm.product.id)}}},[_c('i',{staticClass:\"fa fa-file-text-o\"}),(_vm.useQuoteButtonText)?[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_addto_quotes', type: 'button' }),expression:\"{ code: 'button_addto_quotes', type: 'button' }\"}]})]:_vm._e()],2)]:_vm._e()]:[_c('div',{staticClass:\"order-product-wrapper flex-row-nowrap\",class:{ \n      'disabled': _vm.stockLimit && !_vm.isValidQuantity, \n      'calc-box': (_vm.useCalculationBox || _vm.useCanopyCalculator) && _vm.product.prices.length \n      }},[_c('utlz-quantity-buttons',{attrs:{\"initialQuantity\":_vm.quantity,\"allowZeroQuantity\":true,\"quantityFactor\":_vm.quantityFactor},on:{\"quantityChanged\":function($event){return _vm.quantityChanged($event)}}}),(_vm.useOrderMode && !_vm.useTextButton)?_c('a',{staticClass:\"button add-to-cart-btn small\",on:{\"click\":_vm.orderProduct}},[_c('i',{staticClass:\"uws-icon uws-cart\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e(),(_vm.useOrderMode && _vm.useTextButton)?_c('a',{staticClass:\"inputbutton btn-u btn-u-sea-shop btn-u-lg text-order-btn\",on:{\"click\":_vm.orderProduct}},[_c('i',{staticClass:\"uws-icon uws-cart\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_order'}),expression:\"{ type: 'button', code: 'button_order'}\"}]})]):_vm._e(),(_vm.showQuotationButton)?[_c('a',{staticClass:\"add-to-quote-btn\",on:{\"click\":function($event){return _vm.addProductToQuotationEvent(_vm.product.id)}}},[_c('i',{staticClass:\"fa fa-file-text-o\"}),(_vm.useQuoteButtonText)?[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_addto_quotes', type: 'button' }),expression:\"{ code: 'button_addto_quotes', type: 'button' }\"}]})]:_vm._e()],2)]:_vm._e(),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.stockLimit && !_vm.isValidQuantity)?[_c('div',{staticClass:\"utlz-tooltip stock-limit danger\"},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_exceeds_stock_limit' }),expression:\"{ type: 'label', code: 'label_exceeds_stock_limit' }\"}]})])]:_vm._e()],2)],2)]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"utlz-order-normal\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"utlz-order-normal\">\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    useOrderMode: { type: Boolean, required: false, default: true },\r\n    initialValue: { type: Number, required: false, default: 1 }\r\n  },\r\n  data () {\r\n    return {\r\n      quantityValue: this.initialValue\r\n    }\r\n  },\r\n  methods: {\r\n    quantityChanged () {\r\n    },\r\n    decrement () {\r\n      this.quantityValue--;\r\n      this.quantityChanged();\r\n    },\r\n    increment () {\r\n      this.quantityValue++;\r\n      this.quantityChanged();\r\n    },\r\n    orderProduct (payload) {\r\n      this.$emit('orderNormal', { quantity: parseInt(this.quantityValue) });\r\n      this.quantityValue = this.initialValue;\r\n    }\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderNormal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderNormal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderNormal.vue?vue&type=template&id=211fc9c6&\"\nimport script from \"./OrderNormal.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderNormal.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-order-saleunit\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_sale_unit' } ),expression:\"{ type: 'label', code: 'label_sale_unit' } \"}],staticClass:\"sale-unit-label\"}),_c('span',{staticClass:\"sale-unit-value\"},[_vm._v(_vm._s(_vm.saleUnit))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-order-saleunit\">\r\n    <span v-translation=\"{ type: 'label', code: 'label_sale_unit' } \" class=\"sale-unit-label\"></span>\r\n    <span class=\"sale-unit-value\">{{ saleUnit }}</span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    saleUnit: { type: Number, required: true }\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSaleUnit.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderSaleUnit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderSaleUnit.vue?vue&type=template&id=2e8be1ba&\"\nimport script from \"./OrderSaleUnit.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderSaleUnit.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showDropdown)?_c('div',{staticClass:\"cmp-order-units utlz-reset\"},[_c('div',{staticClass:\"custom-select-box\"},[_c('div',{directives:[{name:\"outside-click\",rawName:\"v-outside-click\",value:({ handler: 'closeDropdown', exclude: ['dropdown']}),expression:\"{ handler: 'closeDropdown', exclude: ['dropdown']}\"}],ref:\"dropdown\",staticClass:\"current\",on:{\"click\":function($event){_vm.selectExpanded = !_vm.selectExpanded}}},[_c('span',{staticClass:\"unit-description\"},[_vm._v(_vm._s(_vm.units[_vm.selectedIndex].description)+\":\")]),_c('span',{staticClass:\"unit-quantity\"},[_vm._v(_vm._s(_vm.units[_vm.selectedIndex].quantity))]),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_unit_pieces' }),expression:\"{ type: 'label', code: 'label_unit_pieces' }\"}]}),_c('i',{staticClass:\"fa fa-angle-down\"})]),(_vm.selectExpanded)?_c('ul',{staticClass:\"options\"},_vm._l((_vm.units),function(unit,index){return _c('li',{key:index,staticClass:\"option\",class:{ 'selected': _vm.selectedIndex === index, 'disabled': _vm.unitOutOfStock(unit.quantity) },on:{\"click\":function($event){return _vm.updateSelectedUnits(index)}}},[_c('span',{staticClass:\"unit-description\"},[_vm._v(_vm._s(unit.description)+\":\")]),_c('span',{staticClass:\"unit-quantity\"},[_vm._v(_vm._s(unit.quantity))]),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_unit_pieces' }),expression:\"{ type: 'label', code: 'label_unit_pieces' }\"}]})])}),0):_vm._e()])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"showDropdown\" class=\"cmp-order-units utlz-reset\">\r\n    <div class=\"custom-select-box\">\r\n      <div class=\"current\" @click=\"selectExpanded = !selectExpanded\" v-outside-click=\"{ handler: 'closeDropdown', exclude: ['dropdown']}\" ref=\"dropdown\">\r\n        <span class=\"unit-description\">{{ units[selectedIndex].description }}:</span>\r\n        <span class=\"unit-quantity\">{{ units[selectedIndex].quantity }}</span>\r\n        <span v-translation=\"{ type: 'label', code: 'label_unit_pieces' }\"></span>\r\n        <i class=\"fa fa-angle-down\"></i>\r\n      </div>\r\n      <ul v-if=\"selectExpanded\" class=\"options\">\r\n        <li v-for=\"(unit, index) in units\"\r\n          :key=\"index\"\r\n          @click=\"updateSelectedUnits(index)\"\r\n          :class=\"{ 'selected': selectedIndex === index, 'disabled': unitOutOfStock(unit.quantity) }\"\r\n          class=\"option\">\r\n          <span class=\"unit-description\">{{ unit.description }}:</span>\r\n          <span class=\"unit-quantity\">{{ unit.quantity }}</span>\r\n          <span v-translation=\"{ type: 'label', code: 'label_unit_pieces' }\"></span>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    units: { type: Array, required: true },\r\n    stockTotal: { type: Number, required: true },\r\n    selectedUnitCode: { type: String, required: false }\r\n  },\r\n  data () {\r\n    return {\r\n      selectExpanded: false\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['stockLimit']),\r\n    selectedIndex () {\r\n      if (this.selectedUnitCode) {\r\n        return this.units.map(unit => unit.code).indexOf(this.selectedUnitCode);\r\n      } else {\r\n        return 0;\r\n      }\r\n    },\r\n    unitOutOfStock (quantity) {\r\n      return (quantity) => {\r\n        if (this.stockLimit && this.stockTotal < quantity) {\r\n          return true;\r\n        } else {\r\n          return false;\r\n        }\r\n      };\r\n    },\r\n    showDropdown () {\r\n      // Do not display dropdown if product only has one unit with quantity 1\r\n      if (this.units.length === 1 && this.units[0].quantity === 1) {\r\n        return false;\r\n      } else {\r\n        return true;\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    expandSelect () {\r\n      this.selectExpanded = true;\r\n    },\r\n    updateSelectedUnits (index) {\r\n      this.$emit('unitsChanged', {\r\n        quantity: this.units[index].quantity,\r\n        unitCode: this.units[index].code\r\n      });\r\n    },\r\n    closeDropdown () {\r\n      this.selectExpanded = false;\r\n    }\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderUnits.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderUnits.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderUnits.vue?vue&type=template&id=2e29cbae&\"\nimport script from \"./OrderUnits.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderUnits.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"utlz-order-grouped\"},[_c('a',{staticClass:\"group-option selected\",on:{\"click\":_vm.expandSelect}},[_vm._v(\"current\")]),(_vm.selectExpanded)?_c('ul',{staticClass:\"group-select custom-select\"},_vm._l((_vm.product.groupedProducts),function(product,index){return _c('li',{key:index,staticClass:\"group-option\"},[_c('div',{staticClass:\"option-thumbnail\"},[_c('div',{staticClass:\"img-square\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":product.imageUrl}})])]),_c('div',{staticClass:\"text\"},[_c('span',{staticClass:\"font-xs\"},[_vm._v(_vm._s(product.id))]),_c('h3',{staticClass:\"option-header\"},[_vm._v(_vm._s(product.shortDescription.NL))])]),_c('span',[_vm._v(\"€ \"+_vm._s(product.defaultPrice))])])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"utlz-order-grouped\">\r\n    <a class=\"group-option selected\" @click=\"expandSelect\">current</a>\r\n    <ul v-if=\"selectExpanded\" class=\"group-select custom-select\">\r\n      <li v-for=\"(product, index) in product.groupedProducts\" :key=\"index\" class=\"group-option\">\r\n        <div class=\"option-thumbnail\">\r\n          <div class=\"img-square\">\r\n            <img :src=\"product.imageUrl\" class=\"img-fluid\">\r\n          </div>\r\n        </div>\r\n        <div class=\"text\">\r\n          <span class=\"font-xs\">{{product.id}}</span>\r\n          <h3 class=\"option-header\">{{product.shortDescription.NL}}</h3>\r\n        </div>\r\n        <span>€ {{product.defaultPrice}}</span>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { Product } from 'src/models/product.model';\r\nexport default {\r\n  props: {\r\n    initialValue: { type: Number, required: false, default: 1 },\r\n    product: { type: Product, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      selectExpanded: false,\r\n      quantityValue: this.initialValue\r\n    }\r\n  },\r\n  methods: {\r\n    expandSelect () {\r\n      this.selectExpanded = !this.selectExpanded;\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderGrouped.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderGrouped.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderGrouped.vue?vue&type=template&id=0d6d0147&\"\nimport script from \"./OrderGrouped.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderGrouped.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-order-volume-discount\"},[_c('div',{staticClass:\"custom-select-box\"},[_c('div',{directives:[{name:\"outside-click\",rawName:\"v-outside-click\",value:({ handler: 'closeDropdown', exclude: ['dropdown']}),expression:\"{ handler: 'closeDropdown', exclude: ['dropdown']}\"}],ref:\"dropdown\",staticClass:\"current\",on:{\"click\":function($event){_vm.selectExpanded = !_vm.selectExpanded}}},[_c('span',{staticClass:\"prefix\"},[_vm._v(\"Staffel\")]),_c('span',{staticClass:\"volume-amount\"},[_vm._v(_vm._s(_vm.volumeDiscount[_vm.selectedIndex].quantity))]),_c('span',{staticClass:\"multiply\"},[_vm._v(\"x\")]),_c('span',{staticClass:\"volume-price\"},[_vm._v(_vm._s(_vm.volumeDiscount[_vm.selectedIndex].price))]),_c('i',{staticClass:\"fa fa-angle-down\"})]),(_vm.selectExpanded)?_c('ul',{staticClass:\"options\"},_vm._l((_vm.volumeDiscount),function(volume,index){return _c('li',{key:index,staticClass:\"option\",class:{ selected: _vm.selectedIndex === index },on:{\"click\":function($event){return _vm.updateSelected(index)}}},[_c('span',{staticClass:\"prefix\"},[_vm._v(\"Staffel\")]),_c('span',{staticClass:\"volume-amount\"},[_vm._v(_vm._s(volume.quantity))]),_c('span',{staticClass:\"multiply\"},[_vm._v(\"x\")]),_c('span',{staticClass:\"volume-price\"},[_vm._v(_vm._s(volume.price))])])}),0):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-order-volume-discount\">\r\n    <div class=\"custom-select-box\">\r\n      <div class=\"current\" @click=\"selectExpanded = !selectExpanded\" v-outside-click=\"{ handler: 'closeDropdown', exclude: ['dropdown']}\" ref=\"dropdown\">\r\n        <span class=\"prefix\">Staffel</span>\r\n        <span class=\"volume-amount\">{{ volumeDiscount[selectedIndex].quantity }}</span>\r\n        <span class=\"multiply\">x</span>\r\n        <span class=\"volume-price\">{{ volumeDiscount[selectedIndex].price }}</span>\r\n        <i class=\"fa fa-angle-down\"></i>\r\n      </div>\r\n      <ul v-if=\"selectExpanded\" class=\"options\">\r\n        <li v-for=\"(volume, index) in volumeDiscount\" :key=\"index\" @click=\"updateSelected(index)\" class=\"option\" v-bind:class=\"{ selected: selectedIndex === index }\">\r\n          <span class=\"prefix\">Staffel</span>\r\n          <span class=\"volume-amount\">{{ volume.quantity }}</span>\r\n          <span class=\"multiply\">x</span>\r\n          <span class=\"volume-price\">{{ volume.price }}</span>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    initialVolume: { type: Object, required: false },\r\n    volumeDiscount: { type: Array, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      selectExpanded: false,\r\n      selectedIndex: 0\r\n    }\r\n  },\r\n  methods: {\r\n    expandSelect () {\r\n      this.selectExpanded = true;\r\n    },\r\n    updateSelected (index) {\r\n      this.selectedIndex = index;\r\n      this.$emit('volumeDiscountChanged', this.volumeDiscount[index].quantity);\r\n    },\r\n    closeDropdown () {\r\n      this.selectExpanded = false;\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderVolumeDiscount.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderVolumeDiscount.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderVolumeDiscount.vue?vue&type=template&id=57d87ae7&\"\nimport script from \"./OrderVolumeDiscount.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderVolumeDiscount.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-quantity-btns\"},[_c('div',{staticClass:\"quantity-btns-wrapper flex-row-nowrap align-center\"},[_c('a',{staticClass:\"quantity-btn button square small decrement fa fa-minus\",on:{\"click\":_vm.decrement}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.quantity),expression:\"quantity\"}],staticClass:\"quantity-fld\",attrs:{\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.quantity)},on:{\"change\":_vm.manualQuantity,\"input\":function($event){if($event.target.composing){ return; }_vm.quantity=$event.target.value}}}),_c('a',{staticClass:\"quantity-btn button square small increment fa fa-plus\",on:{\"click\":_vm.increment}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-quantity-btns\">\r\n    <div class=\"quantity-btns-wrapper flex-row-nowrap align-center\">\r\n      <a class=\"quantity-btn button square small decrement fa fa-minus\" @click=\"decrement\"></a>\r\n      <input class=\"quantity-fld\" type=\"number\" min=\"0\" v-model=\"quantity\" @change=\"manualQuantity\">\r\n      <a class=\"quantity-btn button square small increment fa fa-plus\" @click=\"increment\"></a>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script>\r\nexport default {\r\n  props: {\r\n    initialQuantity: { type: Number, required: false, default: 1 },\r\n    quantityFactor: { type: Number, required: false, default: 1 },\r\n    allowZeroQuantity: { type: Boolean, required: false, default: false }\r\n  },\r\n  data () {\r\n    return {\r\n      quantity: this.initialQuantity\r\n    }\r\n  },\r\n  watch: {\r\n    initialQuantity () {\r\n      this.quantity = this.initialQuantity;\r\n    }\r\n  },\r\n  methods: {\r\n    quantityChanged () {\r\n      this.$emit('quantityChanged', { quantity: parseInt(this.quantity) });\r\n    },\r\n    decrement () {\r\n      if (this.quantity <= this.quantityFactor) {\r\n        if (this.allowZeroQuantity) {\r\n          this.quantity = 0;\r\n          this.quantityChanged();\r\n        } else {\r\n          this.quantity = this.quantityFactor;\r\n        }\r\n      } else {\r\n        this.quantity -= this.quantityFactor;\r\n        this.quantityChanged();\r\n      }\r\n    },\r\n    increment () {\r\n      this.quantity += this.quantityFactor;\r\n      this.quantityChanged();\r\n    },\r\n    manualQuantity () {\r\n      if (Math.sign(this.quantity) <= 0 || this.quantity === '') {\r\n        this.quantity = this.quantityFactor;\r\n      } else if (this.quantity % this.quantityFactor !== 0) {\r\n        this.quantity = Math.ceil(this.quantity / this.quantityFactor) * this.quantityFactor;\r\n      }\r\n      this.quantityChanged();\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuantityButtons.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuantityButtons.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuantityButtons.vue?vue&type=template&id=add65802&\"\nimport script from \"./QuantityButtons.vue?vue&type=script&lang=js&\"\nexport * from \"./QuantityButtons.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-calculation-box utlz-col-sm-12\"},[_c('div',{staticClass:\"box-wrapper\"},[_c('div',{staticClass:\"column-label\"},[_c('div',{staticClass:\"col-row pane-height\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_height_glass_pane' }),expression:\"{ type: 'label', code: 'label_height_glass_pane' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('div',{staticClass:\"input-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paneHeight),expression:\"paneHeight\"}],staticClass:\"pane-height\",attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.paneHeight)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.changeHeight($event)},\"change\":_vm.changeHeight,\"input\":function($event){if($event.target.composing){ return; }_vm.paneHeight=$event.target.value}}}),_c('span',{staticClass:\"unit-mm\"},[_vm._v(_vm._s(_vm.units))])]),_c('span',{staticClass:\"range-values\"},[_vm._v(\"(\"+_vm._s(_vm.minPaneHeight + _vm.units)+\" - \"+_vm._s(_vm.maxPaneHeight + _vm.units)+\")\")])])]),_c('div',{staticClass:\"col-row pane-width\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_pane_width' }),expression:\"{ type: 'label', code: 'label_pane_width' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('div',{staticClass:\"input-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paneWidth),expression:\"paneWidth\"}],staticClass:\"pane-width\",attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.paneWidth)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.changeWidth($event)},\"change\":_vm.changeWidth,\"input\":function($event){if($event.target.composing){ return; }_vm.paneWidth=$event.target.value}}}),_c('span',{staticClass:\"unit-mm\"},[_vm._v(_vm._s(_vm.units))])]),_c('span',{staticClass:\"range-values\"},[_vm._v(\"(\"+_vm._s(_vm.minPaneWidth + _vm.units)+\" - \"+_vm._s(_vm.maxPaneWidth + _vm.units)+\")\")])])]),_c('div',{staticClass:\"col-row panel-totals\"},[(_vm.showPrices && _vm.product.prices.length)?[_c('div',{staticClass:\"col-row\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'price_custom_pane' }),expression:\"{ type: 'label', code: 'price_custom_pane' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('span',[_vm._v(_vm._s(_vm.product.prices[0].price))])])])]:_vm._e(),_c('div',{staticClass:\"col-row\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'total_sqr_mtr' }),expression:\"{ type: 'label', code: 'total_sqr_mtr' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('span',[_vm._v(_vm._s(_vm.sqrMeter + \" \")),_c('span',{staticClass:\"m2\"},[_vm._v(\"m2\")])])])]),(_vm.product.customDecimals.CUSTOM_GLASS_PRICE > 0)?[_c('div',{staticClass:\"col-row\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'custom_glass_price_label' }),expression:\"{ type: 'label', code: 'custom_glass_price_label' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('span',[_vm._v(_vm._s(_vm.formattedPriceCustomGlass))])])])]:_vm._e(),(_vm.showPrices && _vm.product.prices.length)?[_c('div',{staticClass:\"col-row\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'total_price' }),expression:\"{ type: 'label', code: 'total_price' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('span',[_vm._v(_vm._s(_vm.totalFormattedPrice))])])])]:_vm._e()],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-calculation-box utlz-col-sm-12\">\r\n    <div class=\"box-wrapper\">\r\n      <div class=\"column-label\">\r\n        <div class=\"col-row pane-height\">\r\n          <div class=\"cell pane-label\">            \r\n            <span v-translation=\"{ type: 'label', code: 'label_height_glass_pane' }\"></span>            \r\n          </div>\r\n          <div class=\"cell pane-value\">\r\n            <div class=\"input-wrapper\">\r\n              <input class=\"pane-height\" type=\"number\" @keydown.enter=\"changeHeight\" @change=\"changeHeight\" v-model=\"paneHeight\">\r\n              <span class=\"unit-mm\">{{ units }}</span>\r\n            </div>\r\n            <span class=\"range-values\">({{minPaneHeight + units }} - {{ maxPaneHeight + units }})</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"col-row pane-width\">\r\n          <div class=\"cell pane-label\">\r\n            <span v-translation=\"{ type: 'label', code: 'label_pane_width' }\"></span>\r\n          </div>\r\n          <div class=\"cell pane-value\">        \r\n            <div class=\"input-wrapper\">    \r\n              <input class=\"pane-width\" type=\"number\" @keydown.enter=\"changeWidth\" @change=\"changeWidth\" v-model=\"paneWidth\">\r\n              <span class=\"unit-mm\">{{ units }}</span>\r\n            </div>\r\n            <span class=\"range-values\">({{minPaneWidth + units }} - {{ maxPaneWidth + units }})</span>\r\n          </div>\r\n        </div>\r\n        <div class=\"col-row panel-totals\">\r\n          <template v-if=\"showPrices && product.prices.length\">\r\n            <div class=\"col-row\">\r\n              <div class=\"cell pane-label\">\r\n                <span v-translation=\"{ type: 'label', code: 'price_custom_pane' }\"></span>\r\n              </div>\r\n              <div class=\"cell pane-value\">   \r\n                <span>{{ product.prices[0].price }}</span>\r\n              </div>\r\n            </div>\r\n          </template>\r\n          <div class=\"col-row\">\r\n            <div class=\"cell pane-label\">\r\n              <span v-translation=\"{ type: 'label', code: 'total_sqr_mtr' }\"></span>\r\n            </div>\r\n            <div class=\"cell pane-value\">   \r\n              <span>{{ sqrMeter + \" \"}}<span class=\"m2\">m2</span></span>\r\n            </div>\r\n          </div>\r\n          <template v-if=\"product.customDecimals.CUSTOM_GLASS_PRICE > 0\">\r\n            <div class=\"col-row\">\r\n              <div class=\"cell pane-label\">\r\n                <span v-translation=\"{ type: 'label', code: 'custom_glass_price_label' }\"></span>\r\n              </div>\r\n              <div class=\"cell pane-value\">   \r\n                <span>{{ formattedPriceCustomGlass }}</span>\r\n              </div>\r\n            </div>\r\n          </template>\r\n          <template v-if=\"showPrices && product.prices.length\">\r\n            <div class=\"col-row\">\r\n              <div class=\"cell pane-label\">\r\n                <span v-translation=\"{ type: 'label', code: 'total_price' }\"></span>\r\n              </div>\r\n              <div class=\"cell pane-value\">\r\n                <span>{{ totalFormattedPrice }}</span>\r\n              </div>\r\n            </div>\r\n          </template>\r\n        </div>\r\n        </div>        \r\n      </div>\r\n     \r\n    </div>\r\n</template>\r\n\r\n<script>\r\nimport { formatPrice } from 'src/utilities/helpers';\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    product: { type: Object, required: true },\r\n    quantity: { type: Number, required: false, default: 1 }\r\n  },\r\n  data () {\r\n    return {\r\n      minPaneHeight: 850,\r\n      maxPaneHeight: 2700,\r\n      minPaneWidth: 395,\r\n      maxPaneWidth: 2000,\r\n      paneHeight: 850,\r\n      paneWidth: 395,\r\n      units: 'mm'\r\n    };\r\n  },\r\n  watch: {\r\n    quantity (val) {\r\n      this.$emit('changedCalculations', { calcValues: this.calculationValues, totalPrice: this.totalPrice.toFixed(2) });\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['showPrices', 'bespokeGlobalWs']),\r\n    defaultPrice () {\r\n      return this.product.prices.length ? this.product.prices[0].rawPrice : 0;\r\n    },\r\n    calculationValues () {\r\n\r\n      var paneldimensionsLabel = 'Netto Glasmaat: hoogte ';\r\n      var panelWidthLabel = 'breedte ';\r\n\r\n      if (this.bespokeGlobalWs.shopName.toLowerCase() == 'de') {\r\n        paneldimensionsLabel = 'Netto-Glasmaß: höhe '\r\n        panelWidthLabel = 'breite: ';\r\n      }\r\n\r\n      return `${paneldimensionsLabel}${(this.paneHeight - 85) + this.units}, ${panelWidthLabel}${this.paneWidth + this.units}`;\r\n    },\r\n    sqrMeter () {\r\n      let m2 = ((this.paneHeight * this.paneWidth) / 1000000) * this.quantity;\r\n      return m2.toFixed(2);\r\n    },\r\n    totalPrice () {\r\n      let totalPrice = (((this.paneHeight * this.paneWidth) / 1000000) * this.defaultPrice) * this.quantity;\r\n      let customGlassPrice = this.quantity * this.product.customDecimals.CUSTOM_GLASS_PRICE;\r\n      return totalPrice + customGlassPrice;\r\n    },\r\n    totalFormattedPrice () {\r\n      return formatPrice(this.totalPrice);\r\n    },\r\n    formattedPriceCustomGlass () {\r\n      return formatPrice(this.product.customDecimals.CUSTOM_GLASS_PRICE);\r\n    }\r\n  },\r\n  methods: {\r\n    changeHeight () {\r\n      this.paneHeight = this.processValue(this.paneHeight, this.minPaneHeight, this.maxPaneHeight);\r\n      this.$emit('changedCalculations', { calcValues: this.calculationValues, totalPrice: this.totalPrice.toFixed(2) });\r\n    },\r\n    changeWidth () {\r\n      this.paneWidth = this.processValue(this.paneWidth, this.minPaneWidth, this.maxPaneWidth);\r\n      this.$emit('changedCalculations', { calcValues: this.calculationValues, totalPrice:this.totalPrice.toFixed(2) });\r\n    },\r\n    processValue (value, min, max) {\r\n      const val = Math.floor(parseInt(value));\r\n      if (val < min) { return min; }\r\n      else if (val > max) { return max; }\r\n      else { return val };\r\n    }\r\n  },\r\n  created () {\r\n    this.$emit('changedCalculations', { calcValues: this.calculationValues, totalPrice: this.totalPrice.toFixed(2) });;\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CalculationBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CalculationBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CalculationBox.vue?vue&type=template&id=752580c2&\"\nimport script from \"./CalculationBox.vue?vue&type=script&lang=js&\"\nexport * from \"./CalculationBox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-calculation-box canopy-calculator utlz-col-sm-12\"},[_c('div',{staticClass:\"box-wrapper\"},[_c('div',{staticClass:\"column-label\"},[_c('div',{staticClass:\"col-row pane-height\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_canopy_width' }),expression:\"{ type: 'label', code: 'label_canopy_width' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('div',{staticClass:\"input-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.canopyWidth),expression:\"canopyWidth\"}],staticClass:\"pane-height\",attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.canopyWidth)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.changeCanopyWidth($event)},\"change\":_vm.changeCanopyWidth,\"input\":function($event){if($event.target.composing){ return; }_vm.canopyWidth=$event.target.value}}}),_c('span',{staticClass:\"unit-mm\"},[_vm._v(_vm._s(_vm.units))])]),_c('span',{staticClass:\"range-values\"},[_vm._v(\"(\"+_vm._s(_vm.minWidth + _vm.units)+\" - \"+_vm._s(_vm.maxWidth + _vm.units)+\")\")])])]),_c('div',{staticClass:\"col-row panels\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_canopy_planes' }),expression:\"{ type: 'label', code: 'label_canopy_planes' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('div',{staticClass:\"input-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.numberOfPanels),expression:\"numberOfPanels\"}],staticClass:\"total-panels\",attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.numberOfPanels)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.changeNumberOfPanels($event)},\"change\":_vm.changeNumberOfPanels,\"input\":function($event){if($event.target.composing){ return; }_vm.numberOfPanels=$event.target.value}}})]),_c('span',{staticClass:\"range-values\"},[_vm._v(\"(\"+_vm._s(_vm.minPanels)+\" - \"+_vm._s(_vm.maxPanels)+\")\")])])]),_c('div',{staticClass:\"col-row canopy-depth\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_canopy_depth' }),expression:\"{ type: 'label', code: 'label_canopy_depth' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('div',{staticClass:\"input-wrapper\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.canopyDepth),expression:\"canopyDepth\"}],staticClass:\"depth\",attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.canopyDepth)},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.changeCanopyDepth($event)},\"change\":_vm.changeCanopyDepth,\"input\":function($event){if($event.target.composing){ return; }_vm.canopyDepth=$event.target.value}}}),_c('span',{staticClass:\"unit-mm\"},[_vm._v(_vm._s(_vm.units))])]),_c('span',{staticClass:\"range-values\"},[_vm._v(\"(\"+_vm._s(_vm.minDepth + _vm.units)+\" - \"+_vm._s(_vm.maxDepth + _vm.units)+\")\")])])]),_c('div',{staticClass:\"col-row panel-totals\"},[(_vm.showPrices && _vm.product.prices.length)?[_c('div',{staticClass:\"col-row\"},[_c('div',{staticClass:\"cell pane-label\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'total_price' }),expression:\"{ type: 'label', code: 'total_price' }\"}]})]),_c('div',{staticClass:\"cell pane-value\"},[_c('span',[_vm._v(_vm._s(_vm.totalFormattedPrice))])])])]:_vm._e()],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-calculation-box canopy-calculator utlz-col-sm-12\">\r\n    <div class=\"box-wrapper\">\r\n      <div class=\"column-label\">\r\n\r\n        <div class=\"col-row pane-height\">\r\n          <div class=\"cell pane-label\">            \r\n            <span v-translation=\"{ type: 'label', code: 'label_canopy_width' }\"></span>            \r\n          </div>\r\n          <div class=\"cell pane-value\">\r\n            <div class=\"input-wrapper\">\r\n              <input class=\"pane-height\" type=\"number\" @keydown.enter=\"changeCanopyWidth\" @change=\"changeCanopyWidth\" v-model=\"canopyWidth\">\r\n              <span class=\"unit-mm\">{{ units }}</span>\r\n            </div>\r\n            <span class=\"range-values\">({{minWidth + units }} - {{ maxWidth + units }})</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"col-row panels\">\r\n          <div class=\"cell pane-label\">\r\n            <span v-translation=\"{ type: 'label', code: 'label_canopy_planes' }\"></span>\r\n          </div>\r\n          <div class=\"cell pane-value\">        \r\n            <div class=\"input-wrapper\">    \r\n              <input class=\"total-panels\" type=\"number\" @keydown.enter=\"changeNumberOfPanels\" @change=\"changeNumberOfPanels\" v-model=\"numberOfPanels\">\r\n            </div>\r\n            <span class=\"range-values\">({{ minPanels }} - {{ maxPanels }})</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"col-row canopy-depth\">\r\n          <div class=\"cell pane-label\">\r\n            <span v-translation=\"{ type: 'label', code: 'label_canopy_depth' }\"></span>\r\n          </div>\r\n          <div class=\"cell pane-value\">        \r\n            <div class=\"input-wrapper\">    \r\n              <input class=\"depth\" type=\"number\" @keydown.enter=\"changeCanopyDepth\" @change=\"changeCanopyDepth\" v-model=\"canopyDepth\">\r\n              <span class=\"unit-mm\">{{ units }}</span>\r\n            </div>\r\n            <span class=\"range-values\">({{ minDepth + units }} - {{ maxDepth + units }})</span>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"col-row panel-totals\">\r\n          <template v-if=\"showPrices && product.prices.length\">\r\n            <div class=\"col-row\">\r\n              <div class=\"cell pane-label\">\r\n                <span v-translation=\"{ type: 'label', code: 'total_price' }\"></span>\r\n              </div>\r\n              <div class=\"cell pane-value\">\r\n                <span>{{ totalFormattedPrice }}</span>\r\n              </div>\r\n            </div>\r\n          </template>\r\n        </div>\r\n        </div>        \r\n      </div>\r\n     \r\n    </div>\r\n</template>\r\n\r\n<script>\r\nimport { formatPrice } from 'src/utilities/helpers';\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    product: { type: Object, required: true },\r\n    quantity: { type: Number, required: false, default: 1 }\r\n  },\r\n  data () {\r\n    return {\r\n      minWidth: 1,\r\n      maxWidth: 10000, //???\r\n      minPanels: 0,\r\n      maxPanels: 0, //????\r\n      minPanelWidth: 300, //????\r\n      maxPanelWidth: 780, // Max panel width is 750, but take 30 extra into account for the edge overlay\r\n      minDepth: 1, //????\r\n      maxDepth: 3000, //????\r\n\r\n      canopyWidth: 5000,\r\n      numberOfPanels: 1,\r\n      canopyDepth: 100, //????\r\n\r\n      units: 'mm',\r\n      labelCanopyWidth: window.vue.translations.label.label_canopy_width,\r\n      labelCanopyPlanes: window.vue.translations.label.label_canopy_planes,\r\n      labelCanopyDepth: window.vue.translations.label.label_canopy_depth,\r\n      labelCanopyGlassLength: window.vue.translations.label.labelCanopyGlassLength,\r\n      labelCanopyGlassWidth: window.vue.translations.label.labelCanopyGlassWidth,\r\n      labelNumberOfGlassPanels: window.vue.translations.label.labelNumberOfGlassPanels\r\n    };\r\n  },\r\n  watch: {\r\n    quantity (val) {\r\n      this.$emit('changedCanopyCalculations', { calcValues: this.calculationValues, totalPrice: this.totalPrice.toFixed(2) });\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['showPrices', 'bespokeGlobalWs']),\r\n    defaultPrice () {\r\n      return this.product.prices.length ? this.product.prices[0].rawPrice : 0;\r\n    },\r\n    calculationValues () {\r\n      // Add 20mm to the depth as required for the extra overlap\r\n      var labelCanopyGlassLength = `${this.labelCanopyGlassLength}: ${(this.canopyDepth + 20)}${this.units}`;\r\n      var glasPanelWidth = (this.canopyWidth / this.numberOfPanels).toFixed(2);\r\n      var labelCanopyGlassWidth = `${this.labelCanopyGlassWidth}: ${glasPanelWidth}${this.units}`;\r\n      var labelNumberOfGlassPanels = `${this.labelNumberOfGlassPanels}: ${this.numberOfPanels}`;\r\n\r\n      if (this.bespokeGlobalWs.shopName.toLowerCase() == 'de') {\r\n        //paneldimensionsLabel = 'Netto-Glasmaß: ' //?????\r\n        //panelWidthLabel = 'Paneelbreite: '; // ????????\r\n      }\r\n\r\n      return `${labelCanopyGlassLength}, ${labelCanopyGlassWidth}, ${labelNumberOfGlassPanels}`;\r\n    },\r\n    totalPrice () {\r\n      // TODO\r\n      // HOW TO CALCULATE TOTAL PRICE?\r\n      // let totalPrice = (((this.paneHeight * this.numberOfPanels) / 1000000) * this.defaultPrice) * this.quantity;\r\n      // let customGlassPrice = this.quantity * this.product.customDecimals.CUSTOM_GLASS_PRICE;\r\n      // return totalPrice + customGlassPrice;\r\n      return 12345.00\r\n    },\r\n    totalFormattedPrice () {\r\n      return formatPrice(this.totalPrice);\r\n    }\r\n  },\r\n  methods: {\r\n    changeCanopyWidth () {\r\n      this.canopyWidth = this.processValue(this.canopyWidth, this.minWidth, this.maxWidth);\r\n      \r\n      // After changing the width, adjust the number of panels accordingly\r\n      this.setNumberOfGlassPanelRestrictions();\r\n\r\n      // Check if the current number of panels is still in range, and if \r\n      // not adjust it to the nearest min or max number of allowed panels\r\n      if (this.numberOfPanels < this.minPanels) {\r\n        this.numberOfPanels = this.minPanels;\r\n      } else if (this.numberOfPanels > this.maxPanels) {\r\n        this.numberOfPanels = this.maxPanels;\r\n      }\r\n\r\n      this.emitValues();\r\n    },\r\n    changeNumberOfPanels () {\r\n      this.numberOfPanels = this.processValue(this.numberOfPanels, this.minPanels, this.maxPanels);\r\n      this.emitValues();\r\n    },\r\n    changeCanopyDepth () {\r\n      this.canopyDepth = this.processValue(this.canopyDepth, this.minDepth, this.maxDepth);\r\n      this.emitValues();\r\n    },\r\n    setNumberOfGlassPanelRestrictions() {\r\n      var canopyWidth = this.canopyWidth - 60; // Width minus 60 for the side girders\r\n      this.minPanels = Math.ceil(canopyWidth / this.maxPanelWidth);\r\n      this.maxPanels = Math.ceil(canopyWidth / this.minPanelWidth);\r\n    },\r\n    emitValues() {\r\n      console.log(this.totalPrice);\r\n      this.$emit('changedCanopyCalculations', { calcValues: this.calculationValues, totalPrice: this.totalPrice.toFixed(2) });\r\n    },\r\n    processValue (value, min, max) {\r\n      const val = Math.floor(parseInt(value));\r\n      if (val < min) { return min; }\r\n      else if (val > max) { return max; }\r\n      else { return val };\r\n    }\r\n  },\r\n  created () {\r\n    // Initialize the min and max number of allowed panels, based on the default value of the canopy width\r\n    this.setNumberOfGlassPanelRestrictions();\r\n\r\n    // Set the default number of panels for the initialized values\r\n    this.numberOfPanels = Math.ceil(this.canopyWidth / this.maxPanelWidth);\r\n    this.emitValues();\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CanopyCalculator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CanopyCalculator.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CanopyCalculator.vue?vue&type=template&id=32732218&\"\nimport script from \"./CanopyCalculator.vue?vue&type=script&lang=js&\"\nexport * from \"./CanopyCalculator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"cmp-order-product normalize-headers\" :class=\"parentClassRef\">\r\n    \r\n    <!-- BESPOKE DEPG -->\r\n    <utlz-calculation-box :quantity=\"quantity\" :product=\"product\" v-if=\"useCalculationBox && product.prices.length\" @changedCalculations=\"changedCalculations($event)\"></utlz-calculation-box>\r\n    <utlz-canopy-calculator :quantity=\"quantity\" :product=\"product\" v-if=\"useCanopyCalculator && product.prices.length\" @changedCanopyCalculations=\"changedCanopyCalculations($event)\"></utlz-canopy-calculator>\r\n    <!-- END BESPOKE DEPG -->\r\n\r\n    <utlz-order-normal\r\n      v-if=\"orderType === 'normal'\"\r\n      @orderNormal=\"orderProductNormal($event)\"\r\n    ></utlz-order-normal>\r\n\r\n    <utlz-order-saleunit\r\n      v-if=\"orderType === 'saleUnit'\"\r\n      :saleUnit=\"product.saleUnit\"\r\n    ></utlz-order-saleunit>\r\n\r\n    <utlz-order-units\r\n      v-if=\"orderType === 'units' && product.stock\"\r\n      :units=\"product.units\"\r\n      :stockTotal=\"product.stock.stockTotal\"\r\n      :selectedUnitCode=\"selectedUnitCode\"\r\n      @unitsChanged=\"unitsChanged($event)\"\r\n    ></utlz-order-units>\r\n\r\n    <utlz-order-grouped v-if=\"orderType === 'grouped'\" :product=\"product\"></utlz-order-grouped>\r\n\r\n    <utlz-order-volume-discount\r\n      v-if=\"orderType === 'volumeDiscount'\"\r\n      :volumeDiscount=\"product.prices\"\r\n      @volumeDiscountChanged=\"volumeDiscountChanged($event)\">\r\n    </utlz-order-volume-discount>\r\n\r\n    <!-- BESPOKE DEPG-31: We use order comment in the framework, but only because we \r\n        need to send the value from utlz-calculation-box as an order comment, so disable default order comment -->\r\n     <input v-if=\"useOrderComment\" type=\"text\" :value=\"orderCommentField\" ref=\"orderComment\" class=\"order-comment\" :placeholder=\"commentPh\"> \r\n    <!-- END BESPOKE DEPG-31 -->\r\n\r\n    <!-- BESPOKE DEPG-31: Added opion to show clickThrough button instead of the default order product -->\r\n    <template v-if=\"useClickThroughButton\">\r\n      <a\r\n        v-if=\"useClickThroughButton\"\r\n        :href=\"product.targetUrl\"          \r\n        class=\"button add-to-cart-btn small\">\r\n        <i class=\"uws-icon uws-cart\" aria-hidden=\"true\"></i>\r\n        <span v-translation=\"{ type: 'button', code: 'button_order'}\"></span>\r\n      </a>\r\n      <template v-if=\"showQuotationButton\">\r\n        <a class=\"add-to-quote-btn\" @click=\"addProductToQuotationEvent(product.id)\">\r\n          <i class=\"fa fa-file-text-o\"></i>\r\n          <template v-if=\"useQuoteButtonText\">\r\n            <span v-translation=\"{ code: 'button_addto_quotes', type: 'button' }\"></span>\r\n          </template>\r\n        </a>\r\n      </template>\r\n    </template>\r\n\r\n    <template v-else>\r\n      <!-- BESPOKE DEPG-31: Added extra class calc-box if calculationbox or canopy calculator are being used -->\r\n      <div class=\"order-product-wrapper flex-row-nowrap\" :class=\"{ \r\n        'disabled': stockLimit && !isValidQuantity, \r\n        'calc-box': (useCalculationBox || useCanopyCalculator) && product.prices.length \r\n        }\">\r\n\r\n        <!-- END BESPOKE DEPG-31 -->\r\n        <utlz-quantity-buttons\r\n          :initialQuantity=\"quantity\"\r\n          :allowZeroQuantity=\"true\"\r\n          :quantityFactor=\"quantityFactor\"\r\n          @quantityChanged=\"quantityChanged($event)\">\r\n        </utlz-quantity-buttons>\r\n\r\n        <!-- BESPOKE: DEPA: Added text button option -->\r\n          <a v-if=\"useOrderMode && !useTextButton\" @click=\"orderProduct\" class=\"button add-to-cart-btn small\">\r\n            <i class=\"uws-icon uws-cart\" aria-hidden=\"true\"></i>\r\n          </a>\r\n          <a\r\n            v-if=\"useOrderMode && useTextButton\"\r\n            @click=\"orderProduct\"          \r\n            class=\"inputbutton btn-u btn-u-sea-shop btn-u-lg text-order-btn\">\r\n            <i class=\"uws-icon uws-cart\" aria-hidden=\"true\"></i>\r\n            <span v-translation=\"{ type: 'button', code: 'button_order'}\"></span>\r\n          </a>\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n        <!-- BESPOKE DEPA: Add button to add product to quotationlist -->\r\n        <template v-if=\"showQuotationButton\">\r\n          <a class=\"add-to-quote-btn\" @click=\"addProductToQuotationEvent(product.id)\">\r\n            <i class=\"fa fa-file-text-o\"></i>\r\n            <template v-if=\"useQuoteButtonText\">\r\n              <span v-translation=\"{ code: 'button_addto_quotes', type: 'button' }\"></span>\r\n            </template>\r\n          </a>\r\n        </template>\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n        <!-- Displays stocklimit exceeded tooltip -->\r\n        <transition name=\"fade\">\r\n          <template v-if=\"stockLimit && !isValidQuantity\">\r\n            <div class=\"utlz-tooltip stock-limit danger\">\r\n              <p v-translation=\"{ type: 'label', code: 'label_exceeds_stock_limit' }\"></p>\r\n            </div>\r\n          </template>\r\n        </transition>\r\n\r\n      </div>\r\n    </template>\r\n    <!-- END BESPOKE DEPG-31 -->\r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport OrderNormal from 'src/components/webshop/order-product/blocks/OrderNormal.vue';\r\nimport OrderSaleUnit from 'src/components/webshop/order-product/blocks/OrderSaleUnit.vue';\r\nimport OrderUnits from 'src/components/webshop/order-product/blocks/OrderUnits.vue';\r\nimport OrderGrouped from 'src/components/webshop/order-product/blocks/OrderGrouped.vue';\r\nimport OrderVolumeDiscount from 'src/components/webshop/order-product/blocks/OrderVolumeDiscount.vue';\r\nimport QuantityButtons from 'src/components/webshop/order-product/blocks/QuantityButtons.vue';\r\n// BESPOKE DEPG\r\nimport CalculationBox from './../../../bespoke-components/CalculationBox.vue';\r\nimport CanopyCalculator from './../../../bespoke-components/CanopyCalculator.vue';\r\n// END BESPOKE DEPG\r\nimport { mapGetters, mapActions } from 'vuex';\r\n\r\nexport default {\r\n  components: {\r\n    'utlz-order-normal': OrderNormal,\r\n    'utlz-order-saleunit': OrderSaleUnit,\r\n    'utlz-order-units': OrderUnits,\r\n    'utlz-order-grouped': OrderGrouped,\r\n    'utlz-order-volume-discount': OrderVolumeDiscount,\r\n    'utlz-quantity-buttons': QuantityButtons,\r\n    // BESPOKE DEPG\r\n    'utlz-calculation-box': CalculationBox,\r\n    'utlz-canopy-calculator': CanopyCalculator\r\n    // END BESPOKE DEPG\r\n  },\r\n  props: {\r\n    product: { type: Object, required: true },\r\n    initialQuantity: { type: Number, required: false, default: 1 },\r\n    initialUnitCode: { type: String, required: false },\r\n    useOrderComment: { type: Boolean, required: false, default: false },\r\n    orderComment: { type: String, required: false },\r\n    useOrderMode: { type: Boolean, default: true },\r\n    totalOrderLinesQuantity: { type: Number, required: false, default: null },\r\n    allowZeroQuantity: { type: Boolean, required: false, default: false },\r\n    parentClassRef: { type: String, default: '', required: false },\r\n    // BESPOKE DEPA\r\n    useTextButton: { type: Boolean, required: false, default: false },\r\n    useClickThroughButton: { type: Boolean, required: false, default: false },\r\n    useCalculationBox: { type: Boolean, required: false, default: false },\r\n    useCanopyCalculator: { type: Boolean, required: false, default: false },\r\n    showQuotationButton: { type: Boolean, required: false, default: true },\r\n    useQuoteButtonText: { type: Boolean, required: false, default: false }\r\n    // END BESPOKE DEPA\r\n  },\r\n  data () {\r\n    return {\r\n      quantity: this.initialQuantity,\r\n      quantityFactor: 1,\r\n      orderType: 'normal',\r\n      selectedUnitCode: '',\r\n      // BESPOKE\r\n      calculationsMsg: '',\r\n      totalPrice: 0,\r\n      commentPh: window.vue.translations.label.label_orderline_comment_ph\r\n      // END BESPOKE\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters(['stockLimit', 'showStock']),\r\n    ...mapGetters('quotations', ['selectedQuote']),\r\n    orderCommentField () {\r\n      return this.orderComment;\r\n    },\r\n    isValidQuantity () {\r\n      if (this.stockLimit) {\r\n        if (this.useOrderMode || this.totalOrderLinesQuantity === null) {\r\n          return this.quantity <= this.product.stock.stockTotal;\r\n        } else {\r\n          return this.totalOrderLinesQuantity <= this.product.stock.stockTotal;\r\n        }\r\n      } else {\r\n        return true;\r\n      }\r\n    }\r\n  },\r\n  watch: {\r\n    product () {\r\n      this.setOrderType();\r\n      this.setOrderQuantities();\r\n    }\r\n  },\r\n  methods: {\r\n    // BESPOKE DEPA\r\n    ...mapActions('quotations', ['addProductToQuotation', 'showSelectQuotesTool', 'promptUserForQuote']),\r\n    addProductToQuotationEvent() {\r\n      var quoteProduct = { \r\n        productId: this.product.id,\r\n        productDescription: this.product.shortDescription,\r\n        quantity: this.getComputedQuantity(this.quantity),\r\n        productPrice: this.product.prices[0].rawPrice,\r\n        comment: '',\r\n        totalPrice: ''\r\n      };\r\n\r\n      // If it is a custom glass product, add the measurements in the comments and the total price\r\n      if (this.useCalculationBox || this.useCanopyCalculator) {\r\n        quoteProduct.comment = this.calculationsMsg;\r\n        quoteProduct.productPrice = this.totalPrice / quoteProduct.quantity;\r\n      }\r\n\r\n      if (!this.selectedQuote) {\r\n        this.promptUserForQuote(quoteProduct);\r\n      } else {\r\n        this.addProductToQuotation(quoteProduct);\r\n      }\r\n    },\r\n    changedCalculations ({ calcValues, totalPrice }) {\r\n      this.calculationsMsg = calcValues;\r\n      this.totalPrice = totalPrice;\r\n    },\r\n    changedCanopyCalculations({ calcValues, totalPrice }) {\r\n      this.calculationsMsg = calcValues;\r\n      this.totalPrice = totalPrice;\r\n    },\r\n    // END BESPOKE DEPA\r\n    setOrderType () {\r\n      let type = 'normal';\r\n      if (this.product.units) {\r\n        type = 'units';\r\n      } else if (this.product.saleUnit > 1) {\r\n        type = 'saleUnit';\r\n      }\r\n      this.orderType = type;\r\n    },\r\n    setOrderQuantities () {\r\n      switch (this.orderType) {\r\n        case 'normal':\r\n          this.quantityFactor = 1;\r\n          this.quantity = this.initialQuantity > this.quantityFactor || this.allowZeroQuantity ? 0 : this.quantityFactor;\r\n          break;\r\n        case 'saleUnit':\r\n          const initialQuantity = this.initialQuantity * this.product.saleUnit;\r\n          this.quantityFactor = this.product.saleUnit;\r\n          this.quantity = initialQuantity > this.quantityFactor || this.allowZeroQuantity ? 0 : this.quantityFactor;\r\n          break;\r\n        case 'volumeDiscount':\r\n          this.quantityFactor = this.product.prices[0].quantity;\r\n          this.quantity = this.initialQuantity > this.quantityFactor || this.allowZeroQuantity ? 0 : this.quantityFactor;\r\n          break;\r\n        case 'units':\r\n          let index = 0;\r\n          if (this.initialUnitCode) {\r\n            this.product.units.filter((unit, i) => {\r\n              if (unit.code === this.initialUnitCode) {\r\n                index = i;\r\n              }\r\n            });\r\n          }\r\n          this.selectedUnitCode = this.product.units[index].code;\r\n          this.quantityFactor = this.product.units[index].quantity;\r\n          this.quantity = this.initialQuantity > 1 || this.allowZeroQuantity ? 0 * this.quantityFactor : this.quantityFactor;\r\n          break;\r\n      }\r\n    },\r\n    orderProduct () {\r\n      let payload = this.getOrderPayload();\r\n      this.addToCart(payload)\r\n        .then(res => {\r\n          this.quantity = this.quantityFactor;\r\n        });\r\n    },\r\n    getOrderPayload () {\r\n      // BESPOKE DEPG-31\r\n      // If we use the calculationsbox, we need to send the calculation box values as an order comment\r\n      let payload = {\r\n        prod_code: this.product.id,\r\n        ord_qty: this.getComputedQuantity(this.quantity),\r\n        unit_code: this.selectedUnitCode,\r\n        prod_comment: this.useOrderComment ? this.$refs.orderComment.value : ''\r\n      };\r\n\r\n      if (this.useCalculationBox || this.useCanopyCalculator) {\r\n        payload.prod_comment = this.calculationsMsg;\r\n        payload.total_price = this.totalPrice\r\n      }\r\n      return payload;\r\n      // END BESPOKE DEPG-31      \r\n    },\r\n    getComputedQuantity (quantity) {\r\n      let computedQuantity = quantity;\r\n      if (this.orderType === 'units') {\r\n        computedQuantity = this.quantity / this.quantityFactor;\r\n      } else if (this.orderType === 'volumeDiscount' && this.product.saleUnit > 1) {\r\n        computedQuantity = this.quantity / this.product.saleUnit;\r\n      } else if (this.orderType === 'saleUnit') {\r\n        computedQuantity = this.quantity / this.product.saleUnit;\r\n      }\r\n      return computedQuantity;\r\n    },\r\n    quantityChanged ({ quantity }) {\r\n      this.quantity = quantity;\r\n      if (!this.useOrderMode) {\r\n        this.$emit('quantityChanged', {\r\n          id: this.product.id,\r\n          unitCode: this.selectedUnitCode,\r\n          computedQuantity: this.getComputedQuantity(this.quantity)\r\n        });\r\n      }\r\n    },\r\n    unitsChanged ({ quantity, unitCode }) {\r\n      this.selectedUnitCode = unitCode;\r\n      this.quantity = this.allowZeroQuantity ? 0 : quantity;\r\n      this.quantityFactor = quantity;\r\n      if (!this.useOrderMode) {\r\n        this.$emit('unitsChanged', {\r\n          unitCode: unitCode,\r\n          quantity: quantity,\r\n          computedQuantity: this.getComputedQuantity(this.quantity)\r\n        });\r\n      }\r\n    },\r\n    volumeDiscountChanged (quantity) {\r\n      this.quantity = quantity;\r\n      this.quantityFactor = quantity;\r\n    },\r\n    ...mapActions('shoppingCart', ['addToCart'])\r\n  },\r\n  created () {\r\n    this.setOrderType();\r\n    this.setOrderQuantities();\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderProduct.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderProduct.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrderProduct.vue?vue&type=template&id=16d8b263&\"\nimport script from \"./OrderProduct.vue?vue&type=script&lang=js&\"\nexport * from \"./OrderProduct.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showStock)?_c('div',{staticClass:\"cmp-product-stock utlz-reset\"},[_c('div',{staticClass:\"stock-wrapper\"},[(_vm.stock !== null)?[(_vm.stockType === 1)?[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({type: 'label', code: 'label_stock_indicator'}),expression:\"{type: 'label', code: 'label_stock_indicator'}\"}],staticClass:\"stock-label\"},[_vm._v(\":\")]),_c('span',{staticClass:\"stock-count\"},[_vm._v(_vm._s(_vm.stockTotal))])]:(_vm.stockType === 4)?[_c('div',{staticClass:\"stock-indicators\"},[_c('img',{attrs:{\"src\":'/' + _vm.stockIndicator.image}}),_c('span',[_vm._v(_vm._s(_vm.stockIndicator.description))])])]:_vm._e()]:(_vm.showStock)?_c('div',{staticClass:\"stock-status-wrapper text-placeholder pulse\"},[_c('span',{staticClass:\"loader\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_retrieving_stock' }),expression:\"{ type: 'label', code: 'label_retrieving_stock' }\"}]})]):_vm._e()],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"showStock\" class=\"cmp-product-stock utlz-reset\">\r\n    <div class=\"stock-wrapper\">\r\n      <template v-if=\"stock !== null\">\r\n        <template v-if=\"stockType === 1\">\r\n          <span class=\"stock-label\" v-translation=\"{type: 'label', code: 'label_stock_indicator'}\">:</span>\r\n          <span class=\"stock-count\">{{ stockTotal }}</span>\r\n        </template>\r\n        <template v-else-if=\"stockType === 4\">\r\n          <div class=\"stock-indicators\">\r\n            <img :src=\"'/' + stockIndicator.image\" />\r\n            <span>{{ stockIndicator.description }}</span>\r\n          </div>\r\n        </template>\r\n      </template>\r\n      <div v-else-if=\"showStock\" class=\"stock-status-wrapper text-placeholder pulse\">\r\n        <span class=\"loader\"></span>\r\n        <span v-translation=\"{ type: 'label', code: 'label_retrieving_stock' }\"></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    stock: { type: Object, required: false }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['showStock', 'stockIndicators', 'stockType']),\r\n    stockTotal () {\r\n      return this.stock.stockTotal < 0 ? 0 : this.stock.stockTotal;\r\n    },\r\n    stockIndicator () {\r\n      let indicatorIndex = 0;\r\n      this.stockIndicators.forEach((indicator, index) => {\r\n        if (indicator.quantity <= this.stock.stockTotal) {\r\n          indicatorIndex = index;\r\n        }\r\n      });\r\n      return this.stockIndicators[indicatorIndex];\r\n      return this.stockIndicators.find(indicator => this.stock.stockTotal >= indicator.quantity);\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductStock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductStock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductStock.vue?vue&type=template&id=201cd484&\"\nimport script from \"./ProductStock.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductStock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showPrices)?_c('div',{staticClass:\"cmp-product-price\",class:_vm.parentClassRef},[_c('ul',{staticClass:\"price-list flex-row-nowrap align-items-baseline\"},[_c('li',{staticClass:\"default\"},[_c('span',[_vm._v(_vm._s(_vm.prices.price))])]),(_vm.prices.isSalesAction)?_c('li',{staticClass:\"original salesaction\"},[_c('span',[_vm._v(_vm._s(_vm.prices.basePrice))])]):_vm._e()])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-product-price\" v-if=\"showPrices\" :class=\"parentClassRef\">\r\n    <ul class=\"price-list flex-row-nowrap align-items-baseline\">\r\n      <li class=\"default\">\r\n        <span>{{ prices.price }}</span>\r\n      </li>\r\n      <li v-if=\"prices.isSalesAction\" class=\"original salesaction\">\r\n        <span>{{ prices.basePrice }}</span>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    prices: { type: Object, required: false },\r\n    parentClassRef: { type: String, default: '', required: false }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['showPrices'])\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductPrice.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductPrice.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductPrice.vue?vue&type=template&id=2f05dff1&\"\nimport script from \"./ProductPrice.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductPrice.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showOrderProduct)?_c('div',{staticClass:\"cmp-product-variant\",class:{ 'stock-counter': _vm.stockType === 1 }},[_c('div',{staticClass:\"variant-key\"},[_c('span',[_vm._v(_vm._s(_vm.variantValue))])]),_c('div',{staticClass:\"custom-select-box\"},[_c('div',{directives:[{name:\"outside-click\",rawName:\"v-outside-click\",value:({ handler: 'closeDropdown', exclude: ['dropdown']}),expression:\"{ handler: 'closeDropdown', exclude: ['dropdown']}\"}],ref:\"dropdown\",staticClass:\"current\",on:{\"click\":function($event){return _vm.openDropdown()}}},[_c('span',{staticClass:\"variant-value\"},[_vm._v(_vm._s(_vm.product.properties[_vm.variantValue]))]),(_vm.showStock)?_c('utlz-product-stock',{attrs:{\"stock\":_vm.product.stock}}):_vm._e(),(_vm.product.prices.length)?_c('utlz-product-price',{attrs:{\"prices\":_vm.product.prices[0]}}):_vm._e(),_c('i',{staticClass:\"fa fa-angle-down\"})],1),(_vm.dropdownOpen)?_c('ul',{staticClass:\"options\"},_vm._l((_vm.computedProductVariants),function(product,index){return _c('li',{key:index,staticClass:\"option\",class:{ selected: _vm.selectedIndex === index },on:{\"click\":function($event){return _vm.updateSelected(index)}}},[_c('span',{staticClass:\"grp-val\"},[_vm._v(_vm._s(product.properties[_vm.variantValue]))]),(_vm.showStock)?_c('utlz-product-stock',{attrs:{\"stock\":product.stock}}):_vm._e(),(product.prices.length)?_c('utlz-product-price',{attrs:{\"prices\":product.prices[0]}}):_vm._e()],1)}),0):_vm._e()])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div v-if=\"showOrderProduct\" class=\"cmp-product-variant\" :class=\"{ 'stock-counter': stockType === 1 }\">\r\n    <div class=\"variant-key\">\r\n      <span>{{ variantValue }}</span>\r\n    </div>\r\n    <div class=\"custom-select-box\">\r\n      <div class=\"current\" @click=\"openDropdown()\" v-outside-click=\"{ handler: 'closeDropdown', exclude: ['dropdown']}\" ref=\"dropdown\">\r\n        <span class=\"variant-value\">{{ product.properties[variantValue] }}</span>\r\n        <utlz-product-stock v-if=\"showStock\" :stock=\"product.stock\"></utlz-product-stock>\r\n        <utlz-product-price v-if=\"product.prices.length\" :prices=\"product.prices[0]\"></utlz-product-price>\r\n        <i class=\"fa fa-angle-down\"></i>\r\n      </div>\r\n      <ul v-if=\"dropdownOpen\" class=\"options\">\r\n        <li\r\n          v-for=\"(product, index) in computedProductVariants\"\r\n          :key=\"index\" @click=\"updateSelected(index)\"\r\n          :class=\"{ selected: selectedIndex === index }\"\r\n          class=\"option\"\r\n          >\r\n          <span class=\"grp-val\">{{ product.properties[variantValue] }}</span>\r\n          <utlz-product-stock v-if=\"showStock\" :stock=\"product.stock\"></utlz-product-stock>\r\n          <utlz-product-price v-if=\"product.prices.length\" :prices=\"product.prices[0]\"></utlz-product-price>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex';\r\nimport { Product } from 'src/models/product.model';\r\nimport ProductStock from 'src/components/webshop/product-stock/ProductStock.vue';\r\nimport ProductPrice from 'src/components/webshop/product-price/ProductPrice.vue';\r\nexport default {\r\n  components: {\r\n    'utlz-product-stock': ProductStock,\r\n    'utlz-product-price': ProductPrice\r\n  },\r\n  props: {\r\n    product: { type: Product, required: true },\r\n    productVariants: { type: Array, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      variantValue: Object.keys(this.product.properties)[0],\r\n      dropdownUsed: false,\r\n      dropdownOpen: false,\r\n      selectedIndex: 0\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['showStock', 'showOrderProduct', 'showPrices', 'stockType']),\r\n    computedProductVariants () {\r\n      return this.productVariants.length ? this.productVariants : [this.product];\r\n    }\r\n  },\r\n  methods: {\r\n    ...mapActions('elastic', ['getProductVariants']),\r\n    openDropdown () {\r\n      if (!this.dropdownUsed) {\r\n        this.getProductVariants({ variantCode: this.product.id, productId: this.product.id });\r\n        this.dropdownUsed = true;\r\n      };\r\n      this.dropdownOpen = !this.dropdownOpen;\r\n    },\r\n    updateSelected (index) {\r\n      if (this.productVariants.length) {\r\n        this.selectedIndex = index;\r\n        this.$emit('selectedProduct', this.productVariants[index].id);\r\n      }\r\n    },\r\n    closeDropdown () {\r\n      this.dropdownOpen = false;\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductVariant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductVariant.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductVariant.vue?vue&type=template&id=5a5f0e01&\"\nimport script from \"./ProductVariant.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductVariant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-favorites-control\"},[((!_vm.isFavoriteComputed && !_vm.touched) || (_vm.touched && !_vm.isFavorite))?_c('a',{staticClass:\"favorites-icon add-to\",on:{\"click\":function($event){return _vm.addToFavorites()}}},[_c('i',{staticClass:\"fa fa-heart-o\",attrs:{\"aria-hidden\":\"true\"}}),(_vm.useDescription)?_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_add_to_favorites' }),expression:\"{ type: 'button', code: 'button_add_to_favorites' }\"}],staticClass:\"add-to-desc\"}):_vm._e()]):_c('a',{staticClass:\"favorites-icon remove\",on:{\"click\":function($event){return _vm.removeFromFavorites()}}},[_c('i',{staticClass:\"fa fa-heart\",attrs:{\"aria-hidden\":\"true\"}}),(_vm.useDescription)?_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_remove_from_favorites' }),expression:\"{ type: 'button', code: 'button_remove_from_favorites' }\"}],staticClass:\"remove-desc\"}):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-favorites-control\">\r\n\r\n    <a v-if=\"(!isFavoriteComputed && !touched) || (touched && !isFavorite)\"\r\n      @click=\"addToFavorites()\"\r\n      class=\"favorites-icon add-to\">\r\n      <i class=\"fa fa-heart-o\" aria-hidden=\"true\"></i>\r\n      <span v-if=\"useDescription\" v-translation=\"{ type: 'button', code: 'button_add_to_favorites' }\" class=\"add-to-desc\"></span>\r\n    </a>\r\n\r\n    <a v-else\r\n      @click=\"removeFromFavorites()\"\r\n      class=\"favorites-icon remove\">\r\n      <i class=\"fa fa-heart\" aria-hidden=\"true\"></i>\r\n      <span v-if=\"useDescription\" v-translation=\"{ type: 'button', code: 'button_remove_from_favorites' }\" class=\"remove-desc\"></span>\r\n    </a>\r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport axios from 'axios';\r\nimport { mapGetters } from 'vuex';\r\nimport { Product } from 'src/models/product.model';\r\nexport default {\r\n  props: {\r\n    useDescription: { type: Boolean, required: false, default: false },\r\n    product: { type: Product, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      touched: false,\r\n      isFavorite: false\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters(['addProductToListEndpoint', 'removeProductFromListEndpoint', 'customerId', 'clientCode']),\r\n    isFavoriteComputed () {\r\n      return this.product.includedInCustomerLists.includes('favorites');\r\n    }\r\n  },\r\n  methods: {\r\n    addToFavorites () {\r\n      const endpoint = `${this.addProductToListEndpoint}?productCode=${this.product.id}&debtorId=${this.customerId}&listId=favorites`;\r\n      axios.post(endpoint).then(res => {\r\n        this.touched = !this.touched;\r\n        this.isFavorite = true;\r\n      });\r\n    },\r\n    removeFromFavorites () {\r\n      const endpoint = `${this.removeProductFromListEndpoint}?productCode=${this.product.id}&debtorId=${this.customerId}&listId=favorites`;\r\n      axios.delete(endpoint).then(res => {\r\n        this.touched = !this.touched;\r\n        this.isFavorite = false;\r\n      });\r\n    }\r\n  },\r\n  created () {\r\n    this.isFavorite = this.product.includedInCustomerLists.includes('favorites');\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoritesControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoritesControl.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FavoritesControl.vue?vue&type=template&id=accaba00&\"\nimport script from \"./FavoritesControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FavoritesControl.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"cmp-product-list-item utlz-col-sm-4\" :class=\"'utlz-col-lg-' + blockSize\">\r\n    <div class=\"utlz-row utlz-no-gutters utlz-gutters-sm item-wrapper\">\r\n      <template v-if=\"product.prices != 'undefined'\">\r\n        <span v-if=\"isSalesAction\" v-translation=\"{ type: 'label', code: 'label_sales_action' }\" class=\"action-banner\"></span>\r\n      </template>\r\n      <div class=\"utlz-col-3 utlz-col-sm-12 img-container\">\r\n\r\n          <utlz-favorites-control v-if=\"showFavorites\" :product=\"product\"></utlz-favorites-control>\r\n\r\n          <template\r\n            v-if=\"product.productImageBanners.length && screenWidth >= 576\">\r\n            <div class=\"product-banners\">\r\n              <div v-for=\"(banner, index) in productImageBanners\" :key=\"'prod-banner-wrapper-' + index\" :class=\"{ [banner.position]: true }\" class=\"prod-banner-wrapper\">\r\n                <div v-for=\"(bannerVal, ind) in banner.values\" :key=\"'prod-banner-wrapper-' + ind\">\r\n                  <span class=\"text-banner\" v-if=\"bannerVal.Type === 0\" :style=\"'background-color:' + bannerVal.Color + ';color: ' + bannerVal.TextColor\">\r\n                    {{ bannerVal.Text }}\r\n                  </span>\r\n                  <img class=\"img-banner\" v-if=\"bannerVal.Type === 1\" :src=\"'/' + bannerVal.Image\" />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </template>\r\n\r\n          <figure class=\"img-square prod-img\">\r\n            <a :href=\"product.targetUrl\" class=\"clickthrough\">\r\n              <img class=\"img-fluid\" :alt=\"product.imageAltText\" :title=\"product.imageTitleText\" :src=\"product.imageUrl ? product.imageUrl : '/documents/productimages/not-available-large.jpg'\" />\r\n            </a>\r\n          </figure>\r\n      </div>\r\n\r\n      <div class=\"utlz-col-9 utlz-col-sm-12 text-container\">\r\n        <a :href=\"product.targetUrl\" class=\"clickthrough\">\r\n\r\n          <template v-if=\"product.productImageBanners.length && screenWidth <= 576\">\r\n            <div class=\"product-banners\">\r\n              <div v-for=\"(banner, index) in productImageBanners\" :key=\"'prod-banner-wrapper-' + index\" :class=\"{ [banner.position]: true }\" class=\"prod-banner-wrapper\">\r\n                <div v-for=\"(bannerVal, ind) in banner.values\" :key=\"'prod-banner-wrapper-' + ind\">\r\n                  <span class=\"text-banner\" v-if=\"bannerVal.Type === 0\" :style=\"'background-color:' + bannerVal.Color + ';color: ' + bannerVal.TextColor\">\r\n                    {{ bannerVal.Text }}\r\n                  </span>\r\n                  <img class=\"img-banner\" v-if=\"bannerVal.Type === 1\" :src=\"'/' + bannerVal.Image\" />\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </template>\r\n\r\n          <!-- BESPOKE DEPG-31: Disable product code -->\r\n          <!-- <div class=\"product-code\">\r\n            <span class=\"value\">{{ product.id }}</span>\r\n          </div> -->\r\n          <!-- END BESPOKE DEGP-31 -->\r\n\r\n          <!-- BESPOKE DEPG: Use group description as title if available -->\r\n          <h2 class=\"prod-title header-small header-normal-sm\">{{ shortDescription }}</h2>\r\n          <!-- END BESPOKE DEPG -->\r\n        </a>\r\n\r\n        <!-- BESPOKE DEPU-2: Add extra field on UK portal -->\r\n        <template v-if=\"bespokeGlobalWs.shopName === 'uk' || bespokeGlobalWs.shopName === 'de'\">\r\n          <div v-if=\"productStocked\" class=\"prod-stocked-label\" :class=\"{'label-green': productStocked.includes('UK') || productStocked.includes('DEU') }\">\r\n            <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n            {{ productStocked }}\r\n          </div>\r\n        </template>\r\n        <!-- END BESPOKE DEPU-2 -->\r\n\r\n        <!-- BESPOKE DEPG-31: Disable price in product list items -->\r\n        <!-- <div class=\"ph-product-price\" v-if=\"product.prices.length\">\r\n          <utlz-product-price\r\n            :prices=\"product.prices[0]\"\r\n            :parentClassRef=\"'ref-product-list-item'\"\r\n          ></utlz-product-price>\r\n        </div> -->\r\n        <!-- END BESPOKE DEPG-31 -->\r\n\r\n        <!-- BESPOKE DEPA: Disabled variant dropdown -->\r\n        <!-- <utlz-product-variant\r\n          v-if=\"product.variantKey && groupProductsList != 0 && showOrderProductControl\"\r\n          :product=\"computedProduct\"\r\n          :productVariants=\"product.productVariants\"\r\n          @selectedProduct=\"selectedProduct($event)\"\r\n        ></utlz-product-variant> -->\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n        <!-- BESPOKE DEPA: Added :useClickThroughButton=\"true\" -->\r\n        <div class=\"ph-order-product\">\r\n          <transition name=\"fade\">\r\n            <utlz-order-product\r\n              v-if=\"showOrderProductControl && product.prices.length\"\r\n              :showQuotationButton=\"false\"\r\n              :product=\"computedProduct\"\r\n              :parentClassRef=\"'ref-product-list-item'\"\r\n              :useClickThroughButton=\"true\"\r\n            >\r\n            </utlz-order-product>\r\n          </transition>\r\n\r\n          <!-- BESPOKE DEPA: DIsable out of stock message -->\r\n          <!-- <transition name=\"fade\">\r\n            <p v-if=\"showOutOfStockMessage && showStock\" class=\"out-of-stock-msg\">\r\n              <i class=\"fa fa-warning\"></i>\r\n              <span v-translation=\"{ type: 'label', code: 'label_out_of_stock' }\"></span>\r\n            </p>\r\n          </transition> -->\r\n          <!-- END BESPOKE DEPA -->\r\n        </div>\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n\r\n        <!-- BESPOKE DEPA: Disable stock in product list -->\r\n        <!-- If product has variants, disable stock and\r\n        use stock in OrderProduct.vue component which is variant specific -->\r\n        <!-- <utlz-product-stock\r\n          v-if=\"!product.variantKey || groupProductsList == 0\"\r\n          :stock=\"product.stock\"\r\n          :stockTotal=\"product.stock\"\r\n        ></utlz-product-stock> -->\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapGetters } from 'vuex';\r\nimport { Product } from 'src/models/product.model';\r\nimport OrderProduct from 'src/components/webshop/order-product/OrderProduct.vue';\r\nimport ProductStock from 'src/components/webshop/product-stock/ProductStock.vue';\r\nimport ProductPrice from 'src/components/webshop/product-price/ProductPrice.vue';\r\nimport ProductVariant from 'src/components/webshop/products/product-variant/ProductVariant.vue';\r\nimport FavoritesControl from 'src/components/webshop/favorites/FavoritesControl.vue';\r\nexport default {\r\n  components: {\r\n    'utlz-product-price': ProductPrice,\r\n    'utlz-product-stock': ProductStock,\r\n    'utlz-order-product': OrderProduct,\r\n    'utlz-product-variant': ProductVariant,\r\n    'utlz-favorites-control': FavoritesControl\r\n  },\r\n  props: {\r\n    product: { type: Product, required: true },\r\n    blockSize: { type: Number, required: false, default: 3 }\r\n  },\r\n  data () {\r\n    return {\r\n      isSalesAction: this.product.prices[0],\r\n      activeProductVariantId: null\r\n    };\r\n  },\r\n  computed: {\r\n    // BESPOKE DEPG\r\n    shortDescription () {\r\n      const shortDesc = this.product.customStrings['GroupDescription_' + this.language];\r\n      return shortDesc !== undefined && shortDesc !== \"\" ? shortDesc : this.product.shortDescription; \r\n    },\r\n    // END BESPOKE DEPG\r\n    ...mapState('elastic', ['layoutType']),\r\n    // BESPOKE DEPA\r\n    // Added bespokeGlobalWs\r\n    ...mapGetters([\r\n      'showStock', \r\n      'showPrices', \r\n      'showFavorites', \r\n      'showOrderProduct', \r\n      'stockLimit', \r\n      'groupProductsList', \r\n      'screenWidth', \r\n      'language', \r\n      'bespokeGlobalWs']),\r\n      // END BESPOKE DEPA\r\n    showOrderProductControl () {\r\n      if (!this.showPrices) {\r\n        return false;\r\n      } else if (this.showOrderProduct) {\r\n        if (!this.stockLimit) {\r\n          return true;\r\n        } else if (this.stockLimit && this.product.stock !== null) {\r\n          return this.stockLimit && this.product.stock.stockTotal > 0;\r\n        } else {\r\n          return false;\r\n        }\r\n      } else {\r\n        return false;\r\n      }\r\n    },\r\n    showOutOfStockMessage () {\r\n      if (!this.stockLimit) {\r\n        return false;\r\n      } else if (this.product.stock !== null && this.showOrderProduct) {\r\n        return this.product.stock.stockTotal <= 0;\r\n      } else {\r\n        return false;\r\n      }\r\n    },\r\n    computedProduct () {\r\n      if (!this.product.variantKey) {\r\n        return this.product;\r\n      } else {\r\n        if (this.activeProductVariantId) {\r\n          const index = this.product.productVariants.findIndex(product => {\r\n            return product.id === this.activeProductVariantId;\r\n          });\r\n          return this.product.productVariants[index];\r\n        } else {\r\n          return this.product;\r\n        }\r\n      }\r\n    },\r\n    productImageBanners () {\r\n      return this.product.productImageBanners.filter(banner => banner.show === true);\r\n    },\r\n    // BESPOKE DEPU-2\r\n    productStocked () {\r\n      let productStocked = this.product.customStrings[\"FF_DESC2_\" + this.language];\r\n      return productStocked !== undefined ? productStocked : \"\";\r\n    }\r\n    // END BESPOKE DEPU-2\r\n  },\r\n  methods: {\r\n    selectedProduct (id) {\r\n      this.activeProductVariantId = id;\r\n    }\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductListItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductListItem.vue?vue&type=template&id=55fef386&\"\nimport script from \"./ProductListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductListItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-pagination\"},[_c('ul',{staticClass:\"pagination-list flex-row-nowrap justify-content-center\"},[(_vm.currentPage > 1)?_c('li',{staticClass:\"previous-page\"},[_c('a',{staticClass:\"button square fa fa-angle-left\",on:{\"click\":function($event){return _vm.updatePage(_vm.currentPage - 1)}}})]):_vm._e(),_vm._l((_vm.pages),function(page,index){return _c('li',{key:index + 1},[(page.type === 'elipsis')?[_c('a',{staticClass:\"button square elipsis\"},[_vm._v(_vm._s(page.value))])]:_vm._e(),(page.type === 'page')?[_c('a',{staticClass:\"button square-breakout\",class:{ active: page.value === _vm.currentPage, 'theme-primary': page.value === _vm.currentPage },on:{\"click\":function($event){return _vm.updatePage(page.value)}}},[_vm._v(_vm._s(page.value))])]:_vm._e()],2)}),(_vm.currentPage < _vm.totalPages)?_c('li',{staticClass:\"next-page\"},[_c('a',{staticClass:\"button square fa fa-angle-right\",on:{\"click\":function($event){_vm.updatePage(parseInt(_vm.currentPage + 1))}}})]):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-pagination\">\r\n    <ul class=\"pagination-list flex-row-nowrap justify-content-center\">\r\n\r\n      <li class=\"previous-page\" v-if=\"currentPage > 1\">\r\n        <a @click=\"updatePage(currentPage - 1)\" class=\"button square fa fa-angle-left\"></a>\r\n      </li>\r\n\r\n      <li v-for=\"(page, index) in pages\" :key=\"index + 1\">\r\n\r\n        <template v-if=\"page.type === 'elipsis'\">\r\n          <a class=\"button square elipsis\">{{ page.value }}</a>\r\n        </template>\r\n\r\n        <template v-if=\"page.type === 'page'\">\r\n          <a @click=\"updatePage(page.value)\"\r\n            class=\"button square-breakout\"\r\n            :class=\"{ active: page.value === currentPage, 'theme-primary': page.value === currentPage }\"\r\n          >{{ page.value }}</a>\r\n        </template>\r\n\r\n      </li>\r\n\r\n      <li class=\"next-page\" v-if=\"currentPage < totalPages\">\r\n        <a @click=\"updatePage(parseInt(currentPage + 1))\" class=\"button square fa fa-angle-right\"></a>\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    totalPages: { type: Number, required: true, default: 1 },\r\n    currentPage: { type: Number, required: false, default: 1 },\r\n    scrollToTop: { type: Boolean, required: false },\r\n    scrollToElementId: { type: String, required: false }\r\n  },\r\n  computed: {\r\n    pages () {\r\n      const pages = [];\r\n\r\n      let start = ((this.currentPage - 2 < 1) ? 1 : this.currentPage - 2);\r\n\r\n      if (start > 1) {\r\n        pages.push({ type: 'page', value: 1 });\r\n      }\r\n\r\n      if (start > 2) {\r\n        pages.push({ type: 'elipsis', value: '...' })\r\n      }\r\n\r\n      for (var i = start; i <= this.currentPage; i++) {\r\n        pages.push({ type: 'page', value: i });\r\n      }\r\n\r\n      if (this.currentPage + 1 < this.totalPages) {\r\n        var newPageNr = this.currentPage + 1;\r\n        pages.push({ type: 'page', value: newPageNr });\r\n\r\n        newPageNr++;\r\n\r\n        pages.push({ type: 'page', value: newPageNr });\r\n\r\n        if (newPageNr < this.totalPages - 1) {\r\n          pages.push({ type: 'elipsis', value: '...' });\r\n        }\r\n        if (newPageNr < this.totalPages) {\r\n          pages.push({ type: 'page', value: this.totalPages });\r\n        }\r\n      } else if (this.currentPage !== this.totalPages) {\r\n        pages.push({ type: 'page', value: this.totalPages });\r\n      }\r\n      return pages;\r\n    }\r\n  },\r\n  methods: {\r\n    updatePage (pageNumber) {\r\n      this.$emit('changePage', pageNumber);\r\n      if (this.scrollToTop) {\r\n        window.scroll({ top: 0 });\r\n      } else if (this.scrollToElementId) {\r\n        document.getElementById(this.scrollToElementId).scrollIntoView();\r\n      }\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Pagination.vue?vue&type=template&id=981b20ca&\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js&\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"cmp-elastic-product-list utlz-row utlz-reset\" :class=\"layoutType\" ref=\"productListContainer\">\r\n    <div class=\"utlz-col-md-12\">\r\n      <h1>{{ pageTitle }}</h1>\r\n\r\n        <utlz-sorting-options\r\n          id=\"sorting-options\"\r\n          v-if=\"!noProductsFound\"\r\n          @changeLayout=\"changeLayout($event)\"\r\n          @changePageSize=\"changePageSize($event)\"\r\n          @changePageSorting=\"changePageSorting($event)\"\r\n          :pageRange=\"pageRange\"\r\n          :totalProducts=\"totalProducts\"\r\n          :layoutType=\"layoutType\"\r\n          :parentClassRef=\"'ref-elastic-product-list'\"\r\n          :pageSize=\"pageSizes\"\r\n          :pageSorting=\"sortingOptions\">\r\n\r\n          <template v-slot:pagination>\r\n            <utlz-pagination v-if=\"totalPages > 1\" :totalPages=\"totalPages\" :currentPage=\"currentPage\" :scrollToTop=\"true\" @changePage=\"changePage($event)\"></utlz-pagination>\r\n          </template>\r\n\r\n          <template v-slot:toggle-mobile-filters>\r\n            <a @click=\"toggleMobileFilters()\" class=\"toggle-filters-btn button small theme-primary show-mobile\">\r\n              <i class=\"fa fa-filter\"></i>\r\n              <span v-translation=\"{ type: 'label', code: 'label_toggle_mobile_filters' }\"></span>\r\n            </a>\r\n          </template>\r\n\r\n        </utlz-sorting-options>\r\n\r\n        <transition-group name=\"fadein\" tag=\"div\" class=\"list-items-wrapper utlz-row\">\r\n          <template v-if=\"!products.length && !noProductsFound\">\r\n            <div v-for=\"index in (4 * blockSize)\" :key=\"index\" class=\"ph-silhouette product-list-item utlz-col-12\" :class=\"'utlz-col-sm-' + blockSize\">\r\n              <span class=\"silhouette-img square\"></span>\r\n              <div class=\"ph-paragraph\">\r\n                <span class=\"silhouette-line\"></span>\r\n                <span class=\"silhouette-line\"></span>\r\n                <span class=\"silhouette-line\"></span>\r\n                <span class=\"silhouette-line\"></span>\r\n              </div>\r\n            </div>\r\n          </template>\r\n        </transition-group>\r\n\r\n        <transition-group name=\"fade\" tag=\"div\" class=\"list-items-wrapper utlz-row\">\r\n            <utlz-product-list-item\r\n              @navigateToProductPage=\"navigateToProductPage($event)\"\r\n              v-for=\"product in products\"\r\n              :key=\"product.id\"\r\n              :product=\"product\"\r\n              :blockSize=\"blockSize\"\r\n              class=\"product-list-item\">\r\n            </utlz-product-list-item>\r\n          </transition-group>\r\n\r\n        <utlz-pagination v-if=\"totalPages > 1\" :totalPages=\"totalPages\" :currentPage=\"currentPage\" @changePage=\"changePage($event)\"></utlz-pagination>\r\n\r\n        <div v-if=\"noProductsFound\" class=\"no-products-found\">\r\n          <h2 v-translation=\"{ type: 'label', code: 'label_no_products_found'}\"></h2>\r\n        </div>\r\n\r\n      </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapGetters, mapActions } from 'vuex';\r\nimport SortingOptions from 'src/components/webshop/sorting-options/SortingOptions.vue';\r\nimport ProductListItem from 'src/components/webshop/products/product-list-item/ProductListItem.vue';\r\nimport Pagination from 'src/components/ui/pagination/Pagination.vue';\r\nexport default {\r\n  components: {\r\n    'utlz-sorting-options': SortingOptions,\r\n    'utlz-pagination': Pagination,\r\n    'utlz-product-list-item': ProductListItem\r\n  },\r\n  computed: {\r\n    ...mapState('elastic', ['products', 'filters', 'stringProperties', 'layoutType', 'blockSize', 'pageSizes', 'sortingOptions']),\r\n    ...mapGetters('elastic', ['pageTitle', 'totalPages', 'currentPage', 'pageRange', 'totalProducts', 'noProductsFound'])\r\n  },\r\n  methods: {\r\n    ...mapActions('elastic', ['initElastic', 'updateFilters', 'changePage', 'changeLayout', 'changePageSize', 'toggleMobileFilters', 'changePageSorting']),\r\n    navigateToProductPage (href) {\r\n      location.href = href;\r\n      localStorage.setItem('scrollPositionTop', window.pageYOffset);\r\n    }\r\n  },\r\n  created () {\r\n    this.initElastic();\r\n  },\r\n  updated () {\r\n    window.scrollTo(0, localStorage.getItem('scrollPositionTop'));\r\n    localStorage.setItem('scrollPositionTop', 0);\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElasticProductList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElasticProductList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ElasticProductList.vue?vue&type=template&id=e5106854&\"\nimport script from \"./ElasticProductList.vue?vue&type=script&lang=js&\"\nexport * from \"./ElasticProductList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-elastic-product-details utlz-reset utlz-row\"},[_c('div',{staticClass:\"utlz-col-md-5 column-left\"},[_c('utlz-gallery',{attrs:{\"product\":_vm.productDetails}})],1),_c('div',{staticClass:\"utlz-col-md-7 column-right product-details-column\"},[_c('div',{staticClass:\"product-information\"},[_c('div',{staticClass:\"product-code\"},[_c('span',[_vm._v(_vm._s(_vm.productDetails.id))])]),_c('h1',[_vm._v(_vm._s(_vm.productDetails.shortDescription))]),(_vm.productDetails.subTitle)?_c('h2',{staticClass:\"subtitle\"},[_vm._v(_vm._s(_vm.productDetails.subTitle))]):_vm._e(),(_vm.productDetails.prices.length)?_c('div',{staticClass:\"ph-product-price\"},[_c('utlz-product-price',{attrs:{\"prices\":_vm.productDetails.prices[0]}})],1):_vm._e(),_c('utlz-tabs',{attrs:{\"tabs\":_vm.tabs},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('div',{staticClass:\"prod-desc-container\",class:{'expandable': _vm.useCollapse, 'expanded': _vm.expanded  }},[_c('div',{ref:\"productDescription\",staticClass:\"prod-desc-wrapper\"},[_c('div',{staticClass:\"product-long-description\",domProps:{\"innerHTML\":_vm._s(_vm.productDetails.longDescription)}})])]),(_vm.useCollapse)?_c('a',{staticClass:\"collapse-button theme-primary\",on:{\"click\":function($event){_vm.expanded = !_vm.expanded}}},[(!_vm.expanded)?_c('div',{staticClass:\"read-more\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'link_description_read_more' }),expression:\"{ type: 'button', code: 'link_description_read_more' }\"}]}),_c('i',{staticClass:\"fa fa-angle-down\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e(),(_vm.expanded)?_c('div',{staticClass:\"read-less\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'link_description_read_less' }),expression:\"{ type: 'button', code: 'link_description_read_less' }\"}]}),_c('i',{staticClass:\"fa fa-angle-up\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e()]):_vm._e()]},proxy:true},{key:\"videos\",fn:function(){return [(_vm.videos.length)?_c('div',{staticClass:\"product-videos\"},[_c('utlz-product-videos',{attrs:{\"videos\":_vm.videos}})],1):_vm._e()]},proxy:true},(_vm.documents.length)?{key:\"documents\",fn:function(){return [_c('div',{staticClass:\"product-documents\"},[_c('utlz-product-documents',{attrs:{\"documents\":_vm.documents}})],1)]},proxy:true}:null],null,true)}),_c('div',{staticClass:\"product-specifications\"},[_c('h2',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'title', code: 'title_specifications' }),expression:\"{ type: 'title', code: 'title_specifications' }\"}]}),_c('div',{staticClass:\"spec-list\"},_vm._l((_vm.productProperties),function(prop){return _c('div',{key:prop.key,staticClass:\"spec-item\"},[_c('div',{staticClass:\"spec-desc\"},[_vm._v(\"\\n                  \"+_vm._s(prop.key)+\"\\n                \")]),_c('div',{staticClass:\"spec-value\"},[_vm._v(\"\\n                  \"+_vm._s(prop.value)+\"\\n                \")])])}),0)]),_c('utlz-group-dropdown',{attrs:{\"variants\":_vm.productVariants}}),_c('div',{attrs:{\"id\":\"ph-calculator\"}}),(_vm.productDetails.customBooleans.STOCK_PRODUCT)?_c('utlz-product-stock',{attrs:{\"product\":_vm.productDetails,\"stock\":_vm.productDetails.stock,\"stockTotal\":_vm.productDetails.stock}}):_vm._e(),(_vm.bespokeGlobalWs.shopName === 'uk' || _vm.bespokeGlobalWs.shopName === 'de')?[(_vm.productStocked.length)?_c('div',{staticClass:\"prod-stocked-label\",class:{'label-green': _vm.productStocked.includes('UK') || _vm.productStocked.includes('DEU') }},[_c('i',{staticClass:\"fa fa-info-circle\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n              \"+_vm._s(_vm.productStocked)+\"\\n            \")]):_vm._e()]:_vm._e(),_c('div',{staticClass:\"order-product\"},[(_vm.showOrderProductControl)?_c('utlz-order-product',{attrs:{\"useQuoteButtonText\":true,\"product\":_vm.productDetails,\"useTextButton\":true,\"useOrderComment\":_vm.showOrderComment,\"useCalculationBox\":_vm.productDetails.customBooleans.CUSTOM_GLAS_PROD,\"useCanopyCalculator\":_vm.productDetails.customBooleans.CUSTOM_CANOPY_PROD}}):_vm._e()],1),_c('div',{staticClass:\"favorite\"},[(_vm.showFavorites)?_c('utlz-favorites-control',{attrs:{\"product\":_vm.productDetails,\"useDescription\":true}}):_vm._e()],1)],2)]),_c('div',{staticClass:\"utlz-col-12 margin-bottom-30\"}),_c('utlz-related-products-matrix',{attrs:{\"products\":_vm.relatedProducts.crossSelling,\"customDecimals\":_vm.productDetails.customDecimals}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.render)?_c('div',{staticClass:\"cmp-product-group-matrix\"},[_c('div',{staticClass:\"matrix\"},[_c('div',{staticClass:\"matrix-header\"},[_c('div',{staticClass:\"description\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_matrix_header_product' }),expression:\"{ type: 'label', code: 'label_matrix_header_product' }\"}]})]),_vm._l((_vm.properties),function(property){return _c('div',{key:property,staticClass:\"properties\"},[_vm._v(\"\\n                \"+_vm._s(property)+\"\\n            \")])}),(_vm.showPrices)?_c('div',{staticClass:\"prod-price\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_matrix_header_price' }),expression:\"{ type: 'label', code: 'label_matrix_header_price' }\"}]})]):_vm._e(),(_vm.showOrderProduct)?_c('div',{staticClass:\"prod-stock\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_stock_indicator' }),expression:\"{ type: 'label', code: 'label_stock_indicator' }\"}]})]):_vm._e(),_c('div',{staticClass:\"order\"})],2),_vm._l((_vm.variants),function(variant){return _c('div',{key:variant.id,staticClass:\"matrix-row\"},[_c('div',{staticClass:\"description\"},[_c('span',{staticClass:\"prod-code\"},[_vm._v(_vm._s(variant.id))]),_c('span',{staticClass:\"prod-desc\"},[_vm._v(_vm._s(variant.shortDescription))])]),_vm._l((_vm.properties),function(property){return _c('div',{key:property,staticClass:\"properties\"},[_vm._v(\"\\n                \"+_vm._s(variant.properties[property])+\"\\n            \")])}),_c('div',{staticClass:\"prod-price\"},[(variant.prices.length)?_c('div',{staticClass:\"ph-product-price\"},[_c('utlz-product-price',{attrs:{\"prices\":variant.prices[0]}})],1):_vm._e()]),(_vm.showStock)?_c('div',{staticClass:\"prod-stock\"},[_c('utlz-product-stock',{attrs:{\"stock\":variant.stock,\"stockTotal\":variant.stock}})],1):_vm._e(),_c('div',{staticClass:\"order\"},[(_vm.showOrderProduct)?_c('utlz-order-product',{attrs:{\"product\":variant,\"allowZeroQuantity\":true,\"useOrderMode\":false},on:{\"quantityChanged\":function($event){return _vm.quantityChanged($event, variant)},\"unitsChanged\":function($event){return _vm.unitsChanged($event, variant)}}}):_vm._e()],1)],2)})],2),(_vm.showOrderProduct)?_c('div',{staticClass:\"order-product-btn flex-row-nowrap justify-content-end\"},[_c('a',{staticClass:\"button large theme-primary\",class:{ 'disabled': !_vm.orderLines.length },on:{\"click\":function($event){return _vm.addOrderLinesToCart()}}},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_order' }),expression:\"{ type: 'button', code: 'button_order' }\"}]})])]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-product-group-matrix\" v-if=\"render\">\r\n      <div class=\"matrix\">\r\n          <div class=\"matrix-header\">\r\n              <div class=\"description\">\r\n                <span v-translation=\"{ type: 'label', code: 'label_matrix_header_product' }\"></span>\r\n              </div>\r\n\r\n              <div class=\"properties\" v-for=\"property in properties\" v-bind:key=\"property\">\r\n                  {{ property }}\r\n              </div>\r\n\r\n              <div v-if=\"showPrices\" class=\"prod-price\">\r\n                <span v-translation=\"{ type: 'label', code: 'label_matrix_header_price' }\"></span>\r\n              </div>\r\n\r\n              <div v-if=\"showOrderProduct\" class=\"prod-stock\">\r\n                <span v-translation=\"{ type: 'label', code: 'label_stock_indicator' }\"></span>\r\n              </div>\r\n              <div class=\"order\"></div>\r\n          </div>\r\n          <div class=\"matrix-row\" v-for=\"variant in variants\" v-bind:key=\"variant.id\">\r\n              <div class=\"description\">\r\n                <span class=\"prod-code\">{{ variant.id }}</span>\r\n                <span class=\"prod-desc\">{{ variant.shortDescription }}</span>\r\n              </div>\r\n\r\n              <div class=\"properties\" v-for=\"property in properties\" v-bind:key=\"property\">\r\n                  {{variant.properties[property]}}\r\n              </div>\r\n\r\n              <div class=\"prod-price\">\r\n                <div class=\"ph-product-price\" v-if=\"variant.prices.length\">\r\n                  <utlz-product-price\r\n                    :prices=\"variant.prices[0]\"\r\n                  ></utlz-product-price>\r\n                </div>\r\n              </div>\r\n\r\n              <div v-if=\"showStock\" class=\"prod-stock\">\r\n                <utlz-product-stock\r\n                  :stock=\"variant.stock\"\r\n                  :stockTotal=\"variant.stock\"\r\n                ></utlz-product-stock>\r\n              </div>\r\n\r\n              <div class=\"order\">\r\n                <utlz-order-product\r\n                  v-if=\"showOrderProduct\"\r\n                  :product=\"variant\"\r\n                  :allowZeroQuantity=\"true\"\r\n                  :useOrderMode=\"false\"\r\n                  @quantityChanged=\"quantityChanged($event, variant)\"\r\n                  @unitsChanged=\"unitsChanged($event, variant)\"\r\n                ></utlz-order-product>\r\n              </div>\r\n\r\n          </div>\r\n      </div>\r\n      <div v-if=\"showOrderProduct\" class=\"order-product-btn flex-row-nowrap justify-content-end\">\r\n        <a\r\n          @click=\"addOrderLinesToCart()\"\r\n          class=\"button large theme-primary\"\r\n          :class=\"{ 'disabled': !orderLines.length }\">\r\n          <span v-translation=\"{ type: 'button', code: 'button_order' }\"></span>\r\n          </a>\r\n      </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex';\r\nimport OrderProduct from 'src/components/webshop/order-product/OrderProduct.vue';\r\nimport ProductPrice from 'src/components/webshop/product-price/ProductPrice.vue';\r\nimport ProductStock from 'src/components/webshop/product-stock/ProductStock.vue';\r\nexport default {\r\n  components: {\r\n    'utlz-order-product': OrderProduct,\r\n    'utlz-product-price': ProductPrice,\r\n    'utlz-product-stock': ProductStock\r\n  },\r\n  props: {\r\n    variants: { type: Array, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      orderLines: [],\r\n      render: true\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['showStock', 'userLoggedOn', 'showOrderProduct', 'showPrices']),\r\n    properties () {\r\n      if (this.variants.length > 0) {\r\n        return Object.keys(this.variants[0].properties);\r\n      }\r\n      return [];\r\n    }\r\n  },\r\n  methods: {\r\n    quantityChanged ({ computedQuantity, unitCode }, variant) {\r\n      const index = this.orderLines.findIndex(orderLine => orderLine.prod_code === variant.id);\r\n      if (computedQuantity !== 0) {\r\n        if (index === -1) {\r\n          this.orderLines.push({\r\n            prod_code: variant.id,\r\n            ord_qty: computedQuantity,\r\n            unit_code: unitCode,\r\n            prod_comment: ''\r\n          });\r\n        } else if (index > -1) {\r\n          this.orderLines[index] = {\r\n            prod_code: variant.id,\r\n            ord_qty: computedQuantity,\r\n            unit_code: unitCode,\r\n            prod_comment: ''\r\n          };\r\n        }\r\n      } else if (computedQuantity === 0) {\r\n        this.orderLines.splice(index, 1);\r\n      }\r\n    },\r\n    unitsChanged ({ unitCode, quantity, computedQuantity }, variant) {\r\n      // Changing units resets quantity buttons to zero, so delete variant from orderLines\r\n      const index = this.orderLines.findIndex(orderLine => orderLine.prod_code === variant.id);\r\n      if (index > -1) {\r\n        this.orderLines.splice(index, 1);\r\n      }\r\n    },\r\n    addOrderLinesToCart () {\r\n      this.addToCart(this.orderLines)\r\n        .then(res => {\r\n          this.render = false;\r\n          this.$nextTick(() => {\r\n            this.render = true;\r\n            this.orderLines = [];\r\n          });\r\n        });\r\n    },\r\n    ...mapActions('shoppingCart', ['addToCart'])\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductGroupMatrix.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductGroupMatrix.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductGroupMatrix.vue?vue&type=template&id=5dd4e16a&\"\nimport script from \"./ProductGroupMatrix.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductGroupMatrix.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-product-group\"},[(_vm.properties.length)?_c('div',{staticClass:\"prod-group-label\"},[_c('i',{staticClass:\"fa fa-info-circle\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'select_grp_value' }),expression:\"{ type: 'label', code: 'select_grp_value' }\"}]})]):_vm._e(),_vm._l((_vm.properties),function(property){return _c('div',{key:property,staticClass:\"property\"},[_c('span',{staticClass:\"select-label\"},[_vm._v(_vm._s(property))]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mainModel[property]),expression:\"mainModel[property]\"}],attrs:{\"name\":property.replace(' ', '-'),\"id\":'select-' + property.replace(' ', '-')},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.mainModel, property, $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.onChange($event)}]}},_vm._l((_vm.getPropertyValues(property)),function(variant){return _c('option',{key:variant.key,domProps:{\"value\":variant.key}},[_vm._v(\"\\n                \"+_vm._s(variant.value)+\"\\n            \")])}),0)])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-product-group\">\r\n    <!-- BESPOKE -->\r\n    <div v-if=\"properties.length\" class=\"prod-group-label\">  \r\n      <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n      <span  v-translation=\"{ type: 'label', code: 'select_grp_value' }\"></span>    \r\n    </div>\r\n    <!-- END BESPOKE -->\r\n      <div class=\"property\" v-for=\"property in properties\" v-bind:key=\"property\">\r\n        <span class=\"select-label\">{{ property }}</span>\r\n          <select :name=\"property.replace(' ', '-')\" :id=\"'select-' + property.replace(' ', '-')\" v-model=\"mainModel[property]\" @change=\"onChange($event)\">\r\n              <option v-for=\"variant in getPropertyValues(property)\" :key=\"variant.key\" :value=\"variant.key\">\r\n                  {{ variant.value }}\r\n              </option>\r\n          </select>\r\n      </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapActions } from 'vuex';\r\nexport default {\r\n  props: {\r\n    variants: { type: Array, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      mainModel: {}\r\n    }\r\n  },\r\n  watch: {\r\n    productDetails (n, o) {\r\n      this.mainModel = this.GetMainModel(n)\r\n    },\r\n    variants (n, o) {\r\n      this.mainModel = this.GetMainModel(this.productDetails)\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapState('productDetails', ['productDetails']),\r\n    properties () {\r\n      if (this.variants.length > 0) {\r\n        return Object.keys(this.variants[0].properties);\r\n      }\r\n      return [];\r\n    },\r\n    mainProductProperties () {\r\n      if (this.variants.length > 0) {\r\n        let variant = this.variants.find((x) => x.id === this.productDetails.id);\r\n        if (variant) { return variant.properties; }\r\n      }\r\n      return [];\r\n    }\r\n  },\r\n  methods: {\r\n    ...mapActions('productDetails', ['updateShownProduct']),\r\n    onChange (event) {\r\n      this.updateShownProduct(event.target.value);\r\n    },\r\n    GetMainModel (n) {\r\n      var obj = {}\r\n\r\n      if (n !== undefined) { Object.keys(this.mainProductProperties).forEach((x) => obj[x] = n.id); }\r\n\r\n      return obj;\r\n    },\r\n    getPropertyValues (property) {\r\n      let returnList = [];\r\n      let products = this.variants;\r\n      let ogProperties = this.mainProductProperties;\r\n      let mainProductId = this.productDetails.id;\r\n\r\n      let propertyIndex = this.properties.indexOf(property)\r\n      if (propertyIndex > 0) {\r\n        let filterValues = []\r\n        for (let i = 0; i < propertyIndex; i++) {\r\n          let propertyName = this.properties[i];\r\n\r\n          filterValues.push({ key: propertyName, value: ogProperties[propertyName] });\r\n        }\r\n\r\n        filterValues.forEach(function (x) {\r\n          products = products.filter(function (y) {\r\n            return y.properties[x.key] === x.value;\r\n          })\r\n        });\r\n      }\r\n\r\n      products.forEach(function (x) {\r\n        if (x.properties[property] !== ogProperties[property] || x.id == mainProductId) {\r\n          returnList.push({ key: x.id, value: x.properties[property] })\r\n        }\r\n      });\r\n\r\n      return returnList.filter((value, index, self) => self.findIndex((x) => x.value === value.value) === index)\r\n        .sort(function (x, y) {\r\n          const valA = x.value.toUpperCase();\r\n          const valB = y.value.toUpperCase();\r\n\r\n          let comparison = 0;\r\n          if (valA > valB) {\r\n            comparison = 1;\r\n          } else if (valA < valB) {\r\n            comparison = -1;\r\n          }\r\n          return comparison;\r\n        });\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductGroupDropdowns.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductGroupDropdowns.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductGroupDropdowns.vue?vue&type=template&id=8bb2c062&\"\nimport script from \"./ProductGroupDropdowns.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductGroupDropdowns.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-gallery\",class:{ lightbox: _vm.lightboxActive, singular: _vm.product.images.length === 1 }},[(_vm.lightboxActive)?_c('i',{staticClass:\"fa fa-times-circle close-lightbox-btn\",on:{\"click\":function($event){_vm.lightboxActive = false}}}):_vm._e(),_c('div',{staticClass:\"gallery-wrapper\"},[_c('div',{staticClass:\"current-image\"},[_vm._m(0),(_vm.activeIndex !== 0)?_c('div',{staticClass:\"nav-control left\",on:{\"click\":function($event){return _vm.navigate(0)}}},[_c('i',{staticClass:\"fa fa-angle-left\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e(),(_vm.activeIndex !== _vm.product.images.length - 1)?_c('div',{staticClass:\"nav-control right\",on:{\"click\":function($event){return _vm.navigate(1)}}},[_c('i',{staticClass:\"fa fa-angle-right\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e(),_c('transition',{attrs:{\"name\":\"fadein\"}},[(_vm.product.images[_vm.activeIndex])?_c('img',{attrs:{\"src\":_vm.product.images[_vm.activeIndex].replace('?r=pr', '?r=')},on:{\"click\":function($event){_vm.lightboxActive = true}}}):_vm._e()])],1),(_vm.product.images.length > 1)?_c('div',{staticClass:\"thumb-list flex-row-nowrap\"},_vm._l((_vm.product.images),function(image,index){return _c('div',{key:index,staticClass:\"thumb-container\",class:{ 'active': index === _vm.activeIndex },on:{\"click\":function($event){return _vm.selectImage(index)}}},[_c('div',{staticClass:\"thumb-img\"},[_c('img',{attrs:{\"src\":image}})])])}),0):_vm._e()])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"magnify-icon\"},[_c('i',{staticClass:\"fa fa-search-plus\",attrs:{\"aria-hidden\":\"true\"}})])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-gallery\" :class=\"{ lightbox: lightboxActive, singular: product.images.length === 1 }\">\r\n    <i v-if=\"lightboxActive\" @click=\"lightboxActive = false\" class=\"fa fa-times-circle close-lightbox-btn\"></i>\r\n    <div class=\"gallery-wrapper\">\r\n      <div class=\"current-image\">\r\n        <div class=\"magnify-icon\">\r\n          <i class=\"fa fa-search-plus\" aria-hidden=\"true\"></i>\r\n        </div>\r\n        <div v-if=\"activeIndex !== 0\" class=\"nav-control left\" @click=\"navigate(0)\">\r\n          <i class=\"fa fa-angle-left\" aria-hidden=\"true\"></i>\r\n        </div>\r\n        <div v-if=\"activeIndex !== product.images.length - 1\" class=\"nav-control right\" @click=\"navigate(1)\">\r\n          <i class=\"fa fa-angle-right\" aria-hidden=\"true\"></i>\r\n        </div>\r\n        <transition name=\"fadein\">\r\n          <img v-if=\"product.images[activeIndex]\" :src=\"product.images[activeIndex].replace('?r=pr', '?r=')\" @click=\"lightboxActive = true\" />\r\n        </transition>\r\n      </div>\r\n\r\n      <div v-if=\"product.images.length > 1\" class=\"thumb-list flex-row-nowrap\">\r\n        <div\r\n          v-for=\"(image, index) of product.images\"\r\n          :class=\"{ 'active': index === activeIndex }\"\r\n          :key=\"index\"\r\n          @click=\"selectImage(index)\"\r\n          class=\"thumb-container\">\r\n          <div class=\"thumb-img\">\r\n            <img :src=\"image\">\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { Product } from 'src/models/product.model';\r\nexport default {\r\n  props: {\r\n    product: { type: Product, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      activeIndex: 0,\r\n      lightboxActive: false\r\n    };\r\n  },\r\n  methods: {\r\n    selectImage (index) {\r\n      this.activeIndex = index;\r\n    },\r\n    navigate (val) {\r\n      if (val) {\r\n        this.activeIndex++;\r\n      } else {\r\n        this.activeIndex--;\r\n      }\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gallery.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gallery.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Gallery.vue?vue&type=template&id=4882de23&\"\nimport script from \"./Gallery.vue?vue&type=script&lang=js&\"\nexport * from \"./Gallery.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-tabs\"},[(_vm.computedTabs.length > 0)?_c('ul',{staticClass:\"tabs\"},_vm._l((_vm.computedTabs),function(tab){return _c('li',{key:tab.id,staticClass:\"tab\",class:{'active': tab.active }},[_c('a',{on:{\"click\":function($event){return _vm.switchTab(tab.id)}}},[_vm._v(_vm._s(tab.description))])])}),0):_vm._e(),_c('div',{staticClass:\"tab-panels\"},_vm._l((_vm.computedTabs),function(tab){return _c('div',{key:tab.id,staticClass:\"cmp-slot tab-slot tab-panel\",class:{'active': tab.active }},[_c('transition',{attrs:{\"name\":\"fadein\"}},[(tab.active)?_c('div',{staticClass:\"tab-panel-inner\"},[_vm._t([tab.id])],2):_vm._e()])],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-tabs\">\r\n    <!-- BEPSOKE GOOL: Changed length to 0 -->\r\n    <ul v-if=\"computedTabs.length > 0\" class=\"tabs\">\r\n      <!-- END BESPOKE GOOL -->\r\n      <li v-for=\"tab in computedTabs\" :key=\"tab.id\" :class=\"{'active': tab.active }\" class=\"tab\">\r\n        <a @click=\"switchTab(tab.id)\">{{ tab.description }}</a>\r\n      </li>\r\n    </ul>\r\n\r\n    <div class=\"tab-panels\">\r\n      <div v-for=\"tab in computedTabs\" :key=\"tab.id\" :class=\"{'active': tab.active }\" class=\"cmp-slot tab-slot tab-panel\">\r\n        <transition name=\"fadein\">\r\n        <div class=\"tab-panel-inner\" v-if=\"tab.active\">\r\n          <slot :name=\"[tab.id]\"></slot>\r\n        </div>\r\n        </transition>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    tabs: { type: Array, required: false }\r\n  },\r\n  computed: {\r\n    computedTabs () {\r\n      const tabs = this.tabs.filter(filter => filter.visible);\r\n      if (tabs.length) { tabs[0].active = true; };\r\n      return tabs;\r\n    }\r\n  },\r\n  methods: {\r\n    switchTab (tabId) {\r\n      this.computedTabs.forEach(tab => {\r\n        if (tab.id === tabId) {\r\n          tab.active = true;\r\n        } else {\r\n          tab.active = false;\r\n        }\r\n      });\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=6c82fa1b&\"\nimport script from \"./Tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./Tabs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-product-videos utlz-row\"},_vm._l((_vm.videos),function(video,index){return _c('div',{key:index,staticClass:\"utlz-col-sm-6\"},[_c('div',{staticClass:\"embed-responsive embed-responsive-16by9\"},[_c('iframe',{staticClass:\"youtube-player embed-responsive-item\",attrs:{\"src\":video.url,\"frameBorder\":\"0\",\"type\":\"text/html\",\"allowfullscreen\":\"\"}})]),_c('h3',{staticClass:\"video-title\"},[_vm._v(_vm._s(video.description))])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-product-videos utlz-row\">\r\n    <div v-for=\"(video, index) in videos\" :key=\"index\" class=\"utlz-col-sm-6\">\r\n      <div class=\"embed-responsive embed-responsive-16by9\">\r\n        <iframe class=\"youtube-player embed-responsive-item\" :src=\"video.url\" frameBorder=\"0\" type=\"text/html\" allowfullscreen></iframe>\r\n      </div>\r\n      <h3 class=\"video-title\">{{ video.description }}</h3>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    videos: { type: Array, required: true }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductVideos.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductVideos.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductVideos.vue?vue&type=template&id=7c254ee4&\"\nimport script from \"./ProductVideos.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductVideos.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-product-documents utlz-row\"},[_c('div',{staticClass:\"utlz-col-12\"},[_c('ul',_vm._l((_vm.documents),function(document,index){return _c('li',{key:index},[_c('a',{staticClass:\"text-link\",attrs:{\"href\":document.fileLocation,\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa fa-file-text-o\"}),_c('span',[_vm._v(_vm._s(document.description))])])])}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-product-documents utlz-row\">\r\n    <div class=\"utlz-col-12\">\r\n      <ul>\r\n        <li v-for=\"(document, index) in documents\" :key=\"index\">\r\n          <a class=\"text-link\" :href=\"document.fileLocation\" target=\"_blank\">\r\n            <i class=\"fa fa-file-text-o\"></i>\r\n            <span>{{ document.description }}</span>\r\n          </a>\r\n        </li>\r\n      </ul>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    documents: { type: Array, required: true }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDocuments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDocuments.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductDocuments.vue?vue&type=template&id=f1391a2a&\"\nimport script from \"./ProductDocuments.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductDocuments.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-product-carousel utlz-reset utlz-row blocks\",class:{ 'carousel-enabled': _vm.useCarousel }},[_c('div',{staticClass:\"utlz-col-12\"},[_c('h2',[_vm._v(_vm._s(_vm.title))])]),_c('div',{staticClass:\"utlz-col-12\"},[_c('transition-group',{staticClass:\"scroll-container list-items-wrapper utlz-row\",attrs:{\"name\":\"fade\",\"tag\":\"div\"}},_vm._l((_vm.products),function(product){return _c('utlz-product-list-item',{key:product.id,staticClass:\"product-list-item\",attrs:{\"product\":product,\"blockSize\":_vm.blockSize},on:{\"navigateToProductPage\":function($event){return _vm.navigateToProductPage($event)}}})}),1)],1),(_vm.useCarousel)?[_c('div',{staticClass:\"nav-controls\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showControlLeft)?_c('div',{staticClass:\"nav-control left text-link\",on:{\"click\":function($event){return _vm.scroll('left')}}},[_c('i',{staticClass:\"fa fa-chevron-left\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e()]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showControlRight)?_c('div',{staticClass:\"nav-control right text-link\",on:{\"click\":function($event){return _vm.scroll('right')}}},[_c('i',{staticClass:\"fa fa-chevron-right\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e()])],1)]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-product-carousel utlz-reset utlz-row blocks\" :class=\"{ 'carousel-enabled': useCarousel }\">\r\n    <div class=\"utlz-col-12\">\r\n      <h2>{{ title }}</h2>\r\n    </div>\r\n    <div class=\"utlz-col-12\">\r\n      <transition-group name=\"fade\" tag=\"div\" class=\"scroll-container list-items-wrapper utlz-row\">\r\n        <utlz-product-list-item\r\n          @navigateToProductPage=\"navigateToProductPage($event)\"\r\n          v-for=\"product in products\"\r\n          :key=\"product.id\"\r\n          :product=\"product\"\r\n          :blockSize=\"blockSize\"\r\n          class=\"product-list-item\">\r\n        </utlz-product-list-item>\r\n      </transition-group>\r\n    </div>\r\n    <template v-if=\"useCarousel\">\r\n      <div class=\"nav-controls\">\r\n        <transition name=\"fade\">\r\n          <div @click=\"scroll('left')\" v-if=\"showControlLeft\" class=\"nav-control left text-link\"><i aria-hidden=\"true\" class=\"fa fa-chevron-left\"></i></div>\r\n        </transition>\r\n        <transition name=\"fade\">\r\n          <div @click=\"scroll('right')\" v-if=\"showControlRight\" class=\"nav-control right text-link\">\r\n            <i aria-hidden=\"true\" class=\"fa fa-chevron-right\"></i></div>\r\n        </transition>\r\n      </div>\r\n    </template>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nimport ProductListItem from 'src/components/webshop/products/product-list-item/ProductListItem.vue';\r\nexport default {\r\n  components: {\r\n    'utlz-product-list-item': ProductListItem\r\n  },\r\n  props: {\r\n    title: { type: String, required: false, default: '' },\r\n    blockSize: { type: Number, required: false, default: 4 },\r\n    products: { type: Array, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n      showControlLeft: false,\r\n      showControlRight: true\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['screenWidth']),\r\n    useCarousel () {\r\n      if (this.screenWidth < 576) {\r\n        return this.products.length > 1;\r\n      } else if (this.screenWidth < 992) {\r\n        return this.products.length > 3;\r\n      } else {\r\n        return this.products.length > (12 / this.blockSize);\r\n      }\r\n    }\r\n\r\n  },\r\n  methods: {\r\n    scroll (direction) {\r\n      const scrollContainer = document.querySelector('.scroll-container');\r\n      if (direction === 'left') {\r\n        scrollContainer.scrollBy({\r\n          left: -10,\r\n          behavior: 'smooth'\r\n        })\r\n      } else if (direction === 'right') {\r\n        scrollContainer.scrollBy({\r\n          left: scrollContainer.scrollLeft + 10,\r\n          behavior: 'smooth'\r\n        })\r\n      }\r\n      setTimeout(() => {\r\n        this.showControlLeft = scrollContainer.scrollLeft > 0;\r\n        this.showControlRight = scrollContainer.offsetWidth + scrollContainer.scrollLeft !== scrollContainer.scrollWidth;\r\n      }, 350)\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductCarousel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductCarousel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductCarousel.vue?vue&type=template&id=aeeb6c74&\"\nimport script from \"./ProductCarousel.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductCarousel.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-related-products-matrix utlz-col-sm-12\"},[_c('div',{staticClass:\"utlz-row utlz-no-gutters utlz-gutters-sm item-wrapper\"},_vm._l((_vm.relatedProducts),function(relatedProduct,index){return _c('div',{key:'relatedProduct-' + index,staticClass:\"product-row\"},[_c('div',{staticClass:\"main-product-wrapper\"},[_c('div',{staticClass:\"main-product-row\",on:{\"click\":function($event){return _vm.toggleRow('product-row' + index)}}},[_c('img',{staticClass:\"row-image\",attrs:{\"src\":relatedProduct.rowImage}}),_c('h2',[_vm._v(_vm._s(relatedProduct.rowTitle))]),_c('span',{staticClass:\"counter\"},[_vm._v(\"\\n            \"+_vm._s(relatedProduct.products.length)+\"\\n            \"),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_options'}),expression:\"{ type: 'label', code: 'label_options'}\"}]}),_c('i',{staticClass:\"fa fa-caret-down\",attrs:{\"aria-hidden\":\"true\"}})])]),_c('div',{ref:'product-row' + index,refInFor:true,staticClass:\"related-products\"},_vm._l((relatedProduct.products),function(product){return _c('div',{key:product.id,staticClass:\"related-product-row\"},[_c('a',{staticClass:\"prod-desc\",attrs:{\"href\":product.targetUrl}},[_c('img',{staticClass:\"row-image\",attrs:{\"src\":product.imageUrl}}),_c('div',{staticClass:\"product-heading\"},[_c('span',{staticClass:\"prod-code\"},[_vm._v(_vm._s(product.id))]),_c('h3',[_vm._v(_vm._s(product.shortDescription))])])]),_c('div',{staticClass:\"prod-price\"},[(product.prices.length)?_c('utlz-product-price',{attrs:{\"prices\":product.prices[0]}}):_vm._e()],1),_c('div',{staticClass:\"order-product\"},[(product.prices.length)?_c('utlz-order-product',{attrs:{\"product\":product}}):_vm._e()],1)])}),0)])])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-related-products-matrix utlz-col-sm-12\">\r\n    <div class=\"utlz-row utlz-no-gutters utlz-gutters-sm item-wrapper\">     \r\n      <div class=\"product-row\" v-for=\"(relatedProduct, index) in relatedProducts\" :key=\"'relatedProduct-' + index\">\r\n        <div class=\"main-product-wrapper\">\r\n          <div class=\"main-product-row\" @click=\"toggleRow('product-row' + index)\">\r\n            <img class=\"row-image\" :src=\"relatedProduct.rowImage\" />\r\n            <h2>{{ relatedProduct.rowTitle }}</h2>\r\n            <span class=\"counter\">\r\n              {{ relatedProduct.products.length }}\r\n              <span v-translation=\"{ type: 'label', code: 'label_options'}\"></span>\r\n              <i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i>  \r\n            </span>\r\n          </div>\r\n          <div class=\"related-products\" :ref=\"'product-row' + index\">\r\n            <div v-for=\"product in relatedProduct.products\" :key=\"product.id\" class=\"related-product-row\">\r\n              <a :href=\"product.targetUrl\" class=\"prod-desc\">\r\n                <img class=\"row-image\" :src=\"product.imageUrl\" />\r\n                <div class=\"product-heading\">\r\n                  <span class=\"prod-code\">{{ product.id }}</span>\r\n                  <h3>{{ product.shortDescription }}</h3>\r\n                </div>    \r\n              </a>\r\n              <div class=\"prod-price\">\r\n                <utlz-product-price\r\n                  v-if=\"product.prices.length\"\r\n                  :prices=\"product.prices[0]\"\r\n                ></utlz-product-price>\r\n              </div>\r\n              \r\n              <div class=\"order-product\">\r\n                <utlz-order-product\r\n                  v-if=\"product.prices.length\" :product=\"product\">\r\n                </utlz-order-product>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapGetters } from 'vuex';\r\nimport ProductListItem from 'src/components/webshop/products/product-list-item/ProductListItem.vue';\r\nimport ProductPrice from 'src/components/webshop/product-price/ProductPrice.vue';\r\nimport OrderProduct from 'src/components/webshop/order-product/OrderProduct.vue';\r\nexport default {\r\n  props: {\r\n    products: { type: Array, required: true },\r\n    customDecimals: { type: Object, required: true }\r\n  },\r\n  components: {\r\n    'utlz-order-product': OrderProduct,\r\n    'utlz-product-price': ProductPrice,\r\n    'utlz-product-list-item': ProductListItem\r\n  },\r\n  data () {\r\n    return {\r\n      \r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters(['language']),\r\n    relatedProducts () {\r\n      const relatedProducts = [];\r\n      this.products.forEach((product, index) => {\r\n        let groupDescription = product.customStrings['GroupDescription_' + this.language]; \r\n        let prodTitle = groupDescription ? groupDescription : product.shortDescription;\r\n\r\n        const relatedProductIndex = relatedProducts.findIndex(relation => { \r\n          return relation.rowTitle === groupDescription;        \r\n        });\r\n\r\n        if (relatedProductIndex > -1) {\r\n          relatedProducts[relatedProductIndex].products.push(product);\r\n        } else {\r\n            relatedProducts.push({\r\n            rowTitle: prodTitle,\r\n            rowImage: product.imageUrl,\r\n            products: [product],\r\n            priority: this.customDecimals['RELATION_' + product.id]\r\n          });\r\n        }\r\n      });\r\n      return relatedProducts.sort((a, b) => b.priority - a.priority);\r\n    }\r\n  },\r\n  methods: {\r\n    toggleRow ($event) {\r\n      this.$refs[$event][0].classList.toggle('expanded')\r\n    }\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedProductsMatrix.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedProductsMatrix.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RelatedProductsMatrix.vue?vue&type=template&id=0d0a3de9&\"\nimport script from \"./RelatedProductsMatrix.vue?vue&type=script&lang=js&\"\nexport * from \"./RelatedProductsMatrix.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"cmp-elastic-product-details utlz-reset utlz-row\">\r\n    <!-- BESPOKE DEPA-31: Changed class to col-md-5 -->\r\n      <div class=\"utlz-col-md-5 column-left\">\r\n        <!-- END BESPOKE DEPA-31 -->\r\n        <utlz-gallery :product=\"productDetails\"></utlz-gallery>\r\n      </div>\r\n      <!-- BESPOKE DEPA-31: Changed class to col-md-7 -->\r\n      <div class=\"utlz-col-md-7 column-right product-details-column\">\r\n        <!-- END BESPOKE DEPA-31 -->\r\n          <div class=\"product-information\">\r\n            <!-- BESPOKE DEPA-36: Added product.subTitle -->\r\n            <div class=\"product-code\">\r\n                <span>{{productDetails.id}}</span>\r\n            </div>\r\n            <h1>{{productDetails.shortDescription}}</h1>\r\n            <h2 class=\"subtitle\" v-if=\"productDetails.subTitle\">{{ productDetails.subTitle }}</h2>\r\n            <!-- END BESPOKE DEPA-36 -->\r\n            <div class=\"ph-product-price\" v-if=\"productDetails.prices.length\">\r\n                <utlz-product-price\r\n                    :prices=\"productDetails.prices[0]\"\r\n                ></utlz-product-price>\r\n            </div>\r\n\r\n            <utlz-tabs :tabs=\"tabs\">\r\n\r\n              <template v-slot:description>\r\n                <div class=\"prod-desc-container\" :class=\"{'expandable': useCollapse, 'expanded': expanded  }\">\r\n                  <div ref=\"productDescription\" class=\"prod-desc-wrapper\">\r\n                    <div class=\"product-long-description\" v-html=\"productDetails.longDescription\">\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n                <a v-if=\"useCollapse\" @click=\"expanded = !expanded\" class=\"collapse-button theme-primary\">\r\n                  <div v-if=\"!expanded\" class=\"read-more\">\r\n                    <span v-translation=\"{ type: 'button', code: 'link_description_read_more' }\"></span>\r\n                    <i class=\"fa fa-angle-down\" aria-hidden=\"true\"></i>\r\n                  </div>\r\n                  <div v-if=\"expanded\" class=\"read-less\">\r\n                    <span v-translation=\"{ type: 'button', code: 'link_description_read_less' }\"></span>\r\n                    <i class=\"fa fa-angle-up\" aria-hidden=\"true\"></i>\r\n                  </div>\r\n                </a>\r\n              </template>\r\n\r\n              <template v-slot:videos>\r\n                <div class=\"product-videos\" v-if=\"videos.length\">\r\n                  <utlz-product-videos :videos=\"videos\"></utlz-product-videos>\r\n                </div>\r\n              </template>\r\n\r\n              <template v-slot:documents v-if=\"documents.length\">\r\n                <div class=\"product-documents\">\r\n                  <utlz-product-documents :documents=\"documents\"></utlz-product-documents>\r\n                </div>\r\n              </template>\r\n            </utlz-tabs>\r\n\r\n            <div class=\"product-specifications\">\r\n              <h2 v-translation=\"{ type: 'title', code: 'title_specifications' }\"></h2>\r\n              <div class=\"spec-list\">\r\n                <div class=\"spec-item\" v-for=\"prop in productProperties\" :key=\"prop.key\">\r\n                  <div class=\"spec-desc\">\r\n                    {{prop.key}}\r\n                  </div>\r\n                  <div class=\"spec-value\">\r\n                    {{prop.value}}\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            <utlz-group-dropdown :variants=\"productVariants\" />\r\n\r\n            <!-- BESPOKE DEPG-31: Added placeholder for the calculator -->\r\n            <div id=\"ph-calculator\"></div>\r\n            <!-- END BESPOKE DEPG-31 -->\r\n\r\n            <!-- BESPOKE DEPA: Only show stock if product has customBooleans.STOCK_PRODUCT === true -->\r\n            <utlz-product-stock\r\n              v-if=\"productDetails.customBooleans.STOCK_PRODUCT\"\r\n              :product=\"productDetails\"\r\n              :stock=\"productDetails.stock\"\r\n              :stockTotal=\"productDetails.stock\"\r\n            ></utlz-product-stock>\r\n            <!-- END BESPOKE DEPA -->\r\n\r\n            <!-- BESPOKE DEPU-2: Add extra field on UK portal -->\r\n            <template v-if=\"bespokeGlobalWs.shopName === 'uk' || bespokeGlobalWs.shopName === 'de'\">\r\n              <div v-if=\"productStocked.length\" class=\"prod-stocked-label\" :class=\"{'label-green': productStocked.includes('UK') || productStocked.includes('DEU') }\">\r\n                <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i>\r\n                {{ productStocked }}\r\n              </div>\r\n            </template>\r\n            <!-- END BESPOKE DEPU-2 -->\r\n\r\n            <!-- BESPOKE DEPG-31: Added :useTextButton=\"true\", :useCalculationBox, useCanopyCalculator and removed productDetails.prices.length -->\r\n            <div class=\"order-product\">\r\n              <utlz-order-product\r\n                v-if=\"showOrderProductControl\"\r\n                :useQuoteButtonText=\"true\"\r\n                :product=\"productDetails\"\r\n                :useTextButton=\"true\"\r\n                :useOrderComment=\"showOrderComment\"\r\n                :useCalculationBox=\"productDetails.customBooleans.CUSTOM_GLAS_PROD\"\r\n                :useCanopyCalculator=\"productDetails.customBooleans.CUSTOM_CANOPY_PROD\"\r\n                >\r\n                </utlz-order-product>\r\n\r\n                <!-- BESPOKE DEPA: Hide out of stock message -->\r\n                <!-- <transition name=\"fade\">\r\n                  <p v-if=\"!showOrderProductControl && showStock\" class=\"out-of-stock-msg\">\r\n                    <i class=\"fa fa-warning\"></i>\r\n                    <span v-translation=\"{ type: 'label', code: 'label_out_of_stock' }\"></span>\r\n                  </p>\r\n                </transition> -->\r\n                <!-- END BESPOKE DEPA -->\r\n            </div>\r\n            <!-- END BESPOKE DEPG-31 -->\r\n\r\n            <div class=\"favorite\">\r\n              <utlz-favorites-control v-if=\"showFavorites\" :product=\"productDetails\" :useDescription=\"true\"></utlz-favorites-control>\r\n            </div>\r\n          </div>\r\n      </div>\r\n\r\n      <div class=\"utlz-col-12 margin-bottom-30\"></div>\r\n\r\n      <!-- BESPOKE DEPG-31: Disabled matrix -->\r\n      <!-- <div v-if=\"showOrderProductControl && productDetails.prices.length && productVariants.length\" class=\"utlz-col-md-12\">\r\n        <utlz-group-matrix :variants=\"productVariants\" />\r\n      </div> -->\r\n      <!-- END BESPOKE DEPG-13 -->\r\n\r\n\r\n      <!-- BESPOKE DEPA: Used custom control for the upselling products -->\r\n      <!-- <div v-if=\"relatedProducts.upSelling.length\" class=\"related-products upselling utlz-col-12 \">\r\n        <utlz-product-carousel\r\n          :products=\"relatedProducts.upSelling\"\r\n          :blockSize=\"relatedProductBlockSize\"\r\n          :title=\"titleUpSelling\"\r\n        ></utlz-product-carousel>        \r\n      </div> -->      \r\n\r\n      <!-- <div v-if=\"relatedProducts.crossSelling.length\" class=\"related-products upselling utlz-col-12 \">\r\n        <utlz-product-carousel\r\n          :products=\"relatedProducts.crossSelling\"\r\n          :blockSize=\"relatedProductBlockSize\"\r\n          :title=\"titleCrossSelling\"\r\n        ></utlz-product-carousel>\r\n      </div> -->\r\n      <utlz-related-products-matrix \r\n        :products=\"relatedProducts.crossSelling\"\r\n        :customDecimals=\"productDetails.customDecimals\"\r\n      ></utlz-related-products-matrix>\r\n      <!-- END BESPOKE DEPA -->\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapGetters, mapActions } from 'vuex';\r\nimport ProductPrice from 'src/components/webshop/product-price/ProductPrice.vue';\r\nimport OrderProduct from 'src/components/webshop/order-product/OrderProduct.vue';\r\nimport ProductStock from 'src/components/webshop/product-stock/ProductStock.vue';\r\nimport ProductGroupMatrix from 'src/components/webshop/products/product-group/ProductGroupMatrix.vue';\r\nimport ProductGroupDropdown from 'src/components/webshop/products/product-group/ProductGroupDropdowns.vue';\r\nimport FavoritesControl from 'src/components/webshop/favorites/FavoritesControl.vue';\r\nimport Gallery from 'src/components/ui/gallery/Gallery.vue';\r\nimport Tabs from 'src/components/ui/tabs/Tabs.vue';\r\nimport ProductVideos from 'src/components/webshop/products/product-videos/ProductVideos.vue';\r\nimport ProductDocuments from 'src/components/webshop/products/product-documents/ProductDocuments.vue';\r\nimport ProductCarousel from 'src/components/webshop/products/product-carousel/ProductCarousel.vue';\r\n// BESPOKE\r\nimport RelatedProductsMatrix from './../../../../bespoke-components/RelatedProductsMatrix.vue';\r\n// END BESPOKE\r\nexport default {\r\n  components: {\r\n    'utlz-product-price': ProductPrice,\r\n    'utlz-order-product': OrderProduct,\r\n    'utlz-product-stock': ProductStock,\r\n    'utlz-group-matrix': ProductGroupMatrix,\r\n    'utlz-group-dropdown': ProductGroupDropdown,\r\n    'utlz-favorites-control': FavoritesControl,\r\n    'utlz-gallery': Gallery,\r\n    'utlz-tabs': Tabs,\r\n    'utlz-product-carousel': ProductCarousel,\r\n    'utlz-product-videos': ProductVideos,\r\n    'utlz-product-documents': ProductDocuments,\r\n    // BESPOKE\r\n    'utlz-related-products-matrix': RelatedProductsMatrix\r\n    // END BESPOKE\r\n  },\r\n  data () {\r\n    return {\r\n      expanded: false,\r\n      productDescriptionHeight: 0,\r\n      titleUpSelling: window.vue.translations.title.title_product_relations,\r\n      titleCrossSelling: window.vue.translations.title.title_product_relations_cross,\r\n      tabs: [\r\n        { id: 'description', description: window.vue.translations.label.label_tab_product_desc, active: true, visible: false },\r\n        { id: 'documents', description: window.vue.translations.label.label_tab_product_documents, active: false, visible: false },\r\n        { id: 'videos', description: window.vue.translations.label.label_tab_product_videos, active: false, visible: false }\r\n      ]\r\n    }\r\n  },\r\n  watch: {    \r\n    longDescription (val) { this.tabs[0].visible = val.length > 0 },\r\n    documents (val) { this.tabs[1].visible = val.length > 0; },\r\n    videos (val) { this.tabs[2].visible = val.length > 0; } \r\n  },\r\n  computed: {\r\n    ...mapState('productDetails', ['productDetails', 'productVariants', 'relatedProducts', 'videos']),\r\n    // BESPOKE DEPA\r\n    // Added bespokeGlobalWs and language\r\n    ...mapGetters([\r\n      'showStock', \r\n      'showPrices', \r\n      'showFavorites', \r\n      'showOrderProduct', \r\n      'stockLimit', \r\n      'useOrderLineComments', \r\n      'relatedProductBlockSize', \r\n      'bespokeGlobalWs', \r\n      'language']),\r\n    ...mapGetters('productDetails', ['documents']),\r\n    // BESPOKE\r\n    showOrderComment() {\r\n      var customBools = this.productDetails.customBooleans;\r\n      console.log('custom_bools:', customBools);\r\n      return customBools.SHOW_PROD_COMMENT && !customBools.CUSTOM_GLAS_PROD && !customBools.CUSTOM_CANOPY_PROD;\n    },\r\n    // END BESPOKE\r\n    longDescription() {\r\n      return this.productDetails.longDescription;\r\n    },\r\n    useCollapse () {\r\n      return this.productDescriptionHeight > 150;\r\n    },\r\n    showOrderProductControl () {\r\n      // BESPOKE DEPA\r\n      // Show der product if user is logged in\r\n      if (this.showOrderProduct) {\r\n        return true;\r\n      }\r\n      // END BESPOKE DEPA\r\n      if (!this.showPrices) {\r\n        return false;\r\n      } else if (this.showOrderProduct) {\r\n        if (!this.stockLimit) {\r\n          return true;\r\n        } else if (this.stockLimit && this.productDetails.stock !== null) {\r\n          return this.stockLimit && this.productDetails.stock.stockTotal > 0;\r\n        } else {\r\n          return false;\r\n        }\r\n      } else {\r\n        return false;\r\n      }\r\n    },\r\n    productProperties () {\r\n      return Object.keys(this.productDetails.properties).map(x => {\r\n        return { key: x, value: this.productDetails.properties[x] }\r\n      });\r\n    },\r\n    images () {\r\n      let images = [];\r\n\r\n      images.push(this.productDetails.imageUrl)\r\n\r\n      this.productDetails.images.forEach(element => {\r\n        images.push(element);\r\n      });\r\n\r\n      return images\r\n    },\r\n    // BESPOKE DEPU-2\r\n    productStocked () {\r\n      let productStocked = this.productDetails.customStrings[\"FF_DESC2_\" + this.language];\r\n      return productStocked !== undefined ? productStocked : \"\";\r\n    }\r\n    // END BESPOKE DEPU-2\r\n  },\r\n  updated () {\r\n    if (this.$refs.productDescription !== undefined) {\r\n      this.productDescriptionHeight = this.$refs.productDescription.clientHeight;\r\n    }\r\n  },\r\n  mounted () {\r\n    this.initDetails();\r\n    // BESPOKE DEPA-31\r\n    // Moved calculator to placheolder\r\n    $('#ph-calculator').append($('.uc-calculation-tool'));\r\n    // END BESPOKE DEPA-31\r\n  },\r\n  methods: {\r\n    ...mapActions('productDetails', ['initDetails'])\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElasticProductDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElasticProductDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ElasticProductDetails.vue?vue&type=template&id=d4a8792e&\"\nimport script from \"./ElasticProductDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./ElasticProductDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"utlz-product-block utlz-reset\"},[_c('transition-group',{staticClass:\"list-items-wrapper utlz-row\",attrs:{\"name\":\"fade\",\"tag\":\"div\"}},_vm._l((_vm.products),function(product){return _c('utlz-product-list-item',{key:product.id,staticClass:\"product-list-item\",attrs:{\"product\":product,\"blockSize\":_vm.config.ItemSize}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n    <div class=\"utlz-product-block utlz-reset\">\r\n        <transition-group name=\"fade\" tag=\"div\" class=\"list-items-wrapper utlz-row\">\r\n            <utlz-product-list-item\r\n              v-for=\"product in products\"\r\n              :key=\"product.id\"\r\n              :product=\"product\"\r\n              :blockSize=\"config.ItemSize\"\r\n              class=\"product-list-item\">\r\n            </utlz-product-list-item>\r\n          </transition-group>\r\n    </div>\r\n</template>\r\n<script>\r\nimport ProductListItem from 'src/components/webshop/products/product-list-item/ProductListItem.vue';\r\nimport { Product } from 'src/models/product.model';\r\nimport axios from 'axios';\r\n\r\nexport default {\r\n  computed: {\r\n    config () {\r\n      return this.$root.$data.config;\r\n    },\r\n    productCodes () {\r\n      return this.config.ProductCodes;\r\n    },\r\n    productInformationUrl () {\r\n      const endpoint = window.vue.globalData.endpoints.productInformation;\r\n      const client = this.config.ClientCode;\r\n      const language = this.config.Language;\r\n\r\n      return `${endpoint}/${client}?language=${language}`;\r\n    }\r\n  },\r\n  components: {\r\n    'utlz-product-list-item': ProductListItem\r\n  },\r\n  data () {\r\n    return {\r\n      products: []\r\n    }\r\n  },\r\n  methods: {\r\n    getProductInformation () {\r\n      axios.post(this.productInformationUrl, this.productCodes)\r\n        .then(res => {\r\n          const products = res.data.map(product => new Product(product));\r\n          this.products = products;\r\n          if (this.config.ShowStock) {\r\n            this.getProductStock();\r\n          } else {\r\n            products.forEach(product => { product.setStock({ stockTotal: 0 }); })\r\n          }\r\n\r\n          if (this.config.ShowPrices) {\r\n            this.getProductPrice()\r\n          }\r\n\r\n          if (this.config.ShowFavorites) {\r\n            this.getCustomerLists();\r\n          }\r\n        });\r\n    },\r\n    getProductStock () {\r\n      const url = window.vue.globalData.endpoints.productStockUrl\r\n      this.products.forEach(productInitial => {\r\n        axios.post(url, { 'productCode': productInitial.id })\r\n          .then(res => {\r\n            productInitial.setStock(res.data.d);\r\n            // let index = this.products.findIndex(product => product.id === productWithStock.id);\r\n            // state.products[index] = productWithStock;\r\n          });\r\n      });\r\n    },\r\n    getProductPrice () {\r\n      let priceRequestWrapper = {};\r\n      priceRequestWrapper.CustomerId = window.vue.globalData.userInformation.userLoggedOn ? window.vue.globalData.userInformation.customerId : '';\r\n      priceRequestWrapper.Pricelist = window.vue.globalData.userInformation.customerPriceList;\r\n      priceRequestWrapper.Products = this.products.map(prod => {\r\n        let ret = {};\r\n        ret.ProductId = prod.id;\r\n        ret.ProductGroup = prod.discountGroup;\r\n\r\n        ret.ProductUnit = '';\r\n        if (prod.units !== undefined && prod.units !== null) {\r\n          ret.ProductUnit = prod.units.length > 0 ? prod.units[0].code : '';\r\n        }\r\n        return ret;\r\n      });\r\n\r\n      let endpoint = window.vue.globalData.endpoints.productPriceUrl + 'prices/' + window.vue.globalData.userInformation.clientCode\r\n\r\n      axios.post(endpoint, priceRequestWrapper)\r\n        .then(res => {\r\n          res.data.forEach(price => {\r\n            let product = this.products[this.products.findIndex(x => x.id === price.productId)];\r\n            product.setPrices(Object.keys(price.volumes).map(key => price.volumes[key]));\r\n          });\r\n        });\r\n    },\r\n    getCustomerLists () {\r\n      const endpoint = `${window.vue.globalData.endpoints.customerList}/GetProductLists?debtorId=${window.vue.globalData.userInformation.customerId}`;\r\n      axios.post(endpoint, this.products.map(prod => prod.id))\r\n        .then(res => {\r\n          Object.keys(res.data).forEach(prodCode => {\r\n            let filteredProduct = this.products[this.products.findIndex(product => product.id === prodCode)];\r\n            if (filteredProduct !== undefined) {\r\n              filteredProduct.setCustomerLists(res.data[prodCode]);\r\n            }\r\n          });\r\n        });\r\n    }\r\n  },\r\n  created () {\r\n    this.getProductInformation();\r\n  }\r\n}\r\n</script>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductBlock.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductBlock.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProductBlock.vue?vue&type=template&id=4a4cab5c&\"\nimport script from \"./ProductBlock.vue?vue&type=script&lang=js&\"\nexport * from \"./ProductBlock.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-elastic-product-filters utlz-reset col-md-12\"},[_c('transition',{attrs:{\"name\":\"slide-fade\"}},[(true)?_c('div',{ref:'filters-container',staticClass:\"filters-container\"},[(false)?_c('a',{staticClass:\"close-filters-btn show-mobile\",on:{\"click\":function($event){return _vm.toggleMobileFilters()}}},[_c('i',{staticClass:\"fa fa-times\"})]):_vm._e(),_vm._l((_vm.filters),function(filterGroup,i){return _c('div',{key:'filter-group-' + i,staticClass:\"filters-wrapper\"},[_c('div',{staticClass:\"filter-header\"},[_c('h2',[_vm._v(_vm._s(filterGroup.label))]),_c('i',{staticClass:\"dd-arrow fa fa-caret-down\"})]),_c('div',{staticClass:\"filter-content\"},[_c('ul',{ref:'filter-group-list' + i,refInFor:true},_vm._l((filterGroup.value),function(filterObj,id){return _c('li',{key:'filter-group-item-' + id},[_c('div',{staticClass:\"checkbox-group\"},[_c('input',{attrs:{\"type\":\"checkbox\",\"id\":'checkbox-filter-' + filterObj.key},domProps:{\"checked\":filterObj.active === true},on:{\"change\":function($event){return _vm.checkedFilter($event, { id: filterGroup.id, value: filterObj.key, elemId: 'checkbox-filter-' + filterObj.key })}}}),_c('label',{attrs:{\"for\":'checkbox-filter-' + filterObj.key}},[_c('span',{staticClass:\"key\"},[_vm._v(\"\\n                    \"+_vm._s(filterObj.key)+\"\\n                  \")]),_c('span',{staticClass:\"count\"},[_vm._v(\"\\n                    (\"+_vm._s(filterObj.value)+\")\\n                  \")])])])])}),0),(false)?_c('div',{staticClass:\"collapse-btns\",on:{\"click\":function($event){return _vm.collapseList('filter-group-list' + i)}}},[_c('div',{staticClass:\"show-more-btn\"},[_c('span',{staticClass:\"text-link\"},[_c('i',{staticClass:\"fa fa-angle-double-down\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_filter_collapse_more' }),expression:\"{ type: 'label', code: 'label_filter_collapse_more' }\"}]})]),_c('span',{staticClass:\"total-collapsed count\"},[_vm._v(\"(\"+_vm._s(filterGroup.value.length - 100)+\")\")])]),_c('div',{staticClass:\"show-less-btn\"},[_c('span',{staticClass:\"text-link\"},[_c('i',{staticClass:\"fa fa-angle-double-up\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_filter_collapse_less'}),expression:\"{ type: 'label', code: 'label_filter_collapse_less'}\"}]})])])]):_vm._e()])])})],2):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-elastic-product-filters utlz-reset col-md-12\">\r\n\r\n    <transition name=\"slide-fade\">\r\n      <!-- BESPOKE DEPA: Changed v=if to true -->\r\n      <div v-if=\"true\" class=\"filters-container\" :ref=\"'filters-container'\">\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n        \r\n        <!-- BESPOKE DEPA: Changed v=if to false -->\r\n        <a v-if=\"false\" @click=\"toggleMobileFilters()\" class=\"close-filters-btn show-mobile\">\r\n          <i class=\"fa fa-times\"></i>\r\n        </a>\r\n        <!-- END BESPOKE DEPA -->\r\n\r\n        <div v-for=\"(filterGroup, i) in filters\" :key=\"'filter-group-' + i\" class=\"filters-wrapper\">\r\n          <div class=\"filter-header\">\r\n            <h2>{{ filterGroup.label }}</h2>\r\n            <!-- BESPOKE NOX-71: Added fa.caret-down -->\r\n            <i class=\"dd-arrow fa fa-caret-down\"></i>\r\n            <!-- END BESPOKE NOX-71 -->\r\n          </div>\r\n          <div class=\"filter-content\">\r\n            <!-- BESPOKE NOX-71: Removed .collapsed :class binding fucntionality-->\r\n            <ul :ref=\"'filter-group-list' + i\">\r\n              <!-- END BESPOKE NOX-71 -->\r\n              <li v-for=\"(filterObj, id) in filterGroup.value\" :key=\"'filter-group-item-' + id\">\r\n                <div class=\"checkbox-group\">\r\n                  <input type=\"checkbox\" :id=\"'checkbox-filter-' + filterObj.key\" @change=\"checkedFilter($event, { id: filterGroup.id, value: filterObj.key, elemId: 'checkbox-filter-' + filterObj.key })\" :checked=\"filterObj.active === true\">\r\n                  <label :for=\"'checkbox-filter-' + filterObj.key\">\r\n                    <span class=\"key\">\r\n                      {{ filterObj.key }}\r\n                    </span>\r\n                    <span class=\"count\">\r\n                      ({{ filterObj.value }})\r\n                    </span>\r\n                  </label>\r\n                </div>\r\n              </li>\r\n            </ul>\r\n            <!-- BESPOKE NOX-71: Changed v-if to false instead of using filterGroup list length -->\r\n            <div v-if=\"false\" class=\"collapse-btns\" @click=\"collapseList('filter-group-list' + i)\">\r\n              <!-- END BESPOKE NOX-71 -->\r\n              <div class=\"show-more-btn\">\r\n                <span class=\"text-link\">\r\n                  <i class=\"fa fa-angle-double-down\"></i>\r\n                  <span v-translation=\"{ type: 'label', code: 'label_filter_collapse_more' }\"></span>\r\n                </span>\r\n                <span class=\"total-collapsed count\">({{ filterGroup.value.length - 100 }})</span>\r\n              </div>\r\n              <div class=\"show-less-btn\">\r\n                <span class=\"text-link\">\r\n                  <i class=\"fa fa-angle-double-up\"></i>\r\n                  <span v-translation=\"{ type: 'label', code: 'label_filter_collapse_less'}\"></span>\r\n                </span>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n    </transition>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapGetters, mapActions } from 'vuex';\r\nexport default {\r\n  computed: {\r\n    ...mapState('elastic', ['filters']),\r\n    ...mapGetters('elastic', ['showMobileFilters'])\r\n  },\r\n  methods: {\r\n    ...mapActions('elastic', ['updateFilters', 'toggleMobileFilters']),\r\n    checkedFilter (ev, filter) {\r\n      const payload = {\r\n        filterActive: ev.target.checked,\r\n        filterId: filter.id,\r\n        filterValue: filter.value\r\n      };\r\n      if (ev.target.checked) {\r\n        document.getElementById(filter.elemId).checked = false;\r\n        // BESPOKE DEPG\r\n        // Set class so we can style active filters as fixed items\r\n        $('#' + filter.elemId).closest('.filter-content').addClass('expanded');\r\n        // END BESPOKE DEGP\r\n      } else {\r\n        // BESPOKE DEPG\r\n        // Set class so we can style active filters as fixed items\r\n        $('#' + filter.elemId).closest('.filter-content').removeClass('expanded');\r\n        // END BESPOKE DEGP\r\n        document.getElementById(filter.elemId).checked = true;\r\n      }\r\n      this.updateFilters(payload);\r\n    },\r\n    collapseList ($event) {\r\n      this.$refs[$event][0].classList.toggle('collapsed');\r\n    }\r\n  },\r\n  // BESPOKE DEPG\r\n  updated () {\r\n    $('.cmp-elastic-product-filters :checked').closest('.filter-content').addClass('expanded');\r\n  },\r\n  created() {\r\n    $('.category-text').insertBefore($('.category-text').prev())\r\n  }\r\n  // END BESPOKE DEPG\r\n}\r\n</script>\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElasticProductFilters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElasticProductFilters.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ElasticProductFilters.vue?vue&type=template&id=a28502de&\"\nimport script from \"./ElasticProductFilters.vue?vue&type=script&lang=js&\"\nexport * from \"./ElasticProductFilters.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"utlz-shopping-cart-control\"},[_c('ul',_vm._l((_vm.shoppingCart),function(row){return _c('li',{key:row.id},[_c('h5',[_vm._v(_vm._s(row.id))])])}),0),_c('span',[_vm._v(_vm._s(_vm.totalPrice))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"utlz-shopping-cart-control\">\r\n    <ul>\r\n      <li v-for=\"row in shoppingCart\" v-bind:key=\"row.id\">\r\n        <h5>{{ row.id }}</h5>\r\n      </li>\r\n    </ul>\r\n    <span>{{ totalPrice }}</span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  name: 'shopping',\r\n  computed: {\r\n    ...mapGetters('shoppingCart', ['shoppingCart', 'totalPrice'])\r\n  }\r\n};\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartControl.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ShoppingCartControl.vue?vue&type=template&id=16b946fa&\"\nimport script from \"./ShoppingCartControl.vue?vue&type=script&lang=js&\"\nexport * from \"./ShoppingCartControl.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","export function createUrlParams (paramsObj) {\r\n  let urlParams = '?';\r\n  Object.keys(paramsObj).forEach((key, i) => {\r\n    if (i) urlParams += '&';\r\n    if (typeof paramsObj[key] === 'object' && Object.entries(paramsObj[key]).length === 0) {\r\n      urlParams += `${key}=`;\r\n    } else if (typeof paramsObj[key] === 'object' && Object.entries(paramsObj[key]).length !== 0) {\r\n      let arrParams = '';\r\n      let paramKeys = Object.keys(paramsObj[key]);\r\n      paramKeys.forEach((param, i) => {\r\n        let values = paramsObj[key][param].Values.filter(val => val !== '');\r\n\r\n        if (values.length) {\r\n          arrParams += `${param}[${values}]`;\r\n          if (i < paramKeys.length - 1) {\r\n            arrParams += '|';\r\n          }\r\n        } else {\r\n          delete paramsObj[key][param];\r\n        }\r\n      });\r\n      urlParams += `${key}[]=${arrParams}`;\r\n    } else {\r\n      urlParams += `${key}=${paramsObj[key]}`;\r\n    }\r\n  });\r\n  return encodeURI(urlParams);\r\n}\r\n\r\nexport function getUrlParams (url) {\r\n  const obj = {};\r\n  const decodedUrl = decodeURI(url);\r\n  const queryString = decodedUrl ? decodedUrl.split('?')[1] : window.location.search.slice(1);\r\n\r\n  if (queryString) {\r\n    let queryParts = queryString.split('&');\r\n    queryParts.forEach(part => {\r\n      let parts = part.split('=');\r\n      let queryKey = parts[0].replace('[', '').replace(']', '');\r\n      let queryValue = parts[1];\r\n\r\n      // If value is an array &filters[]\r\n      if (queryValue.includes('[')) {\r\n        // Add new param entry\r\n        obj[queryKey] = {};\r\n        let queryValueArr = queryValue.split('|');\r\n        // If query array has more than one array\r\n        if (queryValueArr.length) {\r\n          let arrObj = {};\r\n          queryValueArr.forEach(val => {\r\n            if (val !== '') {\r\n              let parts = val.split('[');\r\n              let key = parts[0];\r\n              let values = parts[1].replace(']', '');\r\n              arrObj[key] = [values];\r\n            }\r\n          });\r\n          obj[queryKey] = arrObj;\r\n        }\r\n      } else {\r\n        obj[queryKey] = queryValue;\r\n      }\r\n    });\r\n  }\r\n  return obj;\r\n}\r\n","import axios from 'axios';\r\nimport { getUrlParams, createUrlParams } from 'src/utilities/url';\r\nimport { Product } from 'src/models/product.model';\r\n// BESPOKE THERM-46: Added getCurrencySign\r\nimport { getCurrencySign } from 'src/utilities/helpers';\r\n// END BESPOKE THERM-46\r\n\r\nconst state = {\r\n  loadingProducts: true,\r\n  noProductsFound: false,\r\n  productCodes: [],\r\n  products: [],\r\n  showMobileFilters: false,\r\n  totalProducts: 0,\r\n  currentPage: 1,\r\n  totalPages: 1,\r\n  layoutType: '',\r\n  blockSize: 4,\r\n  rangeFrom: 0,\r\n  pageSize: 16,\r\n  queryString: '',\r\n  aggregations: false,\r\n  pricingQueryString: '',\r\n  activeFilters: {},\r\n  filters: [],\r\n  pageSizes: [],\r\n  sort: '',\r\n  sortingType: 0,\r\n  sortingOptions: [],\r\n  customerListId: '',\r\n  searchConfig: {\r\n    UserId: null,\r\n    Category: null,\r\n    StringProperties: null,\r\n    NumericProperties: null,\r\n    StringAggregations: null,\r\n    NumericAggregations: null,\r\n    ExtraQueries: []\r\n  }\r\n};\r\n\r\nconst getters = {\r\n  pageTitle (state) {\r\n    return state.pageTitle ? state.pageTitle : state.queryString;\r\n  },\r\n  layoutType (state) {\r\n    return state.layoutType;\r\n  },\r\n  language (state, getters, rootState, rootGetters) {\r\n    return rootGetters.language;\r\n  },\r\n  blockSize (state) {\r\n    return state.blockSize;\r\n  },\r\n  totalProducts (state) {\r\n    return state.totalProducts;\r\n  },\r\n  totalPages () {\r\n    return Math.ceil(state.totalProducts / state.pageSize);\r\n  },\r\n  currentPage (state) {\r\n    return state.currentPage;\r\n  },\r\n  loadingProducts (state) {\r\n    return state.loadingProducts;\r\n  },\r\n  pageRange (state, getters) {\r\n    let to;\r\n    let pageFillCount = state.totalProducts % state.pageSize;\r\n    if (pageFillCount && getters.totalPages === state.currentPage) {\r\n      to = state.rangeFrom + pageFillCount;\r\n    } else {\r\n      to = state.pageSize + state.rangeFrom;\r\n    }\r\n    return {\r\n      from: state.rangeFrom + 1,\r\n      to: to\r\n    };\r\n  },\r\n  showMobileFilters (state, getters, rootState, rootGetters) {\r\n    if (rootGetters.screenWidth < 991) {\r\n      return state.showMobileFilters;\r\n    } else {\r\n      return true;\r\n    }\r\n  },\r\n  noProductsFound (state) {\r\n    return state.noProductsFound;\r\n  },\r\n  searchConfig (state, getters, rootState, rootGetters) {\r\n    return {\r\n      UserId: null,\r\n      Category: state.searchConfig.Category,\r\n      StringProperties: state.activeFilters,\r\n      NumericProperties: null,\r\n      StringAggregations: state.searchConfig.StringAggregations,\r\n      NumericAggregations: null,\r\n      ExtraQueries: state.searchConfig.ExtraQueries,\r\n      ExcludeLabels: state.searchConfig.ExcludeLabels,\r\n      ExcludeCategories: state.searchConfig.ExcludeCategories,\r\n      IncludeLabels: state.searchConfig.IncludeLabels,\r\n      MinSearchScore: rootGetters.minScore,\r\n      ShouldIncludeLabels: state.searchConfig.ShouldIncludeLabels\r\n    }\r\n  },\r\n  filters (state) {\r\n    return state.filters;\r\n  },\r\n  elasticProductsEndpoint (state, getters, rootState, rootGetters) {\r\n    const endpoint = rootGetters.elasticProductsEndpoint;\r\n    const from = state.rangeFrom;\r\n    const language = rootGetters.language;\r\n    const size = state.pageSize;\r\n    const aggregations = state.aggregations;\r\n    const pricingQueryString = state.pricingQueryString;\r\n    const customerListId = state.customerListId;\r\n    const query = !state.queryString ? '' : state.queryString;\r\n    const customerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    const client = rootGetters.clientCode;\r\n    const priceListCode = rootGetters.customerPriceList;\r\n    const groupProducts = rootGetters.groupProducts;\r\n    const sort = state.sort;\r\n    const sortingType = state.sortingType;\r\n    var sortingstring = ''\r\n\r\n    if (sort !== null) sortingstring = '&sort=' + sort + '|' + sortingType;\r\n\r\n    return `${endpoint}?lang=${language}${sortingstring}&from=${from}&size=${size}&aggr=${aggregations}&query=${query}&customerId=${customerId}&customerPricelist=${priceListCode}&listId=${customerListId}&client=${client}&pricingQuerystring=${pricingQueryString}&groupProducts=${groupProducts}`;\r\n  },\r\n  productInformationEndpoint (state, getters, rootState, rootGetters) {\r\n    const endpoint = rootGetters.productInformationEndpoint;\r\n    const client = rootGetters.clientCode;\r\n    const language = rootGetters.language;\r\n\r\n    return `${endpoint}/${client}?language=${language}`;\r\n  },\r\n  customerListId (state) {\r\n    return state.customerListId;\r\n  },\r\n  productCodes (state) {\r\n    return state.productCodes;\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setLoadingStatus (state, payload) {\r\n    state.loadingProducts = payload;\r\n  },\r\n  setSortingOptions (state, payload) {\r\n    state.sortingOptions = payload;\r\n  },\r\n  setProducts (state, products) {\r\n    state.products = products;\r\n  },\r\n  noProductsFound (state, productsFound) {\r\n    state.noProductsFound = productsFound;\r\n  },\r\n  setProductCodes (state, productCodes) {\r\n    state.productCodes = productCodes;\r\n  },\r\n  setFilters (state, aggregations) {\r\n    const filters = [...aggregations];\r\n    // Update new filters array with active status based on cached active filters array\r\n    filters.forEach(filter => {\r\n      // check for undefined as aggregations may give back new keys\r\n      if (state.activeFilters[filter.id] !== undefined) {\r\n        filter.value.forEach(filterValue => {\r\n          if (state.activeFilters[filter.id].Values.indexOf(filterValue.key) > -1) {\r\n            filterValue.active = true;\r\n          } else {\r\n            filterValue.active = false;\r\n          }\r\n        });\r\n      }\r\n    });\r\n\r\n    // BESPOKE\r\n    // Sort filter values numerically or alphabetically\r\n    filters.forEach(filter => {\r\n      // Determine alphabetically or numberically based on first filter value\r\n      var filterValue = parseInt(filter.value[0].key);\r\n      if (!Number.isNaN(filterValue)) {\r\n        filter.value = filter.value.sort((a, b) => parseInt(a.key) - parseInt(b.key));\r\n      } else {\r\n        filter.value = filter.value.sort((a, b) => a.key.localeCompare(b.key));\r\n      }\r\n    });\r\n    state.filters = [...filters];\r\n    // END BESPOKE\r\n  },\r\n  setProductStock (state, productWithStock) {\r\n    let index = state.products.findIndex(product => product.id === productWithStock.id);\r\n    state.products[index] = productWithStock;\r\n  },\r\n  setProductPrice (state, productWithPrice) {\r\n    let index = state.products.findIndex(product => product.id === productWithPrice.id);\r\n    state.products[index] = productWithPrice;\r\n  },\r\n  setSeoInformation (state, productWithSEO) {\r\n    let index = state.products.findIndex(product => product.id === productWithSEO.id);\r\n    state.products[index] = productWithSEO;\r\n  },\r\n  setProductImageBanners (state, productWithBanners) {\r\n    let index = state.products.findIndex(product => product.id === productWithBanners.id);\r\n    state.products[index] = productWithBanners;\r\n  },\r\n  setCustomerLists (state, productWithList) {\r\n    let index = state.products.findIndex(product => product.id === productWithList.id);\r\n    state.products[index] = productWithList;\r\n  },\r\n  setTotalProducts (state, totalProducts) {\r\n    state.totalProducts = totalProducts;\r\n  },\r\n  setTotalPages (state) {\r\n    state.totalPages = Math.ceil(state.totalProducts / state.pageSize);\r\n  },\r\n  initConfig (state, config) {\r\n    state.rangeFrom = config.From;\r\n    state.blockSize = config.BlockSize;\r\n    state.aggregations = config.Aggregations;\r\n    state.pricingQueryString = config.PricingQueryString;\r\n    state.customerListId = config.CustomerListId;\r\n    state.queryString = !config.QueryString ? '' : config.QueryString;\r\n    state.pageSize = config.Size;\r\n    state.pageTitle = config.CategoryName;\r\n    state.pageSizes = config.PageSizes;\r\n    state.layoutType = config.LayoutType;\r\n    state.sortingOptions = config.SortingOptions;\r\n    if (state.sortingOptions[0].Field !== '') {\r\n      state.sort = state.sortingOptions[0].Field;\r\n      state.sortingType = state.sortingOptions[0].Type;\r\n    }\r\n  },\r\n  initSearchConfig (state, searchConfig) {\r\n    state.searchConfig = { ...searchConfig };\r\n  },\r\n  updateConfigWithParameters (state, config) {\r\n    state.rangeFrom = config.from;\r\n    state.queryString = config.queryString;\r\n    state.pageSize = config.pageSize;\r\n    state.currentPage = config.currentPage;\r\n  },\r\n  changePage (state, pageNumber) {\r\n    state.rangeFrom = (pageNumber - 1) * state.pageSize;\r\n    state.currentPage = pageNumber;\r\n    state.products = [];\r\n  },\r\n  changeLayout (state, layoutType) {\r\n    state.layoutType = layoutType;\r\n  },\r\n  changePageSize (state, pageSize) {\r\n    state.pageSize = pageSize;\r\n  },\r\n  changePageSorting (state, pageSorting) {\r\n    state.sortingType = pageSorting.Type;\r\n    state.sort = pageSorting.Field;\r\n  },\r\n  updateActiveFilters (state, { filterActive, filterId, filterValue, language }) {\r\n    let activeFilters = { ...state.activeFilters };\r\n    if (typeof activeFilters[filterId] === 'undefined') {\r\n      activeFilters[filterId] = [];\r\n    }\r\n    if (filterActive) {\r\n      activeFilters[filterId] = { Values: [filterValue], Language: language, PartialSearch: false };\r\n    } else {\r\n      delete activeFilters[filterId];\r\n    }\r\n    state.activeFilters = activeFilters;\r\n  },\r\n  setProductVariants (state, { products, productId }) {\r\n    let index = state.products.findIndex(product => product.id === productId);\r\n    state.products[index].setProductVariants(products);\r\n  },\r\n  toggleMobileFilters (state) {\r\n    state.showMobileFilters = !state.showMobileFilters;\r\n  },\r\n  updateUrl (state) {\r\n    let filters = {};\r\n    if (Object.entries(state.activeFilters).length !== 0) {\r\n      Object.keys(state.activeFilters).forEach(filter => {\r\n        filters[filter] = state.activeFilters[filter];\r\n      });\r\n    }\r\n    const urlParams = createUrlParams({\r\n      searchtext: state.queryString,\r\n      from: state.rangeFrom,\r\n      pageSize: state.pageSize,\r\n      filters: filters\r\n    });\r\n    history.pushState({}, '', urlParams);\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  initElastic ({ commit, dispatch }) {\r\n    // BESPOKE THERM-41\r\n    // Get currency sign first\r\n    getCurrencySign().then(res => {\r\n      if (res) {        \r\n        dispatch('readoutUrl');\r\n        dispatch('getProducts');\r\n      }\r\n    });\r\n    // END BESPOKE THERM-41\r\n  },\r\n  readoutUrl ({ commit, rootGetters }) {\r\n    if (window.location.search.length) {\r\n      const params = getUrlParams(location.href);\r\n      const from = parseInt(params.from) ? parseInt(params.from) : 0;\r\n      const pageSize = parseInt(params.pageSize) ? parseInt(params.pageSize) : state.pageSize;\r\n      const queryString = params.searchtext ? params.searchtext : state.queryString;\r\n      const currentPage = from === 0 ? 1 : from / pageSize + 1;\r\n      const filters = params.filters;\r\n\r\n      commit('updateConfigWithParameters', { from: from, pageSize: pageSize, queryString: queryString, currentPage: currentPage });\r\n\r\n      if (typeof filters !== 'undefined') {\r\n        Object.keys(filters).forEach(filter => {\r\n          commit('updateActiveFilters', {\r\n            filterActive: true,\r\n            filterId: filter,\r\n            filterValue: filters[filter][0],\r\n            language: rootGetters.language\r\n          });\r\n        });\r\n      }\r\n    }\r\n  },\r\n  getProducts ({ commit, getters, dispatch, rootGetters }) {\r\n    commit('setLoadingStatus', true);\r\n    if (getters.customerListId !== '') {\r\n      const listEndpoint = `${rootGetters.productsFromList}?listId=${getters.customerListId}&debtorId=${rootGetters.customerId}`\r\n      axios.post(listEndpoint)\r\n        .then(res => {\r\n          // BESPOKE DEPA\r\n          // Added res.data.length to avoid errors if there are no favorites yet\r\n          if (res.data.length) {\r\n            // END BESPOKE DEPA\r\n            commit('setTotalProducts', res.data.length);\r\n            let pagerange = getters.pageRange;\r\n\r\n            commit('setSortingOptions', []);\r\n            commit('setProductCodes', res.data.slice(pagerange.from - 1, pagerange.to).map(x => {\r\n              return { key: x, value: [x] };\r\n            }));\r\n            commit('noProductsFound', false);\r\n            commit('setLoadingStatus', false);\r\n            commit('setTotalPages');\r\n            commit('updateUrl');\r\n            dispatch('getProductInformation');\r\n          } else {\r\n            commit('noProductsFound', true);\r\n          }\r\n        });\r\n    } else {\r\n      axios.post(getters.elasticProductsEndpoint, getters.searchConfig)\r\n        .then(res => {\r\n          if (res.data.products) {\r\n            commit('setProductCodes', res.data.products);\r\n            commit('noProductsFound', false);\r\n\r\n            // Filter sorting 1 is to sort on the description of the filter value\r\n            if (rootGetters.filterSorting === 1) {\r\n              res.data.stringAggregations.forEach(filter => {\r\n                filter = filter.value.sort((a, b) => {\r\n                  var keyA = a.key.toUpperCase();\r\n                  var keyb = b.key.toUpperCase();\r\n\r\n                  if (keyA < keyb) {\r\n                    return -1;\r\n                  }\r\n                  if (keyA > keyb) {\r\n                    return 1;\r\n                  }\r\n                  return 0;\r\n                });\r\n              });\r\n            }\r\n            commit('setFilters', res.data.stringAggregations);\r\n            commit('setTotalProducts', res.data.totalItems);\r\n            commit('setLoadingStatus', false);\r\n            commit('setTotalPages');\r\n            commit('updateUrl');\r\n            dispatch('getProductInformation');\r\n          } else {\r\n            commit('noProductsFound', true);\r\n          }\r\n        })\r\n        .catch(error => {\r\n          commit('noProductsFound', true);\r\n        });\r\n    }\r\n  },\r\n  getProductInformation ({ commit, getters, dispatch, rootGetters }) {\r\n    let mainProductCodes = getters.productCodes.map(code => code.key);\r\n    axios.post(getters.productInformationEndpoint, mainProductCodes)\r\n      .then(res => {\r\n        const products = res.data.map(product => new Product(product));\r\n        \r\n        // BESPOKE DEPA\r\n        // Disable product stock in the product list\r\n        // if (rootGetters.showStock) {\r\n        //   dispatch('getProductStock', products);\r\n        // } else {\r\n        //   products.forEach(product => { product.setStock({ stockTotal: 0 }); })\r\n        // }\r\n        products.forEach(product => { product.setStock({ stockTotal: 0 }); })\r\n        // END BESPOKE DEPA\r\n\r\n        if (rootGetters.showPrices) {\r\n          dispatch('getProductPrices', products);\r\n        }\r\n\r\n        if (rootGetters.showFavorites) {\r\n          dispatch('getCustomerLists', products);\r\n        }\r\n\r\n        dispatch('getProductImageBanners', products);\r\n\r\n        dispatch('getProductSeoInformation', products)\r\n\r\n        commit('setProducts', products);\r\n      });\r\n  },\r\n  getProductSeoInformation ({ commit, getters, dispatch, rootGetters }, products) {\r\n    let endpoint = rootGetters.seoInformationEndpoint + '/GetProductImageInformation';\r\n    let productCodes = products.map(prod => { return prod.id });\r\n\r\n    // axios.post(endpoint, productCodes)\r\n    //   .then(res => {\r\n    //     res.data.forEach(SeoOject => {\r\n    //       let product = products[products.findIndex(x => x.id === SeoOject.ProductId)];\r\n    //       product.setSeoInformation(SeoOject);\r\n    //       commit('setSeoInformation', product);\r\n    //     });\r\n    //   });\r\n  },\r\n  getProductImageBanners ({ rootGetters, commit }, products) {\r\n    let productCodes = products.map(prod => { return prod.id });\r\n    axios.post(rootGetters.productImageBannersUrl, { productCodes: productCodes })\r\n      .then(res => {\r\n        res.data.d.forEach(productBanner => {\r\n          let product = products[products.findIndex(x => x.id === productBanner.Key)];\r\n          product.setProductImageBanners(productBanner.Value);\r\n          commit('setProductImageBanners', product);\r\n        });\r\n      });\r\n  },\r\n  getProductPrices ({ commit, getters, dispatch, rootGetters }, products) {\r\n    let priceRequestWrapper = {};\r\n    priceRequestWrapper.CustomerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    priceRequestWrapper.Pricelist = rootGetters.customerPriceList;\r\n    priceRequestWrapper.Products = products.map(prod => {\r\n      let ret = {};\r\n      ret.ProductId = prod.id;\r\n      ret.ProductGroup = prod.discountGroup;\r\n\r\n      ret.ProductUnit = '';\r\n      if (prod.units !== undefined && prod.units !== null) {\r\n        ret.ProductUnit = prod.units.length > 0 ? prod.units[0].code : '';\r\n      }\r\n      return ret;\r\n    });\r\n\r\n    let endpoint = rootGetters.productPriceEndpoint + 'prices/' + rootGetters.clientCode\r\n\r\n    axios.post(endpoint, priceRequestWrapper)\r\n      .then(res => {\r\n        res.data.forEach(price => {\r\n          let product = products[products.findIndex(x => x.id === price.productId)];\r\n\r\n          const pricesObj = [];\r\n          Object.keys(price.volumes).forEach(key => {\r\n            pricesObj.push({\r\n              price: price.volumes[key].price,\r\n              basePrice: price.volumes[key].basePrice,\r\n              isSalesAction: price.volumes[key].isSalesAction,\r\n              quantity: Math.round(parseInt(key))\r\n            });\r\n          });\r\n\r\n          product.setPrices(pricesObj);\r\n          commit('setProductPrice', product);\r\n        });\r\n      });\r\n  },\r\n  getProductVariants ({ commit, dispatch, rootGetters, getters }, { variantCode, productId }) {\r\n    const productVariantCodes = getters.productCodes.filter(code => code.key === variantCode)[0].value;\r\n    axios.post(getters.productInformationEndpoint, productVariantCodes)\r\n      .then(res => {\r\n        const products = res.data.map(product => new Product(product));\r\n        if (rootGetters.showStock) {\r\n          products.forEach((product, index) => {\r\n            axios.post(rootGetters.productStockEndpoint, { 'productCode': product.id })\r\n              .then(res => {\r\n                product.setStock(res.data.d);\r\n              });\r\n          });\r\n        } else {\r\n          products.forEach(product => { product.setStock({ stockTotal: 0 }); })\r\n        }\r\n        commit('setProductVariants', { products: products, productId: productId });\r\n        dispatch('getProductVariantPrices', products);\r\n      });\r\n  },\r\n  getProductVariantPrices ({ commit, getters, dispatch, rootGetters }, products) {\r\n    let priceRequestWrapper = {};\r\n    priceRequestWrapper.CustomerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    priceRequestWrapper.Pricelist = rootGetters.customerPriceList;\r\n    priceRequestWrapper.Products = products.map(prod => {\r\n      let ret = {};\r\n      ret.ProductId = prod.id;\r\n      ret.ProductGroup = prod.discountGroup;\r\n\r\n      ret.ProductUnit = '';\r\n      if (prod.units !== undefined && prod.units !== null) {\r\n        ret.ProductUnit = prod.units.length > 0 ? prod.units[0].code : '';\r\n      }\r\n      return ret;\r\n    });\r\n\r\n    let endpoint = rootGetters.productPriceEndpoint + 'prices/' + rootGetters.clientCode\r\n\r\n    axios.post(endpoint, priceRequestWrapper)\r\n      .then(res => {\r\n        res.data.forEach(price => {\r\n          let product = products[products.findIndex(x => x.id === price.productId)];\r\n          product.setPrices(Object.keys(price.volumes).map(key => price.volumes[key]));\r\n        });\r\n      });\r\n  },\r\n  getCustomerLists ({ commit, getters, rootGetters }, products) {\r\n    const endpoint = `${rootGetters.getProductsInListsEndpoint}?debtorId=${rootGetters.customerId}`;\r\n    axios.post(endpoint, getters.productCodes.map(code => code.key))\r\n      .then(res => {\r\n        Object.keys(res.data).forEach(prodCode => {\r\n          let filteredProduct = products[products.findIndex(product => product.id === prodCode)];\r\n          if (filteredProduct !== undefined) {\r\n            filteredProduct.setCustomerLists(res.data[prodCode]);\r\n            commit('setCustomerLists', filteredProduct);\r\n          }\r\n        });\r\n      });\r\n  },\r\n  updateFilters ({ commit, dispatch, rootGetters }, changedFilter) {\r\n    commit('updateActiveFilters', { ...changedFilter, language: rootGetters.language });\r\n    commit('changePage', 1);\r\n    dispatch('getProducts');\r\n  },\r\n  getProductStock ({ commit, rootGetters }, products) {\r\n    products.forEach(product => {\r\n      axios.post(rootGetters.productStockEndpoint, { 'productCode': product.id })\r\n        .then(res => {\r\n          product.setStock(res.data.d);\r\n          commit('setProductStock', product);\r\n        });\r\n    });\r\n  },\r\n  changePage ({ commit, dispatch }, pageNumber) {\r\n    commit('changePage', pageNumber);\r\n    dispatch('getProducts');\r\n  },\r\n  changePageSize ({ commit, dispatch }, pageSize) {\r\n    commit('changePageSize', pageSize);\r\n    commit('changePage', 1);\r\n    dispatch('getProducts');\r\n  },\r\n  changePageSorting ({ commit, dispatch }, pageSorting) {\r\n    commit('changePageSorting', pageSorting);\r\n    commit('changePage', 1);\r\n    dispatch('getProducts');\r\n  },\r\n  changeLayout ({ commit }, layoutType) {\r\n    commit('changeLayout', layoutType);\r\n  },\r\n  toggleMobileFilters ({ commit }) {\r\n    commit('toggleMobileFilters');\r\n  }\r\n};\r\n\r\nexport default {\r\n  namespaced: true,\r\n  state: state,\r\n  getters: getters,\r\n  actions: actions,\r\n  mutations: mutations\r\n};\r\n","import axios from 'axios';\r\nimport { Product } from 'src/models/product.model';\r\n\r\nfunction defaultProductInformationEndpoint () {\r\n  const getters = window.vuexStore.$store.getters;\r\n  return `${getters.productInformationEndpoint}/${getters.clientCode}?language=${getters.language}`;\r\n}\r\n\r\nfunction defaultStockEndpoint () {\r\n  const getters = window.vuexStore.$store.getters;\r\n  return getters.productStockEndpoint;\r\n}\r\n\r\nfunction defaultProductPriceEndpoint () {\r\n  const getters = window.vuexStore.$store.getters;\r\n  return getters.productPriceEndpoint + 'prices/' + getters.clientCode;\r\n}\r\n\r\nfunction defaultCustomerListEndpoint () {\r\n  const getters = window.vuexStore.$store.getters;\r\n  return `${getters.getProductsInListsEndpoint}?debtorId=${getters.customerId}`;\r\n}\r\n\r\nfunction defaultProductSeoEndpoint () {\r\n  const getters = window.vuexStore.$store.getters;\r\n  return getters.seoInformationEndpoint + '/GetProductImageInformation';\r\n}\r\n\r\nexport function getProductInformation ({ prodCodes, endpoint, getStock = true, getPrices = true, getCustomerLists = true, getSeoInformation = true }) {\r\n  const productInformationEndpoint = endpoint || defaultProductInformationEndpoint();\r\n\r\n  return new Promise((resolve, reject) => {\r\n    axios.post(productInformationEndpoint, prodCodes).then(res => {\r\n      if (res.data) {\r\n        const products = res.data.map(product => new Product(product));\r\n        const retrievedStock = getStock ? getProductStock(products) : false;\r\n        const retrievedPrices = getPrices ? getProductPrice(products) : false;\r\n        const retrievedCustomerLists = getCustomerLists ? getProductCustomerLists(products) : false;\r\n        const retrievedSeo = getSeoInformation ? getProductSeoInformation(products) : false;\r\n\r\n        resolve({\r\n          products: products,\r\n          retrievedStock: retrievedStock,\r\n          retrievedPrices: retrievedPrices,\r\n          retrievedCustomerLists: retrievedCustomerLists,\r\n          retrievedSeo: retrievedSeo\r\n        });\r\n      }\r\n    });\r\n  });\r\n}\r\n\r\nexport function getProductStock (products, endpoint) {\r\n  const getters = window.vuexStore.$store.getters;\r\n\r\n  return new Promise((resolve, reject) => {\r\n    if (getters.showStock) {\r\n      const stockEndpoint = endpoint || defaultStockEndpoint();\r\n      let productStockFetched = 0;\r\n\r\n      products.forEach(product => {\r\n        axios.post(stockEndpoint, { 'productCode': product.id })\r\n          .then(res => {\r\n            product.setStock(res.data.d);\r\n            productStockFetched++;\r\n            if (productStockFetched === products.length) {\r\n              resolve(true);\r\n            }\r\n          });\r\n      });\r\n    } else {\r\n      products.forEach(product => { product.setStock({ stockTotal: 0 }); })\r\n      resolve(true);\r\n    }\r\n  })\r\n}\r\n\r\nexport function getProductPrice (products, endpoint) {\r\n  const getters = window.vuexStore.$store.getters;\r\n  return new Promise((resolve, reject) => {\r\n    if (getters.showPrices) {\r\n      let productPricesFetched = 0;\r\n\r\n      let priceRequestWrapper = {};\r\n      priceRequestWrapper.CustomerId = getters.userLoggedOn ? getters.customerId : '';\r\n      priceRequestWrapper.Pricelist = getters.customerPriceList;\r\n      priceRequestWrapper.Products = products.map(prod => {\r\n        let ret = {};\r\n        ret.ProductId = prod.id;\r\n        ret.ProductGroup = prod.discountGroup;\r\n\r\n        ret.ProductUnit = '';\r\n        if (prod.units !== undefined && prod.units !== null) {\r\n          ret.ProductUnit = prod.units.length > 0 ? prod.units[0].code : '';\r\n        }\r\n        return ret;\r\n      });\r\n\r\n      let pricingEndpoint = endpoint || defaultProductPriceEndpoint();\r\n\r\n      axios.post(pricingEndpoint, priceRequestWrapper)\r\n        .then(res => {\r\n          res.data.forEach(price => {\r\n            let product = products[products.findIndex(x => x.id === price.productId)];\r\n\r\n            const pricesObj = [];\r\n            Object.keys(price.volumes).forEach(key => {\r\n              pricesObj.push({\r\n                price: price.volumes[key].price,\r\n                basePrice: price.volumes[key].basePrice,\r\n                isSalesAction: price.volumes[key].isSalesAction,\r\n                quantity: Math.round(parseInt(key))\r\n              });\r\n            });\r\n\r\n            product.setPrices(pricesObj);\r\n            productPricesFetched++;\r\n            if (productPricesFetched === products.length) {\r\n              resolve(true);\r\n            }\r\n          });\r\n        });\r\n    } else {\r\n      resolve(true)\r\n    }\r\n  });\r\n}\r\n\r\nexport function getProductCustomerLists (products, endpoint) {\r\n  const getters = window.vuexStore.$store.getters;\r\n\r\n  return new Promise((resolve, reject) => {\r\n    if (getters.showFavorites) {\r\n      const customerListEndpoint = endpoint || defaultCustomerListEndpoint();\r\n      axios.post(customerListEndpoint, products.map(product => product.id))\r\n        .then(res => {\r\n          Object.keys(res.data).forEach(prodCode => {\r\n            let filteredProduct = products[products.findIndex(product => product.id === prodCode)];\r\n            if (filteredProduct !== undefined) {\r\n              filteredProduct.setCustomerLists(res.data[prodCode]);\r\n            }\r\n          });\r\n          resolve(true);\r\n        });\r\n    } else {\r\n      resolve(true);\r\n    }\r\n  });\r\n}\r\n\r\nexport function getProductSeoInformation (products, endpoint) {\r\n  return new Promise((resolve, reject) => {\r\n    const seoEndpoint = endpoint || defaultProductSeoEndpoint();\r\n    let productCodes = products.map(prod => prod.id);\r\n\r\n    axios.post(seoEndpoint, productCodes)\r\n      .then(res => {\r\n        res.data.forEach(SeoOject => {\r\n          let product = products[products.findIndex(x => x.id === SeoOject.ProductId)];\r\n          product.setSeoInformation(SeoOject);\r\n        });\r\n        resolve(true);\r\n      });\r\n  });\r\n}\r\n","import axios from 'axios';\r\nimport { Product } from 'src/models/product.model';\r\nimport { getProductInformation } from 'src/services/product-service';\r\n// BESPOKE THERM-46: Added getCurrencySign\r\nimport { getCurrencySign } from 'src/utilities/helpers';\r\n// END BESPOKE THERM-46\r\n\r\n\r\nconst state = {\r\n  productCode: '',\r\n  productDetails: new Product(),\r\n  groupFields: [],\r\n  productVariants: [],\r\n  relatedProducts: {\r\n    upSelling: [],\r\n    crossSelling: []\r\n  },\r\n  relatedProductCodes: {\r\n    upSelling: [],\r\n    crossSelling: []\r\n  },\r\n  documents: [],\r\n  videos: [],\r\n  bespokeValues: {},\r\n  searchConfig: {\r\n    UserId: null,\r\n    Category: null,\r\n    StringProperties: null,\r\n    NumericProperties: null,\r\n    StringAggregations: null,\r\n    NumericAggregations: null,\r\n    ExtraQueries: []\r\n  }\r\n};\r\n\r\nconst getters = {\r\n  productCode (state) {\r\n    return state.productCode;\r\n  },\r\n  groupFields (state) {\r\n    return state.groupFields;\r\n  },\r\n  searchConfig (state) {\r\n    return {\r\n      UserId: null,\r\n      Category: state.searchConfig.Category,\r\n      StringProperties: state.activeFilters,\r\n      NumericProperties: null,\r\n      StringAggregations: state.searchConfig.StringAggregations,\r\n      NumericAggregations: null,\r\n      ExtraQueries: state.searchConfig.ExtraQueries,\r\n      ExcludeLabels: state.searchConfig.ExcludeLabels,\r\n      ExcludeCategories: state.searchConfig.ExcludeCategories,\r\n      IncludeLabels: state.searchConfig.IncludeLabels,\r\n      ShouldIncludeLabels: state.searchConfig.ShouldIncludeLabels\r\n    }\r\n  },\r\n  productInformationEndpoint (state, getters, rootState, rootGetters) {\r\n    const endpoint = rootGetters.productInformationEndpoint;\r\n    const client = rootGetters.clientCode;\r\n    const language = rootGetters.language;\r\n\r\n    return `${endpoint}/${client}?language=${language}`;\r\n  },\r\n  productVariantEndpoint (state, getters, rootState, rootGetters) {\r\n    const endpoint = rootGetters.productInformationEndpoint;\r\n    const client = rootGetters.clientCode;\r\n    const language = rootGetters.language;\r\n\r\n    return `${endpoint}/${client}/GetProductGroupInformation?language=${language}`;\r\n  },\r\n  relatedProducts (state) {\r\n    return state.relatedProducts;\r\n  },\r\n  relatedProductCodes (state) {\r\n    return state.relatedProductCodes;\r\n  },\r\n  documents (state) {\r\n    return state.documents;\r\n  },\r\n  videos (state) {\r\n    return state.videos;\r\n  },\r\n  bespokeValues (state) {\r\n    return state.bespokeValues;\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  initDetails ({ commit, dispatch }) {\r\n    // BESPOKE THERM-41\r\n    // Get currency sign first\r\n    getCurrencySign().then(res => {\r\n      if (res) {        \r\n        dispatch('getProductInformation', true);\r\n      }\r\n    });\r\n    // END BESPOKE THERM-41\r\n  },\r\n  updateShownProduct ({ commit, getters, dispatch, rootGetters }, productId) {\r\n    commit('setProductCode', productId);\r\n    dispatch('getProductInformation', false);\r\n  },\r\n  getProductInformation ({ commit, getters, dispatch, rootGetters }, initial) {\r\n    let mainProductCodes = [ getters.productCode ];\r\n    axios.post(getters.productInformationEndpoint, mainProductCodes)\r\n      .then(res => {\r\n        if (res.data.length > 0) {\r\n          const product = new Product(res.data[0]);\r\n\r\n          if (rootGetters.showStock) {\r\n            dispatch('getProductStock', product);\r\n          } else {\r\n            product.setStock({ stockTotal: 0 });\r\n          }\r\n\r\n          if (rootGetters.showPrices) {\r\n            dispatch('getProductPrices', product);\r\n          }\r\n\r\n          if (rootGetters.showFavorites) {\r\n            dispatch('getCustomerLists', product);\r\n          }\r\n\r\n          dispatch('getProductSeoInformation', product)\r\n          dispatch('getProductImageSeoInformation', product)\r\n\r\n          dispatch('genericGetProductInformation', {\r\n            endpoint: rootGetters.productVideosEndpoint,\r\n            productId: product.id,\r\n            setFunction: 'setVideos'\r\n          });\r\n\r\n           dispatch('genericGetProductInformation', {\r\n             endpoint: rootGetters.productDocumentsEndpoint,\r\n             productId: product.id,\r\n             setFunction: 'setDocuments'\r\n           });\r\n\r\n          dispatch('genericGetProductInformation', {\r\n            endpoint: rootGetters.bespokeProductFieldsEndpoint,\r\n            productId: product.id,\r\n            setFunction: 'setBespokeValues'\r\n          });\r\n\r\n          dispatch('genericGetProductInformation', {\r\n            endpoint: rootGetters.relatedProductsEndpoint,\r\n            productId: product.id,\r\n            setFunction: 'setRelatedProductCodes'\r\n          });\r\n\r\n          dispatch('getVariantCodes', product)\r\n\r\n          commit('setProductDetails', product);\r\n\r\n          if (!initial) {\r\n            window.history.replaceState(product, product.shortDescription, product.targetUrl);\r\n          }\r\n        } else {\r\n\r\n        }\r\n      });\r\n  },\r\n  genericGetProductInformation ({ commit, dispatch, rootGetters, getters }, callInfo) {\r\n    axios.post(callInfo.endpoint, { productCode: callInfo.productId })\r\n      .then(res => {\r\n        let value = res.data.d;\r\n        commit(callInfo.setFunction, value);\r\n\r\n        switch (callInfo.setFunction) {\r\n          case 'setRelatedProductCodes':\r\n            dispatch('getRelatedProducts');\r\n            break;\r\n        }\r\n      });\r\n  },\r\n  getRelatedProducts ({ getters, commit }) {\r\n    if (getters.relatedProductCodes.upSelling.length) {\r\n      // BESPOKE DEPA: Disabled get product stock for related products\r\n      getProductInformation({ prodCodes: getters.relatedProductCodes.upSelling, getSeoInformation: false, getStock: false })\r\n        .then(res => {\r\n          commit('setRelatedProducts', { relatedProducts: res.products, type: 'upSelling' });\r\n        });\r\n    }\r\n    if (getters.relatedProductCodes.crossSelling.length) {\r\n      // BESPOKE DEPA: Disabled get product stock for related products\r\n      getProductInformation({ prodCodes: getters.relatedProductCodes.crossSelling, getSeoInformation: false, getStock: false })\r\n        .then(res => {\r\n          commit('setRelatedProducts', { relatedProducts: res.products, type: 'crossSelling' });\r\n        });\r\n    }\r\n  },\r\n  getVariantCodes ({ commit, dispatch, rootGetters, getters }, product) {\r\n    if (product.variantKey !== '') {\r\n      const client = rootGetters.clientCode;\r\n      const language = rootGetters.language;\r\n      let endpoint = `${rootGetters.elasticProductsEndpoint}/GetByProductVariantKeyWithRestrictions/${encodeURI(product.variantKey)}?language=${language}&client=${client}`;\r\n\r\n      axios.post(endpoint, getters.searchConfig)\r\n        .then(res => {\r\n          if (res.data) {\r\n            dispatch('getVariantInformation', { product: product, productCodes: res.data });\r\n          }\r\n        });\r\n    }\r\n  },\r\n  getVariantInformation ({ commit, dispatch, rootGetters, getters }, data) {\r\n    if (data.product.variantKey !== '') {\r\n      let endpoint = getters.productVariantEndpoint + '&variantKey=' + data.product.variantKey;\r\n\r\n      axios.post(endpoint, { productCodes: data.productCodes, groupValueFields: getters.groupFields })\r\n        .then(res => {\r\n          if (res.data) {\r\n            const products = res.data.map(product => new Product(product));\r\n            dispatch('getProductVariantDescriptions', products);\r\n\r\n            if (rootGetters.showStock) {\r\n              products.forEach((product, index) => {\r\n                axios.post(rootGetters.productStockEndpoint, { 'productCode': product.id })\r\n                  .then(res => {\r\n                    product.setStock(res.data.d);\r\n                  });\r\n              });\r\n            } else {\r\n              products.forEach(product => product.setStock({ stockTotal: 0 }));\r\n            }\r\n            dispatch('getProductVariantPrices', products);\r\n          }\r\n        });\r\n    }\r\n  },\r\n  getProductVariantPrices ({ commit, getters, dispatch, rootGetters }, products) {\r\n    let priceRequestWrapper = {};\r\n    priceRequestWrapper.CustomerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    priceRequestWrapper.Pricelist = rootGetters.customerPriceList;\r\n    priceRequestWrapper.Products = products.map(prod => {\r\n      let ret = {};\r\n      ret.ProductId = prod.id;\r\n      ret.ProductGroup = prod.discountGroup;\r\n\r\n      ret.ProductUnit = '';\r\n      if (prod.units !== undefined && prod.units !== null) {\r\n        ret.ProductUnit = prod.units.length > 0 ? prod.units[0].code : '';\r\n      }\r\n      return ret;\r\n    });\r\n\r\n    let endpoint = rootGetters.productPriceEndpoint + 'prices/' + rootGetters.clientCode;\r\n    axios.post(endpoint, priceRequestWrapper)\r\n      .then(res => {\r\n        res.data.forEach(price => {\r\n          let product = products[products.findIndex(x => x.id === price.productId)];\r\n          product.setPrices(Object.keys(price.volumes).map(key => price.volumes[key]));\r\n        });\r\n      });\r\n  },\r\n  getProductVariantDescriptions ({ commit, getters, dispatch, rootGetters }, products) {\r\n    commit('setProductVariants', products);\r\n  },\r\n  getProductSeoInformation ({ commit, getters, dispatch, rootGetters }, product) {\r\n    // BESPOKE\r\n    // let endpoint = rootGetters.seoInformationEndpoint + '/GetProductImageInformation';\r\n    // let productCodes = [product.id];\r\n\r\n    // axios.post(endpoint, productCodes)\r\n    //   .then(res => {\r\n    //     res.data.forEach(SeoOject => {\r\n    //       product.setSeoInformation(SeoOject);\r\n    //       commit('setProductDetails', product);\r\n    //     });\r\n    //   });\r\n    // END BESPOKE\r\n  },\r\n  getProductPrices ({ commit, getters, dispatch, rootGetters }, product) {\r\n    let priceRequestWrapper = {};\r\n    priceRequestWrapper.CustomerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    priceRequestWrapper.Pricelist = rootGetters.customerPriceList;\r\n    let unit = '';\r\n    if (product.units !== undefined && product.units !== null) {\r\n      unit = product.units.length > 0 ? product.units[0].code : '';\r\n    }\r\n    priceRequestWrapper.Products = [ {\r\n      ProductId: product.id,\r\n      ProductGroup: product.discountGroup,\r\n      ProductUnit: unit\r\n    } ];\r\n\r\n    let endpoint = rootGetters.productPriceEndpoint + 'prices/' + rootGetters.clientCode\r\n\r\n    axios.post(endpoint, priceRequestWrapper)\r\n      .then(res => {\r\n        res.data.forEach(price => {\r\n          const pricesObj = [];\r\n          Object.keys(price.volumes).forEach(key => {\r\n            pricesObj.push({\r\n              price: price.volumes[key].price,\r\n              basePrice: price.volumes[key].basePrice,\r\n              isSalesAction: price.volumes[key].isSalesAction,\r\n              quantity: Math.round(parseInt(key))\r\n            });\r\n          });\r\n\r\n          product.setPrices(pricesObj);\r\n          commit('setProductDetails', product);\r\n        });\r\n      });\r\n  },\r\n  getProductStock ({ commit, rootGetters }, product) {\r\n    axios.post(rootGetters.productStockEndpoint, { 'productCode': product.id })\r\n      .then(res => {\r\n        product.setStock(res.data.d);\r\n        commit('setProductDetails', product);\r\n      });\r\n  },\r\n  getCustomerLists ({ commit, getters, rootGetters }, product) {\r\n    const endpoint = `${rootGetters.getProductsInListsEndpoint}?debtorId=${rootGetters.customerId}`;\r\n    axios.post(endpoint, [getters.productCode])\r\n      .then(res => {\r\n        Object.keys(res.data).forEach(prodCode => {\r\n          product.setCustomerLists(res.data[prodCode]);\r\n          commit('setCustomerLists', product);\r\n        });\r\n      });\r\n  },\r\n  getProductImageSeoInformation ({ commit, getters, dispatch, rootGetters }, product) {\r\n    let endpoint = rootGetters.bespokeEndpoints.seoDetailInfo\r\n    let productCode = product.id;\r\n\r\n    axios.post(endpoint, { productCode: productCode, language: rootGetters.language })\r\n      .then(res => {\r\n        commit('setSeoImageInfo', res.data.d);\r\n      });\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setProductCode (state, productCode) {\r\n    state.productCode = productCode;\r\n  },\r\n  setProductVariants (state, productVariants) {\r\n    state.productVariants = productVariants;\r\n  },\r\n  setGroupFields (state, groupFields) {\r\n    state.groupFields = groupFields;\r\n  },\r\n  setSearchConfig (state, searchConfig) {\r\n    state.searchConfig = searchConfig;\r\n  },\r\n  setProductDetails (state, product) {\r\n    state.productDetails = product;\r\n  },\r\n  setCustomerLists (state, productWithList) {\r\n    state.productDetails = productWithList;\r\n  },\r\n  setSeoImageInfo (state, imageList) {\r\n    state.imageSeoInfo = imageList;\r\n  },\r\n  setRelatedProducts (state, { relatedProducts, type }) {\r\n    state.relatedProducts[type] = relatedProducts;\r\n  },\r\n  setRelatedProductCodes (state, relatedProductCodes) {\r\n    state.relatedProductCodes = relatedProductCodes;\r\n  },\r\n  setDocuments (state, documents) {\r\n    state.documents = documents;\r\n  },\r\n  setVideos (state, videos) {\r\n    state.videos = videos;\r\n  },\r\n  setBespokeValues (state, bespokeValues) {\r\n    state.bespokeValues = bespokeValues;\r\n  }\r\n};\r\n\r\nexport default {\r\n  namespaced: true,\r\n  state: state,\r\n  getters: getters,\r\n  actions: actions,\r\n  mutations: mutations\r\n};\r\n","import axios from 'axios';\r\n\r\n// BESPOKE DEPU: Added getCurrencySign\r\nimport { currencySign } from 'src/utilities/helpers';\r\n// END BESPOKE DEPU\r\n\r\nconst state = {\r\n};\r\n\r\nconst getters = {\r\n  shoppingCart (state) {\r\n    return state.shoppingCartRows;\r\n  },\r\n  totalPrice (state) {\r\n    return state.totalPrice;\r\n  },\r\n  totalQuantity (state) {\r\n    return state.totalQuantity;\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  addToCart ({ rootGetters }, payload) {\r\n    let endpoint = rootGetters.orderProductEndpoint;\r\n    let userLoggedOn = rootGetters.userLoggedOn;\r\n    const products = Array.isArray(payload) ? payload : [payload];\r\n    return new Promise((resolve, reject) => {\r\n      axios.post(endpoint, JSON.stringify({ products: products, loggedInStatus: userLoggedOn })).then(\r\n        res => {\r\n          const response = res.data.d;\r\n          if (response.errorMessages) {\r\n            if (response.errorMessages === 'log in status changed') {\r\n              window.location.replace('/webshop/login.aspx?RedirectUrl=' + window.location.pathname + window.location.search);\r\n            } else {\r\n              alert(response.errorMessages);\r\n            }\r\n          } else {\r\n            resolve(true);\r\n            // REFERS TO FUNCTION CALL IN CUSTOM.JS AS LONG AS SHOPPINGCART CONTROL IS NOT VUEJS\r\n\r\n\r\n            // BESPOKE DEPU\r\n            var shoppingcartHtml = response.shoppingcartHtml;\r\n            if (currencySign === \"£\") {\r\n              shoppingcartHtml = response.shoppingcartHtml.replaceAll(\"€\", \"£\");\r\n            }\r\n\r\n            window.updateShoppingCart(response.product_count, response.orderTotal, shoppingcartHtml);\r\n            // END BESPOKE DEPU-21\r\n\r\n            if (response.errorMessages) {\r\n              window.updateErrorMessage(response.errorMessages);\r\n            }\r\n\r\n            var message = response.order_message;\r\n            if (response.totalProductsAdded > 0) {\r\n              window.updateOrderMessage(message);\r\n            }\r\n            window.set_shopping_cart_delete_buttons();\r\n            // END CUSTOM.JS FUNCTION CALLS\r\n          }\r\n        })\r\n        .catch(err => {\r\n          // @TODO Error handling\r\n          reject(err);\r\n        });\r\n    });\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  addToCart (state, productRow) {\r\n    state.shoppingCartRows.push(productRow);\r\n  }\r\n};\r\n\r\nexport default {\r\n  namespaced: true,\r\n  state: state,\r\n  getters: getters,\r\n  actions: actions,\r\n  mutations: mutations\r\n};\r\n","import axios from 'axios';\r\nimport { Product } from 'src/models/product.model';\r\n\r\nconst state = {\r\n  searchText: '',\r\n  autocompleteData: [],\r\n  productsFound: false,\r\n  searchConfig: {\r\n    UserId: null,\r\n    Category: null,\r\n    StringProperties: null,\r\n    NumericProperties: null,\r\n    StringAggregations: null,\r\n    NumericAggregations: null,\r\n    ExtraQueries: []\r\n  },\r\n  selectedProduct: {}\r\n};\r\n\r\nconst getters = {\r\n  searchText(state) {\r\n    return state.searchText;\r\n  },\r\n  searchConfig(state) {\r\n    return {\r\n      UserId: null,\r\n      Category: state.searchConfig.Category,\r\n      StringProperties: null,\r\n      NumericProperties: null,\r\n      StringAggregations: state.searchConfig.StringAggregations,\r\n      NumericAggregations: null,\r\n      ExtraQueries: state.searchConfig.ExtraQueries,\r\n      ExcludeLabels: state.searchConfig.ExcludeLabels,\r\n      ExcludeCategories: state.searchConfig.ExcludeCategories,\r\n      IncludeLabels: state.searchConfig.IncludeLabels,\r\n      ShouldIncludeLabels: state.searchConfig.ShouldIncludeLabels\r\n    }\r\n  },\r\n  elasticProductsEndpoint(state, getters, rootState, rootGetters) {\r\n    const endpoint = rootGetters.elasticProductsEndpoint;\r\n    const from = 0;\r\n    const language = rootGetters.language;\r\n    const size = 50;\r\n    const aggregations = false;\r\n    const pricingQueryString = '';\r\n    const customerListId = '';\r\n    const query = state.searchText;\r\n    const customerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    const client = rootGetters.clientCode;\r\n    const priceListCode = rootGetters.customerPriceList;\r\n    const groupProducts = false;\r\n    const sort = null;\r\n    const sortingType = '';\r\n    var sortingstring = ''\r\n\r\n    if (sort !== null) sortingstring = '&sort=' + sort + '|' + sortingType;\r\n    return `${endpoint}/GetProductCodeAndDesc?lang=${language}${sortingstring}&from=${from}&size=${size}&aggr=${aggregations}&query=${query}&customerId=${customerId}&customerPricelist=${priceListCode}&listId=${customerListId}&client=${client}&pricingQuerystring=${pricingQueryString}&groupProducts=${groupProducts}`;\r\n    return `${endpoint}?lang=${language}${sortingstring}&from=${from}&size=${size}&aggr=${aggregations}&query=${query}&customerId=${customerId}&customerPricelist=${priceListCode}&listId=${customerListId}&client=${client}&pricingQuerystring=${pricingQueryString}&groupProducts=${groupProducts}`;\r\n  },\r\n  productInformationEndpoint(state, getters, rootState, rootGetters) {\r\n    const endpoint = rootGetters.productInformationEndpoint;\r\n    const client = rootGetters.clientCode;\r\n    const language = rootGetters.language;\r\n\r\n    return `${endpoint}/${client}?language=${language}`;\r\n  },\r\n  productsFound(state) {\r\n    return state.productsFound;\r\n  },\r\n  autocompleteData(state) {\r\n    return state.autocompleteData;\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setSearchText(state, payload) {\r\n    state.searchText = payload;\r\n  },\r\n  setAutoCompleteData(state, payload) {\r\n    state.autocompleteData = payload;\r\n  },\r\n  initSearchConfig(state, searchConfig) {\r\n    state.searchConfig = { ...searchConfig };\r\n  },\r\n  productsFound(state, payload) {\r\n    state.productsFound = payload;\r\n    if (!payload) {\r\n      state.selectedProduct = [];\r\n    }\r\n  },\r\n  setSelectedProduct(state, payload) {\r\n    state.selectedProduct = payload;\r\n  },\r\n  setProductPrice(state, productWithPrice) {\r\n    state.selectedProduct = productWithPrice;\r\n  },\r\n  setProductStock(state, productWithStock) {\r\n    state.selectedProduct = productWithStock;\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  getAutocompleteData({ commit, getters, dispatch, rootGetters, state }) {\r\n    if (getters.searchText !== '') {\r\n      axios.post(getters.elasticProductsEndpoint, getters.searchConfig)\r\n        .then(res => {\r\n          if (res.data) {\r\n            commit('setAutoCompleteData', res.data);\r\n            commit('productsFound', true);\r\n          } else {\r\n            commit('productsFound', false);\r\n          }\r\n        })\r\n        .catch(error => {\r\n          commit('productsFound', false);\r\n        });\r\n    } else {\r\n      commit('setAutoCompleteData', []);\r\n      commit('productsFound', false);\r\n    }\r\n  },\r\n  clearSelectedProduct({ commit }) {\r\n    commit('productsFound', false);\r\n    commit('setAutoCompleteData', []);\r\n  },\r\n  getProductInformation({ commit, getters, dispatch, rootGetters }) {\r\n    let acData = getters.autocompleteData;\r\n\r\n    if (acData.filter((x) => x.key === getters.searchText).length > 0) {\r\n      let mainProductCodes = [getters.searchText];\r\n\r\n      axios.post(getters.productInformationEndpoint, mainProductCodes)\r\n      .then(res => {\r\n        if (res.data.length) {\r\n          const products = res.data.map(product => new Product(product));\r\n\r\n          if (rootGetters.showStock) {\r\n            dispatch('getProductStock', products);\r\n          } else {\r\n            products.forEach(product => { product.setStock({ stockTotal: 0 }); });\r\n          }\r\n\r\n          if (rootGetters.showPrices) {\r\n            dispatch('getProductPrices', products);\r\n          }\r\n\r\n          commit('setSelectedProduct', products[0]);\r\n\r\n          if (products[0].customBooleans.NOT_AVAILABLE_PROD) {\r\n            dispatch('getReplacements', products[0].id)\r\n          }\r\n        }\r\n        commit('setSearchText', '');\r\n        commit('setAutoCompleteData', []);\r\n        commit('productsFound', false);\r\n      });\r\n    }    \r\n  },\r\n  getProductStock({ commit, rootGetters, dispatch }, products) {\r\n    products.forEach(product => {\r\n      axios.post(rootGetters.productStockEndpoint, { 'productCode': product.id })\r\n        .then(res => {\r\n          product.setStock(res.data.d);\r\n          commit('setProductStock', product);\r\n        });\r\n    });\r\n  },\r\n  getProductPrices({ commit, getters, dispatch, rootGetters }, products) {\r\n    let priceRequestWrapper = {};\r\n    priceRequestWrapper.CustomerId = rootGetters.userLoggedOn ? rootGetters.customerId : '';\r\n    priceRequestWrapper.Pricelist = rootGetters.customerPriceList;\r\n    priceRequestWrapper.Products = products.map(prod => {\r\n      let ret = {};\r\n      ret.ProductId = prod.id;\r\n      ret.ProductGroup = prod.discountGroup;\r\n\r\n      ret.ProductUnit = '';\r\n      if (prod.units !== undefined && prod.units !== null) {\r\n        ret.ProductUnit = prod.units.length > 0 ? prod.units[0].code : '';\r\n      }\r\n      return ret;\r\n    });\r\n\r\n    let endpoint = rootGetters.productPriceEndpoint + 'prices/' + rootGetters.clientCode\r\n\r\n    axios.post(endpoint, priceRequestWrapper)\r\n      .then(res => {\r\n        res.data.forEach(price => {\r\n          let product = products[products.findIndex(x => x.id === price.productId)];\r\n\r\n          const pricesObj = [];\r\n          Object.keys(price.volumes).forEach(key => {\r\n            pricesObj.push({\r\n              price: price.volumes[key].price,\r\n              basePrice: price.volumes[key].basePrice,\r\n              isSalesAction: price.volumes[key].isSalesAction,\r\n              quantity: Math.round(parseInt(key))\r\n            });\r\n          });\r\n\r\n          product.setPrices(pricesObj);\r\n          commit('setProductPrice', product);\r\n        });\r\n      });\r\n  },\r\n  updateSearchText({ commit, getters, dispatch, rootGetters }, payload) {\r\n    commit('setSearchText', payload)\r\n  }\r\n};\r\n\r\nexport default {\r\n  namespaced: true,\r\n  state: state,\r\n  getters: getters,\r\n  actions: actions,\r\n  mutations: mutations\r\n};\r\n","import store from 'src/store/store';\r\n\r\nconst state = {\r\n  screenWidth: 0,\r\n  screenHeight: 0,\r\n  scrollPositionTop: 0\r\n};\r\n\r\nconst getters = {\r\n  screenWidth (state) {\r\n    return state.screenWidth;\r\n  },\r\n  scrollPositionTop (state) {\r\n    return state.scrollPositionTop\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  resizeWindow (state, { width, height }) {\r\n    state.screenWidth = width;\r\n    state.screenHeight = height;\r\n  },\r\n  scroll (state, { pageYOffset }) {\r\n    state.scrollPositionTop = pageYOffset;\r\n  }\r\n};\r\n\r\n// Update state without mutations as these\r\n// changes dont need to be tracked as mutations\r\nconst actions = {\r\n  initBrowserDetection ({ state }) {\r\n    state.screenWidth = window.innerWidth\r\n    state.screenHeight = window.innerHeight;\r\n  },\r\n  resizeWindow ({ commit, state }, { width, height }) {\r\n    state.screenWidth = width;\r\n    state.screenHeight = height;\r\n  },\r\n  scroll ({ commit }) {\r\n    commit('scroll', { pageYOffset: window.pageYOffset });\r\n  }\r\n};\r\n\r\nwindow.addEventListener('resize', function (ev) {\r\n  store.commit('resizeWindow', { width: window.innerWidth, height: window.innerHeight });\r\n});\r\n\r\nwindow.addEventListener('scroll', function (ev) {\r\n  store.dispatch('scroll');\r\n});\r\n\r\nexport default {\r\n  state: state,\r\n  getters: getters,\r\n  mutations: mutations,\r\n  actions: actions\r\n};\r\n","const state = {\r\n};\r\n\r\nconst getters = {\r\n  state (state) {\r\n    return state;\r\n  },\r\n  language (state) {\r\n    return state.language;\r\n  },\r\n  showPrices (state) {\r\n    return state.showPrices;\r\n  },\r\n  showStock (state) {\r\n    return state.showStock;\r\n  },\r\n  stockType (state) {\r\n    return state.stockType;\r\n  },\r\n  stockLimit (state) {\r\n    return state.stockLimit;\r\n  },\r\n  stockIndicators (state) {\r\n    return state.stockIndicators;\r\n  },\r\n  showOrderProduct (state) {\r\n    return state.showOrderProduct;\r\n  },\r\n  showFavorites (state) {\r\n    return state.showFavorites;\r\n  },\r\n  groupProductsList (state) {\r\n    return state.groupProductsList;\r\n  },\r\n  groupProducts (state) {\r\n    return state.groupProducts;\r\n  },\r\n  filterSorting (state) {\r\n    return state.filterSorting;\r\n  },\r\n  useOrderLineComments (state) {\r\n    return state.useOrderLineComments;\r\n  },\r\n  productBlockSize (state) {\r\n    return state.productBlockSize;\r\n  },\r\n  relatedProductBlockSize (state) {\r\n    return state.relatedProductBlockSize;\r\n  },\r\n  minScore (state) {\r\n    return state.minScore;\r\n  },\r\n  bespokeGlobalWs (state) {\r\n    return state.bespokeGlobalWs;\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setGlobalWsSettings (state, globalWsSettingsObj) {\r\n    Object.assign(state, globalWsSettingsObj);\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  setGlobalWsSettings ({ commit }, globalWsSettings) {\r\n    commit('setGlobalWsSettings', globalWsSettings);\r\n  }\r\n};\r\n\r\nexport default {\r\n  state: state,\r\n  getters: getters,\r\n  mutations: mutations,\r\n  actions: actions\r\n};\r\n","const state = {};\r\n\r\nconst getters = {\r\n  bespokeGlobalCms (state) {\r\n    return state.bespokeGlobalCms;\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setGlobalCmsSettings (state, globalCmsObj) {\r\n    Object.assign(state, globalCmsObj);\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  setGlobalCmsSettings ({ commit }, globalCmsObj) {\r\n    commit('setGlobalCmsSettings', globalCmsObj);\r\n  }\r\n};\r\n\r\nexport default {\r\n  state: state,\r\n  getters: getters,\r\n  mutations: mutations,\r\n  actions: actions\r\n};\r\n","const state = {\r\n};\r\n\r\nconst getters = {\r\n  clientCode (state) {\r\n    return state.clientCode;\r\n  },\r\n  customerId (state) {\r\n    return state.customerId;\r\n  },\r\n  customerUserId (state) {\r\n    return state.userCustomerId;\r\n  },\r\n  customerPriceList (state) {\r\n    return state.customerPriceList;\r\n  },\r\n  userLoggedOn (state) {\r\n    const loggedOn = state.userLoggedOn !== 'False';\r\n    return loggedOn;\r\n  },\r\n  bespokeUserInformation (state) {\r\n    return state.bespokeUserInformation;\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setGlobalUserInformation (state, globalUserInformationObj) {\r\n    Object.assign(state, globalUserInformationObj);\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  setGlobalUserInformation ({ commit }, globalUserInformation) {\r\n    commit('setGlobalUserInformation', globalUserInformation);\r\n  }\r\n};\r\n\r\nexport default {\r\n  state: state,\r\n  getters: getters,\r\n  mutations: mutations,\r\n  actions: actions\r\n};\r\n","const state = {\r\n};\r\n\r\nconst getters = {\r\n  productStockEndpoint (state) {\r\n    return state.productStockUrl;\r\n  },\r\n  orderProductEndpoint (state) {\r\n    return state.orderProductUrl;\r\n  },\r\n  productPriceEndpoint (state) {\r\n    return state.productPriceUrl;\r\n  },\r\n  getProductsInListsEndpoint (state) {\r\n    return state.customerList + '/GetProductLists';\r\n  },\r\n  addProductToListEndpoint (state) {\r\n    return state.customerList + '/AddProduct';\r\n  },\r\n  removeProductFromListEndpoint (state) {\r\n    return state.customerList + '/RemoveProduct';\r\n  },\r\n  productsFromList (state) {\r\n    return state.customerList + '/GetProductsFromList';\r\n  },\r\n  elasticProductsEndpoint (state) {\r\n    return state.elasticProducts;\r\n  },\r\n  productInformationEndpoint (state) {\r\n    return state.productInformation;\r\n  },\r\n  seoInformationEndpoint (state) {\r\n    return state.seoInformation;\r\n  },\r\n  productVariantsEndpoint (state) {\r\n    return state.elasticProducts + '/GetByProductVariantKey'\r\n  },\r\n  customerListEndpoint (state) {\r\n    return state.customerList;\r\n  },\r\n  productVariantDescriptionEndpoint (state) {\r\n    return state.productVariantDescription;\r\n  },\r\n  relatedProductsEndpoint (state) {\r\n    return state.relatedProductsUrl;\r\n  },\r\n  productVideosEndpoint (state) {\r\n    return state.productVideosUrl;\r\n  },\r\n  productDocumentsEndpoint (state) {\r\n    return state.productDocumentsUrl;\r\n  },\r\n  productImageBannersUrl (state) {\r\n    return state.productImageBannersUrl;\r\n  },\r\n  bespokeProductFieldsEndpoint (state) {\r\n    return state.bespokeFieldsUrl\r\n  },\r\n  bespokeEndpoints (state) {\r\n    return state.bespokeEndpoints;\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setGlobalEndpoints (state, globalEndpointsObj) {\r\n    Object.assign(state, globalEndpointsObj);\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  setGlobalEndpoints ({ commit }, globalEndpointsObj) {\r\n    commit('setGlobalEndpoints', globalEndpointsObj);\r\n  }\r\n};\r\n\r\nexport default {\r\n  state: state,\r\n  getters: getters,\r\n  mutations: mutations,\r\n  actions: actions\r\n};\r\n","import axios from 'axios';\r\nimport { Product } from 'src/models/product.model';\r\nimport { getProductInformation } from 'src/services/product-service';\r\n// BESPOKE THERM-46: Added getCurrencySign\r\nimport { getCurrencySign } from 'src/utilities/helpers';\r\n// END BESPOKE THERM-46\r\n\r\n\r\nconst state = {\r\n  loadingQuotations: true,\r\n  quotationsBaseAddress: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n  quotations: [],\r\n  selectedQuote: null,\r\n  selectedQuoteId: null,\r\n  currentQuoteVatCode: '',\r\n  isShowSelectQuotesTool: false,\r\n  queingQuoteProduct: false,\r\n  quoteProductInQue: null,\r\n  defaultVatCode: null,\r\n  currencySign: \"\"\r\n};\r\n\r\nconst getters = {\r\n  defaultVatCode(state) {\r\n    return state.defaultVatCode;\r\n  },\r\n  loadingQuotations(state) {\r\n    return state.loadingQuotations;\r\n  },\r\n  quotations(state) {\r\n    return state.quotations\r\n  },\r\n  quotationsBaseAddress(state) {\r\n    return state.quotationsBaseAddress;\r\n  },\r\n  selectedQuoteId(state) {    \r\n    return state.selectedQuoteId;\r\n  },\r\n  selectedQuote(state) {\r\n    return state.selectedQuote;\r\n  },\r\n  isShowSelectQuotesTool(state) {\r\n    return state.isShowSelectQuotesTool;\r\n  },\r\n  quoteProductInQue(state) {\r\n    return state.quoteProductInQue;\r\n  },\r\n  queueingQuoteProduct(state) {\r\n    return state.queingQuoteProduct;\r\n  },\r\n  currencySign(state) {\r\n    return state.currencySign;\r\n  }\r\n};\r\n\r\nconst actions = {\r\n  init ({ commit, dispatch }) {\r\n    // BESPOKE THERM-41\r\n    // Get currency sign first\r\n    getCurrencySign().then(res => {\r\n      if (res) {\r\n        commit('setCurrencySign', res);\r\n        dispatch('getQuotations');\r\n      }\r\n    });\r\n    // END BESPOKE THERM-41\r\n    // Get quotations\r\n  },\r\n  getVatCodes({ state, getters }) {\r\n    return new Promise((resolve, reject) => {       \r\n      axios.post(getters.quotationsBaseAddress + \"GetAvailableVatCodes\", { })\r\n        .then(res => {\r\n          if (res.data.d.IsSuccess) {\r\n            state.defaultVatCode = res.data.d.Vat[0].Code;\r\n            resolve();\r\n          } else {\r\n            reject();\r\n          }\r\n        });\r\n    });\r\n  },\r\n  createQuote({ state, rootGetters, getters, dispatch }) {\r\n    dispatch('getVatCodes').then(_ => {\r\n      if (getters.defaultVatCode) {\r\n        axios.post( getters.quotationsBaseAddress + 'CreateQuotation', { debtorId: rootGetters.customerUserId, vatCode: getters.defaultVatCode })\r\n          .then(res => {\r\n            var response = res.data.d;\r\n            if (response.IsSuccess) {\r\n\r\n              var dateString = response.QuoteDate;\r\n              let parts = dateString.split('-');\r\n              let formattedDateString = `${parts[1]}/${parts[0]}/${parts[2]}`;\r\n\r\n              var newQuote = {\r\n                id: response.RecId,\r\n                date: new Date(formattedDateString).format(\"dd-MM-yyyy\"),\r\n                isActive: false,\r\n                name: '',\r\n                subtotalExclVat: 0,\r\n                vatCode: getters.defaultVatCode\r\n              };\r\n              state.quotations.unshift(newQuote);\r\n            } else {  \r\n              alert('ERROR');\r\n            }\r\n          }); \r\n      }      \r\n    });\r\n  },\r\n  getQuotations({ getters, rootGetters, commit, dispatch }) {    \r\n    commit('setLoadingQuotations', true);\r\n    axios.post(getters.quotationsBaseAddress + \"GetQuotations\", { debtorId: rootGetters.customerUserId, recId: '' })\r\n      .then(res => {\r\n        var lines = res.data.d.map(x => {\r\n          \r\n          var dateString = x.QuoteDate;\r\n          let parts = dateString.split('-');\r\n          let formattedDateString = `${parts[1]}/${parts[0]}/${parts[2]}`;\r\n\r\n          var expDateString = x.QuoteExpirationDate;\r\n          let expParts = expDateString.split('-');\r\n          let formattedExpDateString = `${expParts[1]}/${expParts[0]}/${expParts[2]}`;\r\n\r\n          return {\r\n            id: x.RecId,\r\n            date: new Date(formattedDateString).format(\"dd-MM-yyyy\"),\r\n            expirationDate: new Date(formattedExpDateString).format(\"dd-MM-yyyy\"),\r\n            name: x.InvAddress.Name,\r\n            subtotalExclVat: x.TotalExcl,\r\n            isActive: false,\r\n            vatCode: x.VatCode\r\n          }\r\n        });\r\n        commit('setQuotations', lines);\r\n        commit('setLoadingQuotations', false);\r\n        \r\n        // See if there is an active quotations id in local storage\r\n        var quoteIdStoredInSession = window.localStorage.getItem('selectedQuoteId');    \r\n        if (quoteIdStoredInSession !== null) {      \r\n          return new Promise((resolve, reject) => {            \r\n            dispatch('setSelectedQuote', { quoteId: quoteIdStoredInSession, isActive: true });\r\n            resolve();\r\n          });\r\n        }\r\n\r\n      });\r\n  },\r\n  setSelectedQuote({ commit, getters }, { quoteId, isActive }) {\r\n    var selectedQuoteIndex = getters.quotations.findIndex(x => x.id === quoteId);\r\n    if (selectedQuoteIndex > -1) {\r\n      commit('setSelectedQuote', {quoteId, isActive});\r\n    }\r\n  },\r\n  addProductToQuotation({getters, commit}, quotationProduct) {\r\n    return new Promise((resolve, reject) => {      \r\n      var payload = {\r\n        hdrId: getters.selectedQuote.id,\r\n        prodCode: quotationProduct.productId, \r\n        prodDesc: quotationProduct.productDescription,\r\n        quoteQty: quotationProduct.quantity,\r\n        vatCode: getters.selectedQuote.vatCode,\r\n        prodPrice: quotationProduct.productPrice,\r\n        rowAmt: quotationProduct.productPrice * quotationProduct.quantity,\r\n        rowOrd: getters.quotations.length + 1,\r\n        comment: quotationProduct.comment,\r\n        totalPrice: quotationProduct.totalPrice\r\n      };\r\n      \r\n      axios.post(getters.quotationsBaseAddress + \"CreateQuotationLine\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {       \r\n          quotationProduct.rowOrder = payload.rowOrd;\r\n          quotationProduct.recId = response.RecId;\r\n          \r\n          commit('setTotals', { totalExcl: response.Totals.TotalExcl, recId: getters.selectedQuote.id });\r\n\r\n          var succesMessage = window.vue.translations.label.label_prod_added_to_quote.replace('[1]', payload.hdrId);\r\n          window.updateOrderMessage(succesMessage);\r\n          resolve();\r\n        } else {\r\n          var errorMessage = window.vue.translations.label.label_err_add_prod_quote;          \r\n          window.updateErrorMessage(errorMessage);\r\n        }\r\n      })\r\n\r\n    });    \r\n  },\r\n  showSelectQuotesTool({commit}, show) {\r\n    commit('setShowSelectQuotesTool', show);\r\n  },\r\n  promptUserForQuote({commit}, quoteProduct) {\r\n    commit('setShowSelectQuotesTool', true);\r\n    commit('setQuoteProductInQue', quoteProduct);\r\n    commit('setQueingQuoteProduct', true);\r\n  },\r\n  cancelPromptUserForQuote({ commit }) {\r\n    commit('setShowSelectQuotesTool', false);\r\n    commit('setQuoteProductInQue', null);\r\n    commit('setQueingQuoteProduct', false);\r\n  },\r\n  addQueuedProductToQuoteList({ getters, commit, dispatch }, quoteId) {\r\n    commit('setSelectedQuote', {quoteId: quoteId, isActive: true });\r\n\r\n    var quotationProduct = {\r\n      productId: getters.quoteProductInQue.productId, \r\n      productDescription: getters.quoteProductInQue.productDescription,\r\n      quantity: getters.quoteProductInQue.quantity,\r\n      productPrice: getters.quoteProductInQue.productPrice\r\n    };\r\n    dispatch('cancelPromptUserForQuote');\r\n    dispatch('addProductToQuotation', quotationProduct);\r\n  }\r\n};\r\n\r\nconst mutations = {\r\n  setCurrencySign(state, currencySign) {\r\n    state.currencySign = currencySign;\r\n  },\r\n  setQuotations (state, quotations) {\r\n    state.quotations = quotations;\r\n  },\r\n  setLoadingQuotations(state, loading) {\r\n    state.loadingQuotations = loading;\r\n  },\r\n  setSelectedQuote(state, { quoteId, isActive }) {\r\n    state.quotations.forEach(x => {\r\n      x.isActive = false;\r\n\r\n      if (x.id === quoteId) {\r\n        x.isActive = isActive;\r\n      }\r\n    });\r\n\r\n    var indexSelectedQuote = state.quotations.findIndex(x => x.isActive);\r\n\r\n    if (indexSelectedQuote > -1) {\r\n      var quote = {...state.quotations[indexSelectedQuote]};\r\n      state.selectedQuote = quote;\r\n      state.selectedQuoteId = quote.id;\r\n      window.localStorage.setItem('selectedQuoteId', quote.id);\r\n    } else {\r\n      state.selectedQuote = null;\r\n      state.selectedQuoteId = null;\r\n      window.localStorage.removeItem('selectedQuoteId');\r\n    }\r\n  },\r\n  setShowSelectQuotesTool(state, show) {\r\n    state.isShowSelectQuotesTool = show;\r\n    state.isShowSelectQuotesTool = show;\r\n  },\r\n  setQueingQuoteProduct(state, inQue) {\r\n    state.queingQuoteProduct = inQue;\r\n  },\r\n  setQuoteProductInQue(state, quoteProduct) {\r\n    state.quoteProductInQue = quoteProduct;\r\n  },\r\n  setTotals(state, { totalExcl, recId }) {\r\n    var index = state.quotations.findIndex(x => x.id == recId);\r\n    state.quotations[index].subtotalExclVat = totalExcl;\r\n  }\r\n};\r\n\r\nexport default {\r\n  namespaced: true,\r\n  state: state,\r\n  getters: getters,\r\n  actions: actions,\r\n  mutations: mutations\r\n};\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport axios from 'axios';\r\n\r\n// Import modules\r\nimport elastic from 'src/store/modules/elastic';\r\nimport productDetails from 'src/store/modules/product-details';\r\nimport shoppingCart from 'src/store/modules/shopping-cart';\r\n// BESPOKE\r\nimport orderEntry from 'src/store/modules/order-entry';\r\n// END BESPOKE\r\n\r\n// Global modules\r\nimport globalBrowser from 'src/store/modules/global/global-browser';\r\nimport globalWsSettings from 'src/store/modules/global/global-ws-settings';\r\nimport globalCmsSettings from 'src/store/modules/global/global-cms-settings';\r\nimport globalUserInformation from 'src/store/modules/global/global-user-information';\r\nimport globalEndpoints from 'src/store/modules/global/global-endpoints';\r\nimport quoations from '../../bespoke/store/modules/quoations';\r\n\r\n// Configure Axios defaults\r\naxios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';\r\n\r\nVue.use(Vuex)\r\n\r\nexport default new Vuex.Store({\r\n  state: {\r\n  },\r\n  getters: {\r\n  },\r\n  mutations: {\r\n\r\n  },\r\n  actions: {\r\n\r\n  },\r\n  modules: {\r\n    elastic: elastic,\r\n    shoppingCart: shoppingCart,\r\n    productDetails: productDetails,\r\n    globalBrowser: globalBrowser,\r\n    globalEndpoints: globalEndpoints,\r\n    globalWsSettings: globalWsSettings,\r\n    globalCmsSettings: globalCmsSettings,\r\n    globalUserInformation: globalUserInformation,\r\n    // BESPOKE\r\n    orderEntry: orderEntry,\r\n    quotations: quoations\r\n    // END BESPOKE\r\n  }\r\n})\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loadingQuotations)?_c('div',{staticClass:\"row quotes-list\"},[(_vm.showDeleteQuotation)?[_c('utlz-delete-quotation',{on:{\"deleteQuotationEvent\":function($event){return _vm.deleteQuotation($event)},\"cancelPrompt\":function($event){_vm.showDeleteQuotation = false}}})]:_vm._e(),_c('div',{staticClass:\"col-md-12 title-row\"},[_c('h1',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'title_quotations', type: 'title' }),expression:\"{ code: 'title_quotations', type: 'title' }\"}]}),_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_new_quote', type: 'button' }),expression:\"{ code: 'button_new_quote', type: 'button' }\"}],staticClass:\"btn-u btn-u-sea-shop\",on:{\"click\":function($event){return _vm.createQuote()}}})]),(!_vm.loadingQuotations && _vm.quotations.length > 0)?[_c('div',{staticClass:\"col-md-12\"},[_c('table',{staticClass:\"table\"},[_c('thead',{staticClass:\"table-header rgba-banner\"},[_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_isactive', type: 'label'}),expression:\"{ code: 'label_col_isactive', type: 'label'}\"}],staticClass:\"is-active\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_quote', type: 'label'}),expression:\"{ code: 'label_col_quote', type: 'label'}\"}]}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_date', type: 'label'}),expression:\"{ code: 'label_col_date', type: 'label'}\"}]}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_exp_date', type: 'label'}),expression:\"{ code: 'label_col_exp_date', type: 'label'}\"}]}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_customer', type: 'label'}),expression:\"{ code: 'label_col_customer', type: 'label'}\"}]}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_subtotal_exclvat', type: 'label'}),expression:\"{ code: 'label_col_subtotal_exclvat', type: 'label'}\"}]}),_c('th',{staticClass:\"buttons\"})]),_c('tbody',_vm._l((_vm.quotations),function(line){return _c('utlz-quotation-list-item',{key:line.id,attrs:{\"quotation\":line},on:{\"deleteQuotationEvent\":function($event){return _vm.initDeleteQuotation($event)},\"printQuotationEvent\":function($event){return _vm.printquotation($event)}}})}),1)])])]:[_c('div',{staticClass:\"col-md-12\"},[_c('h3',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'title_no_quotes_found', type: 'title' }),expression:\"{ code: 'title_no_quotes_found', type: 'title' }\"}]})])],(_vm.showPrintIframe)?[_c('iframe',{attrs:{\"width\":\"0\",\"height\":\"0\",\"src\":_vm.iframeSource,\"id\":\"print-frame\",\"name\":\"print-frame\"}})]:_vm._e()],2):_c('div',[_c('div',{staticClass:\"col-md-12\"},[_c('div',{attrs:{\"id\":\"spinner-screen\"}},[_c('div',{staticClass:\"spinner-wrapper loading-quotes\"},[_c('div',{staticClass:\"loader\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_loading_quotes' , type: 'label'}),expression:\"{ code: 'label_loading_quotes' , type: 'label'}\"}]})])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"quotation-list-item\"},[_c('td',{staticClass:\"is-active\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.quotation.isActive},on:{\"change\":function($event){return _vm.setSelectedQuoteEvent($event)}}})]),_c('td',[_vm._v(_vm._s(_vm.quotation.id))]),_c('td',[_vm._v(_vm._s(_vm.quotation.date))]),_c('td',[_vm._v(_vm._s(_vm.quotation.expirationDate))]),_c('td',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.quotation.name))]),_c('td',[_vm._v(_vm._s(_vm.formattedPrice(_vm.quotation.subtotalExclVat)))]),_c('td',{staticClass:\"action-btns\"},[_c('i',{staticClass:\"fa fa-print\",attrs:{\"title\":_vm.printTitle},on:{\"click\":function($event){return _vm.printQuotation()}}}),_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_resume_order', type: 'button'}),expression:\"{ code: 'button_resume_order', type: 'button'}\"}],staticClass:\"btn-u btn-outline\",attrs:{\"href\":_vm.detailsUrl}}),_c('i',{staticClass:\"fa fa-trash-o delete-button\",on:{\"click\":function($event){return _vm.deleteQuotation()}}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <tr class=\"quotation-list-item\">\r\n    <td class=\"is-active\"> \r\n      <input type=\"checkbox\" :checked=\"quotation.isActive\" @change=\"setSelectedQuoteEvent($event)\" />\r\n    </td>\r\n    <td>{{ quotation.id }}</td>\r\n    <td>{{ quotation.date }}</td>\r\n    <td>{{ quotation.expirationDate }}</td>\r\n    <td class=\"name\">{{ quotation.name }}</td>\r\n    <td>{{ formattedPrice(quotation.subtotalExclVat) }}</td>\r\n    <td class=\"action-btns\">\r\n      <i class=\"fa fa-print\" @click=\"printQuotation()\" :title=\"printTitle\"></i>\r\n      <a class=\"btn-u btn-outline\" :href=\"detailsUrl\" v-translation=\"{ code: 'button_resume_order', type: 'button'}\"></a>\r\n      <i class=\"fa fa-trash-o delete-button\" @click=\"deleteQuotation()\"></i>\r\n    </td>\r\n  </tr>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex';\r\nimport { formatPrice, getCurrencySign } from 'src/utilities/helpers';\r\nexport default {\r\n  props: {\r\n    quotation: { type: Object, required: true }\r\n  },\r\n  data () {\r\n    return {\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters(['language']),\r\n    printTitle() {\r\n      return window.vue.translations.button.button_print_quote\r\n    },\r\n    detailsUrl() {\r\n      var detailsUrl = new URL(location.origin + \"/\" + this.language + \"/bespoke/account/quotationdetails.aspx\");\r\n      detailsUrl.searchParams.append('quoteid', this.quotation.id);\r\n      return detailsUrl;\r\n    }\r\n  },\r\n  methods: {\r\n    ...mapActions('quotations', ['setSelectedQuote']),\r\n    formattedPrice (price) {\r\n      return formatPrice(price);\r\n    },\r\n    printQuotation() {\r\n      this.$emit('printQuotationEvent', this.quotation.id);\r\n    },\r\n    deleteQuotation() {\r\n      this.$emit('deleteQuotationEvent', this.quotation.id);\r\n    },\r\n    setSelectedQuoteEvent(ev) {\r\n      this.setSelectedQuote({ quoteId: this.quotation.id, isActive: ev.target.checked });\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationListItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationListItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuotationListItem.vue?vue&type=template&id=47e275b8&\"\nimport script from \"./QuotationListItem.vue?vue&type=script&lang=js&\"\nexport * from \"./QuotationListItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\"}},[_c('utlz-prompt',{on:{\"confirm\":function($event){return _vm.deleteQuote($event)},\"cancel\":function($event){return _vm.cancelPrompt()}},scopedSlots:_vm._u([{key:\"prompt-content\",fn:function(){return [_c('div',{staticClass:\"delete-product-prompt utlz-row\"},[_c('div',{staticClass:\"utlz-col-12\"},[_c('h2',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'title', code: 'title_prompt_delete_quote' }),expression:\"{ type: 'title', code: 'title_prompt_delete_quote' }\"}]})])]),_c('div',{staticClass:\"utlz-col-12\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_prompt_delete_quote' }),expression:\"{ type: 'label', code: 'label_prompt_delete_quote' }\"}]})])])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-prompt\"},[_c('div',{staticClass:\"full-screen-fader flex-column justify-content-center\"},[_c('div',{staticClass:\"utlz-container\"},[_c('div',{staticClass:\"utlz-row\"},[_c('div',{staticClass:\"utlz-col-lg-8 utlz-offset-lg-2\"},[_c('span',{staticClass:\"close-button\"},[_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.cancel()}}})]),_c('div',{staticClass:\"prompt-content\"},[_vm._t(\"prompt-content\"),_c('div',{staticClass:\"action-btns full-width-buttons-mobile\"},[_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_prompt_cancel'}),expression:\"{ type: 'button', code: 'button_prompt_cancel'}\"}],staticClass:\"btn-u cancel\",on:{\"click\":function($event){return _vm.cancel()}}}),_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_prompt_confirm'}),expression:\"{ type: 'button', code: 'button_prompt_confirm'}\"}],staticClass:\"btn-u btn-u-sea-shop confirm\",on:{\"click\":function($event){return _vm.confirm()}}})])],2)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-prompt\">\r\n    <div class=\"full-screen-fader flex-column justify-content-center\">\r\n      <div class=\"utlz-container\">\r\n        <div class=\"utlz-row\">\r\n          <div class=\"utlz-col-lg-8 utlz-offset-lg-2\">\r\n            <span class=\"close-button\">\r\n              <i class=\"fa fa-times-circle\" aria-hidden=\"true\" @click=\"cancel()\"></i>\r\n            </span>\r\n            <div class=\"prompt-content\">\r\n\r\n              <slot name=\"prompt-content\"></slot>\r\n              <div class=\"action-btns full-width-buttons-mobile\">\r\n                <a @click=\"cancel()\" v-translation=\"{ type: 'button', code: 'button_prompt_cancel'}\" class=\"btn-u cancel\"></a>\r\n                <a @click=\"confirm()\" v-translation=\"{ type: 'button', code: 'button_prompt_confirm'}\" class=\"btn-u btn-u-sea-shop confirm\"></a>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  props: {\r\n    payload: null\r\n  },\r\n  methods: {\r\n    confirm () {\r\n      this.$emit('confirm', this.payload);\r\n    },\r\n    cancel () {\r\n      this.$emit('cancel');\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Prompt.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Prompt.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Prompt.vue?vue&type=template&id=d480d146&\"\nimport script from \"./Prompt.vue?vue&type=script&lang=js&\"\nexport * from \"./Prompt.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <transition name=\"fade\">\r\n      <utlz-prompt\r\n        @confirm=\"deleteQuote($event)\"\r\n        @cancel=\"cancelPrompt()\"\r\n      >\r\n      <template v-slot:prompt-content>\r\n\r\n        <div class=\"delete-product-prompt utlz-row\">\r\n          <div class=\"utlz-col-12\">\r\n            <h2>\r\n              <span v-translation=\"{ type: 'title', code: 'title_prompt_delete_quote' }\"></span>\r\n            </h2>\r\n          </div>\r\n          <div class=\"utlz-col-12\">\r\n            <span v-translation=\"{ type: 'label', code: 'label_prompt_delete_quote' }\"></span>\r\n          </div>\r\n        </div>\r\n        \r\n      </template>\r\n\r\n      </utlz-prompt>\r\n    </transition>\r\n</template>\r\n\r\n<script>\r\nimport Prompt from './../../bespoke/quotations/Prompt.vue';\r\nexport default {\r\n  props: {\r\n    quoteId: { type: String, required: false }\r\n  },\r\n  components: {\r\n    'utlz-prompt': Prompt\r\n  }\r\n  ,\r\n  methods: {\r\n    cancelPrompt() {\r\n      this.$emit('cancelPrompt');\r\n    },\r\n    deleteQuote() {\r\n      this.$emit('deleteQuotationEvent', this.quoteId);\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteQuotation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteQuotation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DeleteQuotation.vue?vue&type=template&id=c9cd6efe&\"\nimport script from \"./DeleteQuotation.vue?vue&type=script&lang=js&\"\nexport * from \"./DeleteQuotation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"row quotes-list\" v-if=\"!loadingQuotations\">\r\n\r\n    <template v-if=\"showDeleteQuotation\">\r\n      <utlz-delete-quotation \r\n      @deleteQuotationEvent=\"deleteQuotation($event)\"\r\n      @cancelPrompt=\"showDeleteQuotation = false\"></utlz-delete-quotation>\r\n    </template>\r\n\r\n    <div class=\"col-md-12 title-row\">\r\n      <h1 v-translation=\"{ code: 'title_quotations', type: 'title' }\"></h1>\r\n      <a @click=\"createQuote()\" class=\"btn-u btn-u-sea-shop\" v-translation=\"{ code: 'button_new_quote', type: 'button' }\"></a>\r\n    </div>\r\n    \r\n    <template v-if=\"!loadingQuotations && quotations.length > 0\">      \r\n      <div class=\"col-md-12\">\r\n        <table class=\"table\">\r\n          <thead class=\"table-header rgba-banner\">\r\n            <th class=\"is-active\" v-translation=\"{ code: 'label_col_isactive', type: 'label'}\">                    \r\n            </th>\r\n            <th v-translation=\"{ code: 'label_col_quote', type: 'label'}\">\r\n            </th>\r\n            <th v-translation=\"{ code: 'label_col_date', type: 'label'}\">\r\n            </th>\r\n            <th v-translation=\"{ code: 'label_col_exp_date', type: 'label'}\">\r\n            </th>\r\n            <th v-translation=\"{ code: 'label_col_customer', type: 'label'}\">\r\n            </th>\r\n            <th v-translation=\"{ code: 'label_col_subtotal_exclvat', type: 'label'}\">\r\n            </th>\r\n            <th class=\"buttons\"></th>\r\n          </thead>\r\n          <tbody>\r\n            <utlz-quotation-list-item v-for=\"line in quotations\" \r\n            :key=\"line.id\" \r\n            :quotation=\"line\" \r\n            @deleteQuotationEvent=\"initDeleteQuotation($event)\"\r\n            @printQuotationEvent=\"printquotation($event)\"></utlz-quotation-list-item>\r\n          </tbody>\r\n        </table>\r\n      </div>\r\n      </template>\r\n      <template v-else>\r\n        <div class=\"col-md-12\">\r\n          <h3 v-translation=\"{ code: 'title_no_quotes_found', type: 'title' }\"></h3>\r\n        </div>\r\n      </template>\r\n\r\n\r\n      <template v-if=\"showPrintIframe\">\r\n        <iframe  width=\"0\" height=\"0\" :src=\"iframeSource\" id=\"print-frame\" name=\"print-frame\"></iframe>\r\n      </template>\r\n  </div>\r\n\r\n  <div v-else>\r\n    <div class=\"col-md-12\">\r\n      <div id=\"spinner-screen\">\r\n          <div class=\"spinner-wrapper loading-quotes\">\r\n              <div class=\"loader\"></div>              \r\n              <span v-translation=\"{ code: 'label_loading_quotes' , type: 'label'}\"></span>\r\n          </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n</template>\r\n\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex';\r\nimport QuotationsListItem from './QuotationListItem.vue';\r\nimport DeleteQuotation from './../../bespoke/quotations/DeleteQuotation.vue';\r\nimport axios from 'axios';\r\n\r\nexport default {\r\n  data() {\r\n    return {\r\n      endpoint: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n      showPrintIframe: false,\r\n      showDeleteQuotation: false,\r\n      iframeSource: \"\",\r\n      quoteIdToDelete: \"\",\r\n      vatCode: ''\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters(['customerUserId', 'language']),\r\n    ...mapGetters('quotations', ['quotations', 'loadingQuotations'])\r\n  },\r\n  components: {\r\n    'utlz-quotation-list-item': QuotationsListItem,\r\n    'utlz-delete-quotation': DeleteQuotation,\r\n  },\r\n  methods: {\r\n    ...mapActions('quotations', ['getQuotations']),\r\n    initDeleteQuotation(recId) {\r\n      this.quoteIdToDelete = recId;\r\n      this.showDeleteQuotation = true;\r\n    },\r\n    // TODO\r\n    // Maybe move this to quoations vuex module\r\n    deleteQuotation() {\r\n      axios.post(this.endpoint + \"DeleteQuotations\", { recId: this.quoteIdToDelete }).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {\r\n          var indexOfLineToDelete = this.quotations.findIndex(x => x.id === this.quoteIdToDelete);\r\n          this.quotations.splice(indexOfLineToDelete, 1);\r\n          var message = window.vue.translations.label.label_deleted_quote;\r\n          window.updateOrderMessage(message);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n        this.showDeleteQuotation = false;\r\n        this.quoteIdToDelete = \"\";\r\n      })\r\n    },\r\n    printquotation(recId) {\r\n      // Shows a hidden iframe on the page loading in the print friendly \r\n      // version, sets the focus on it, and triggers a print action\r\n      this.showPrintIframe = false;\r\n      var iframeSource = new URL(location.origin + \"/\" + this.language + \"/bespoke/account/printquotation.aspx\");\r\n      iframeSource.searchParams.append('quoteid', recId);\r\n      this.iframeSource = iframeSource;\r\n\r\n      this.$nextTick(() => {\r\n        this.showPrintIframe = true;\r\n      });\r\n    },\r\n    createQuote() {\r\n      axios.post( this.endpoint + 'CreateQuotation', { debtorId: this.customerUserId, vatCode: this.vatCode })\r\n      .then(res => {\r\n        var response = res.data.d;\r\n        if (response.IsSuccess) {\r\n          var detailsUrl = new URL(location.origin + \"/\" + this.language + \"/bespoke/account/quotationdetails.aspx\");\r\n          detailsUrl.searchParams.append('quoteid', response.RecId);\r\n          window.location.href = detailsUrl;\r\n        } else {  \r\n          alert('ERROR');\r\n        }\r\n      });\r\n    },\r\n    getVatCodes() {\r\n      axios.post(\"/Bespoke/QuotationWebmethods.aspx/GetAvailableVatCodes\", { })\r\n        .then(res => {\r\n          if (res.data.d.IsSuccess) {\r\n            this.vatCode = res.data.d.Vat[0].Code;\r\n          }\r\n        });\r\n    }\r\n  },\r\n  created() {    \r\n    this.getVatCodes();\r\n  }\r\n}\r\n\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationsList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationsList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuotationsList.vue?vue&type=template&id=7aae6a3c&\"\nimport script from \"./QuotationsList.vue?vue&type=script&lang=js&\"\nexport * from \"./QuotationsList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('div',{staticClass:\"row\"},[(_vm.isAddingQuoteToCart)?[_c('div',{staticClass:\"full-screen\",attrs:{\"id\":\"spinner-screen\"}},[_c('div',{staticClass:\"spinner-wrapper loading-quotes\"},[(_vm.showAddToCartLoaderMessage)?[_c('div',{staticClass:\"loader\"}),_c('span',[_vm._v(_vm._s(_vm.addingQuoteToCartMessage))])]:_vm._e()],2)])]:_vm._e(),(!_vm.noResult)?[(_vm.showPrintIframe)?[_c('iframe',{attrs:{\"width\":\"0\",\"height\":\"0\",\"src\":_vm.iframeSource,\"id\":\"print-frame\",\"name\":\"print-frame\"}})]:_vm._e(),(_vm.showDeleteQuotation)?[_c('utlz-delete-quotation',{attrs:{\"quoteId\":_vm.quoteDetails.quoteNr},on:{\"deleteQuotationEvent\":function($event){return _vm.deleteQuotation($event)},\"cancelPrompt\":function($event){_vm.showDeleteQuotation = false}}})]:_vm._e(),(_vm.showProductsAddedToCartHadErrors)?_c('div',{staticClass:\"full-screen-fader add-product flex-column justify-content-center utlz-reset errors-modal\"},[_c('div',{staticClass:\"utlz-container\"},[_c('div',{staticClass:\"utlz-row\"},[_c('div',{staticClass:\"utlz-col-lg-12\"},[_c('span',{staticClass:\"close-button\",on:{\"click\":function($event){return _vm.closeProductsWithErrors()}}},[_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"}})]),_c('div',{staticClass:\"modal-content add-product-modal-content utlz-row\"},[_c('div',{staticClass:\"utlz-col-12\"},[_c('h3',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_prod_errors' }),expression:\"{ type: 'label', code: 'label_prod_errors' }\"}]}),_vm._l((_vm.productsWithErrors),function(prod){return _c('span',{key:prod},[_vm._v(\"\\n                  \"+_vm._s(prod)+\",\\n                \")])})],2)])])])])]):_vm._e(),(_vm.showAddProductModal)?_c('div',{staticClass:\"full-screen-fader add-product flex-column justify-content-center utlz-reset\"},[_c('div',{staticClass:\"utlz-container\"},[_c('div',{staticClass:\"utlz-row\"},[_c('div',{staticClass:\"utlz-col-lg-12\"},[_c('span',{staticClass:\"close-button\",on:{\"click\":function($event){return _vm.closeSearchProduct()}}},[_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"}})]),_c('div',{staticClass:\"modal-content add-product-modal-content utlz-row\"},[_c('utlz-search-product',{on:{\"addExistingProductToQuotation\":function($event){return _vm.addExistingProductToQuotation($event)}}})],1)])])])]):_vm._e(),_c('div',{staticClass:\"col-md-12\"},[_c('h1',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'title_quotation', type: 'title' }),expression:\"{ code: 'title_quotation', type: 'title' }\"}]})]),_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"panel-grey-100 row quote-info\"},[_c('div',{staticClass:\"col-md-6 meta-data\"},[_c('p',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quotes_nr', type: 'label' }),expression:\"{ code: 'label_quotes_nr', type: 'label' }\"}],staticClass:\"label-bold\"}),_c('span',[_vm._v(_vm._s(_vm.quoteDetails.quoteNr))])]),_c('div',{staticClass:\"quote-date\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quotes_date', type: 'label' }),expression:\"{ code: 'label_quotes_date', type: 'label' }\"}],staticClass:\"label-bold\"}),_vm._m(0)]),_c('div',{staticClass:\"quote-date\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quotes_exp_date', type: 'label' }),expression:\"{ code: 'label_quotes_exp_date', type: 'label' }\"}],staticClass:\"label-bold\"}),_vm._m(1)])]),_c('div',{staticClass:\"col-md-6 logo-col\"},[_c('utlz-upload-logo',{attrs:{\"quoteId\":_vm.quoteDetails.quoteNr,\"imageUrl\":_vm.quoteDetails.logoImgUrl},on:{\"saveCompanyLogo\":function($event){return _vm.SaveCompanyLogo($event)}}})],1)])]),_c('div',{staticClass:\"col-md-12 addresses\"},[_c('div',{staticClass:\"panel-grey-100 row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quote_from', type: 'label' }),expression:\"{ code: 'label_quote_from', type: 'label' }\"}],staticClass:\"label-bold\"})]),_c('div',{staticClass:\"col-md-12\"},[_c('utlz-address-card',{attrs:{\"address\":Object.assign({}, _vm.deliveryAddress),\"type\":'delivery',\"modalTitle\":_vm.titleLabelQuoteFrom},on:{\"updateAddressEvent\":function($event){return _vm.updateAddress($event)}}})],1)])]),_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quote_to', type: 'label' }),expression:\"{ code: 'label_quote_to', type: 'label' }\"}],staticClass:\"label-bold\"})]),_c('div',{staticClass:\"col-md-12\"},[_c('utlz-address-card',{attrs:{\"address\":Object.assign({}, _vm.invoiceAddress),\"type\":'invoice',\"modalTitle\":_vm.titleAddrCard},on:{\"updateAddressEvent\":function($event){return _vm.updateAddress($event)}}})],1)])])])])])]),_c('div',{staticClass:\"col-md-4 utlz-reset\"},[_c('ul',{staticClass:\"action-links\"},[_c('li',{staticClass:\"text-link\",on:{\"click\":function($event){return _vm.printQuote()}}},[_c('i',{staticClass:\"fa fa-print\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_print_quote', type: 'button'}),expression:\"{ code: 'button_print_quote', type: 'button'}\"}]})]),_c('li',{staticClass:\"text-link\",on:{\"click\":function($event){return _vm.initDeleteQuotation()}}},[_c('i',{staticClass:\"fa fa-trash\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_delete_quote', type: 'button'}),expression:\"{ code: 'button_delete_quote', type: 'button'}\"}]})])])])])]),_c('div',{staticClass:\"col-md-12 quotation-lines\"},[_c('div',{staticClass:\"row lines-header panel-grey-100\"},[_c('div',{staticClass:\"col-md-1 prod-img label-bold\"}),_c('div',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_desc', type: 'label'}),expression:\"{ code: 'label_col_desc', type: 'label'}\"}],staticClass:\"col-md-6 prod-desc label-bold\"}),_c('div',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_price', type: 'label'}),expression:\"{ code: 'label_col_price', type: 'label'}\"}],staticClass:\"col-md-2 prod-price label-bold\"}),_c('div',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_qty', type: 'label'}),expression:\"{ code: 'label_col_qty', type: 'label'}\"}],staticClass:\"col-md-1 prod-qty label-bold\"}),_c('div',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_amt', type: 'label'}),expression:\"{ code: 'label_col_amt', type: 'label'}\"}],staticClass:\"col-md-1 row-amt label-bold\"}),_c('div',{staticClass:\"col-md-1 delete label-bold\"})]),_c('div',{staticClass:\"row lines-body panel-grey-100\"},[_vm._l((_vm.quoteLines),function(line){return _c('utlz-quotation-line',{key:line.recId,attrs:{\"quotation\":line},on:{\"updateProductDescriptionEvent\":function($event){return _vm.updateDescription($event)},\"deleteQuotationEvent\":function($event){return _vm.deleteQuotationLine($event)},\"updateQuantityEvent\":function($event){return _vm.updateQuantity($event)},\"updatePriceEvent\":function($event){return _vm.updatePrice($event)}}})}),_c('div',{staticClass:\"col-md-12 quotation-line add-line\",on:{\"click\":function($event){return _vm.initAddProductModal()}}},[_c('div',{staticClass:\"row\"},[_vm._m(2),_c('div',{staticClass:\"col-md-4\"},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_add_quote_line', type: 'label'}),expression:\"{ code: 'label_add_quote_line', type: 'label'}\"}],staticClass:\"label-bold\"}),_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_add_quote_example', type: 'label'}),expression:\"{ code: 'label_add_quote_example', type: 'label'}\"}],staticClass:\"text-small text-grey-100\"})])])])],2)]),_c('div',{staticClass:\"col-md-12 discounts\"},[_c('div',{staticClass:\"row panel-grey-100\"},[_c('utlz-quotation-discount',{attrs:{\"quotation\":_vm.quoteDetails},on:{\"updateDiscountEvent\":_vm.updateDiscount}}),_c('utlz-select-vat-percentage',{attrs:{\"quotation\":_vm.quoteDetails},on:{\"updateVatEvent\":function($event){return _vm.updateVatPercentage($event)}}})],1)]),_c('div',{staticClass:\"col-md-6 col-md-offset-6\"},[_c('div',{staticClass:\"row totals\"},[_c('div',{staticClass:\"col-12\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_subtotal_excl', type: 'label' }),expression:\"{ code: 'label_subtotal_excl', type: 'label' }\"}]}),_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.totalExcl))])]),(_vm.applyingDiscount)?[_c('div',{staticClass:\"col-12\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_disc_excl', type: 'label' }),expression:\"{ code: 'label_disc_excl', type: 'label' }\"}]}),_c('span',{staticClass:\"label-bold\"},[_vm._v(\"\\n              - \"+_vm._s(_vm.discountTotal)+\"\\n            \")])])]:_vm._e(),_c('div',{staticClass:\"col-12\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_total_vat', type: 'label' }),expression:\"{ code: 'label_total_vat', type: 'label' }\"}]}),_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.vatTotal))])]),_c('div',{staticClass:\"col-12\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_total_incl_vat', type: 'label' }),expression:\"{ code: 'label_total_incl_vat', type: 'label' }\"}]}),_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.totalIncl))])])],2)]),_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"buttons\"},[_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_back_to_quotes', type: 'button'}),expression:\"{ code: 'button_back_to_quotes', type: 'button'}\"}],staticClass:\"btn-u btn-u-sea-shop\",attrs:{\"href\":'/' + _vm.language + '/bespoke/account/quotations.aspx'}}),_c('a',{staticClass:\"btn-u btn-u-sea-shop add-to-cart\",on:{\"click\":function($event){return _vm.addQuoteToCart()}}},[_c('i',{staticClass:\"fa fa-shopping-cart\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_quote_to_cart', type: 'button'}),expression:\"{ code: 'button_quote_to_cart', type: 'button'}\"}]})]),_c('a',{staticClass:\"btn-u btn-u-sea-shop\",on:{\"click\":function($event){return _vm.printQuote()}}},[_c('i',{staticClass:\"fa fa-print\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_print_quote', type: 'button'}),expression:\"{ code: 'button_print_quote', type: 'button'}\"}]})])])])]:[_c('p',[_vm._v(\"No results found\")])]],2):_c('div',[_c('div',{staticClass:\"col-md-12\"},[_c('div',{attrs:{\"id\":\"spinner-screen\"}},[_c('div',{staticClass:\"spinner-wrapper loading-quotes\"},[_c('div',{staticClass:\"loader\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_loading_quote' , type: 'label'}),expression:\"{ code: 'label_loading_quote' , type: 'label'}\"}]})])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flatpickr input-group\",attrs:{\"id\":\"date-picker\",\"data-id\":\"strap\"}},[_c('input',{staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Kies een datum\",\"data-input\":\"\"}}),_c('i',{staticClass:\"fa fa-pencil\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flatpickr input-group\",attrs:{\"id\":\"exp-date-picker\",\"data-id\":\"strap\"}},[_c('input',{staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Kies een datum\",\"data-input\":\"\"}}),_c('i',{staticClass:\"fa fa-pencil\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-1 prod-img\"},[_c('div',{staticClass:\"plus-icon\"},[_c('i',{staticClass:\"fa fa-plus\"})])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-search-product rows\"},[_c('h2',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type:'title', code: 'title_add_prodtoloc' }),expression:\"{ type:'title', code: 'title_add_prodtoloc' }\"}]}),_c('utlz-tabs',{attrs:{\"tabs\":_vm.tabs},scopedSlots:_vm._u([{key:\"existingproduct\",fn:function(){return [_c('div',{staticClass:\"existing-product\"},[_c('div',{staticClass:\"form-group-custom\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_search_by_prod', type: 'label'}),expression:\"{ code: 'label_search_by_prod', type: 'label'}\"}],attrs:{\"for\":\"city\"}}),_c('utlz-searchbar',{attrs:{\"id\":\"searchbar\",\"placeholder\":_vm.placeholder},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}})],1)]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.selectedProduct.prices !== undefined)?_c('div',{staticClass:\"entry-product\"},[_c('div',{staticClass:\"prod-img\"},[_c('img',{attrs:{\"src\":_vm.selectedProduct.imageUrl ? _vm.selectedProduct.imageUrl : '/documents/productimages/not-available-small.jpg'}})]),_c('div',{staticClass:\"prod-desc\"},[_c('p',[_vm._v(_vm._s(_vm.selectedProduct.shortDescription))]),_c('p',{staticClass:\"prod-code\"},[_vm._v(_vm._s(_vm.selectedProduct.id))])]),(_vm.selectedProduct.prices.length)?_c('div',{staticClass:\"prod-price\"},[_c('utlz-product-price',{attrs:{\"prices\":_vm.selectedProduct.prices[0]}})],1):_vm._e(),_c('div',{staticClass:\"quantity\"},[_c('utlz-quantity-buttons',{attrs:{\"initialQuantity\":1,\"allowZeroQuantity\":false,\"quantityFactor\":1},on:{\"quantityChanged\":function($event){return _vm.quantityChanged($event)}}})],1),_c('div',{staticClass:\"add-product-btn\"},[_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_add_product', type: 'button'}),expression:\"{ code: 'button_add_product', type: 'button'}\"}],staticClass:\"btn-u btn-u-sea-shop btn-block\",on:{\"click\":function($event){return _vm.addExistingProductToQuotation(_vm.selectedProduct.id)}}})])]):_vm._e()])],1)]},proxy:true},{key:\"newproduct\",fn:function(){return [_c('div',{staticClass:\"new-product\"},[_c('div',{staticClass:\"form-group-custom\"},[_c('div',{staticClass:\"form-group input-desc\"},[_c('label',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_add_cust_desc', type: 'label'}),expression:\"{ code: 'label_add_cust_desc', type: 'label'}\"}],attrs:{\"for\":\"desc\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customProductDesc),expression:\"customProductDesc\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"desc\",\"placeholder\":_vm.placeholderCustProd},domProps:{\"value\":(_vm.customProductDesc)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customProductDesc=$event.target.value}}})]),_c('div',{staticClass:\"form-group input-price\"},[_c('label',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_add_cust_price', type: 'label'}),expression:\"{ code: 'label_add_cust_price', type: 'label'}\"}],attrs:{\"for\":\"desc\"}}),_c('utlz-decimal-field',{attrs:{\"initialValue\":_vm.customProductPrice},on:{\"valueUpdatedEvent\":function($event){return _vm.updatePrice($event)}}})],1)]),_c('div',{staticClass:\"add-product-btn\"},[_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_add_product', type: 'button'}),expression:\"{ code: 'button_add_product', type: 'button'}\"}],staticClass:\"btn-u btn-u-sea-shop btn-block\",on:{\"click\":function($event){return _vm.addCustomProductToQuotation()}}})])])]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cmp-searchbar\"},[_c('div',{staticClass:\"form-field\"},[_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value},on:{\"keyup\":function($event){return _vm.searchString($event.target.value)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.updateByEnter($event.target.value)}}}),(Object.keys(_vm.selectedProduct).length)?_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"},on:{\"click\":_vm.emptySelectedProduct}}):_vm._e()]),(_vm.productsFound)?_c('div',{staticClass:\"autocomplete-data\"},_vm._l((_vm.autocompleteData),function(option,index){return _c('div',{key:index,staticClass:\"auto-complete-option\"},[_c('div',{on:{\"click\":function($event){return _vm.updateFromList(option.key)}}},[_c('div',{staticClass:\"option-key\"},[_vm._v(\"\\n          \"+_vm._s(option.key)+\"\\n        \")]),_c('div',[_c('h2',{staticClass:\"option-name\"},[_vm._v(_vm._s(option.value))])])])])}),0):(!_vm.productsFound && _vm.autocompleteData.length)?_c('div',{staticClass:\"autocomplete-data no-products-found\"},[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_no_products_found', type: 'label' }),expression:\"{ code: 'label_no_products_found', type: 'label' }\"}]})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"cmp-searchbar\">\r\n    <div class=\"form-field\">\r\n      <input type=\"text\"\r\n             :placeholder=\"placeholder\"\r\n             @keyup=\"searchString($event.target.value)\"\r\n             @keydown.enter=\"updateByEnter($event.target.value)\"\r\n             :value=\"value\" />\r\n      <i class=\"fa fa-times-circle\" v-if=\"Object.keys(selectedProduct).length\" aria-hidden=\"true\" @click=\"emptySelectedProduct\"></i>\r\n    </div>\r\n    <div class=\"autocomplete-data\" v-if=\"productsFound\">\r\n      <div v-for=\"(option, index) in autocompleteData\" :key=\"index\" class=\"auto-complete-option\">\r\n        <div v-on:click=\"updateFromList(option.key)\">\r\n          <div class=\"option-key\">\r\n            {{option.key}}\r\n          </div>\r\n          <div>\r\n            <h2 class=\"option-name\">{{ option.value }}</h2>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"autocomplete-data no-products-found\" v-else-if=\"!productsFound && autocompleteData.length\">\r\n      <span v-translation=\"{ code: 'label_no_products_found', type: 'label' }\"></span>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapState, mapGetters, mapActions } from 'vuex';\r\n// BESPOKE\r\nimport _ from 'lodash';\r\n// END BESPOKE\r\nexport default {\r\n  props: {\r\n    placeholder: { type: String, required: false },\r\n    value: ''\r\n  },\r\n  computed: {\r\n    ...mapState('orderEntry', ['productsFound', 'autocompleteData', 'selectedProduct'])\r\n  },\r\n  methods: {\r\n    ...mapActions('orderEntry', ['getAutocompleteData', 'updateSearchText', 'getProductInformation', 'clearSelectedProduct']),\r\n    searchString (textField) {\r\n      this.updateSearchText(textField);\r\n      this.getAutocompleteData();\r\n      this.$emit('input', textField);\r\n    },\r\n    updateByEnter (textField) {\r\n      if (this.productsFound) {\r\n        this.getProductInformation();\r\n        this.$emit('input', textField);\r\n      }\r\n    },\r\n    updateFromList (id) {\r\n      this.updateSearchText(id);\r\n      this.$emit('input', id);\r\n      this.getProductInformation();\r\n    },\r\n    emptySelectedProduct () {\r\n      this.textField = '';\r\n      this.clearSelectedProduct();\r\n    }\r\n  },\r\n  // BESPOKE\r\n  // Added debounce so that user input is throttled by 750 ms before firing a new ajax request\r\n  created() {\r\n    this.searchString = _.debounce(this.searchString, 500);\r\n  }\r\n  // END BESPOKE\r\n}\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Searchbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Searchbar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Searchbar.vue?vue&type=template&id=b0c49034&\"\nimport script from \"./Searchbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Searchbar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dec-field\",attrs:{\"data-length\":_vm.value.length}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"}],staticClass:\"form-control\",attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.value)},on:{\"change\":function($event){return _vm.updateValue()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.updateValue()},\"input\":function($event){if($event.target.composing){ return; }_vm.value=$event.target.value}}}),_c('span',{staticClass:\"signs\"},[_c('span',{staticClass:\"perc\"},[_vm._v(\"%\")]),_c('span',{staticClass:\"curr-sign\"},[_vm._v(_vm._s(_vm.currencySign))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"dec-field\" :data-length=\"value.length\">\r\n  <input type=\"number\" v-model=\"value\" class=\"form-control\" @change=\"updateValue()\" v-on:keyup.enter=\"updateValue()\">\r\n    <span class=\"signs\">\r\n      <span class=\"perc\">%</span>\r\n      <span class=\"curr-sign\">{{ currencySign }}</span>\r\n    </span>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    maxValue: { type: Number, required: false, default: 0.00 },\r\n    initialValue: { type: Number, required: false, default: 0.00 }\r\n  },\r\n  data() {\r\n    return {\r\n      value: 0.00\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters('quotations', ['currencySign'])\r\n  },\r\n  watch: {    \r\n    initialValue (val) { this.value = val.toFixed(2) }\r\n  },\r\n  methods: {\r\n    updateValue() {\r\n      var parsedValue = this.parseInput(this.value);\r\n\r\n      if (this.maxValue > 0) {\r\n        parsedValue = parsedValue > this.maxValue ? this.maxValue : parsedValue;\r\n      }\r\n      if (parsedValue < 0) {\r\n        this.value = this.initialValue.toFixed(2);\r\n      } else {      \r\n        this.value = parsedValue.toFixed(2);\r\n        this.$emit('valueUpdatedEvent', parsedValue);\r\n      }\r\n    },\r\n    parseInput(inputString) {\r\n      var newValue = parseFloat(inputString.replace(\",\", \".\"));\r\n\r\n      if (isNaN(newValue) || newValue < 0) {\r\n        return -1;\r\n      }\r\n\r\n      if (newValue < 0.00) {\r\n        return -1;\r\n      }\r\n\r\n      return (Math.round(newValue * 100) / 100);\r\n    }\r\n  },\r\n  created() {\r\n    this.value = this.initialValue.toFixed(2);\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DecimalField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DecimalField.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DecimalField.vue?vue&type=template&id=5f70d100&\"\nimport script from \"./DecimalField.vue?vue&type=script&lang=js&\"\nexport * from \"./DecimalField.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"cmp-search-product rows\">\r\n    \r\n    <h2 v-translation=\"{ type:'title', code: 'title_add_prodtoloc' }\"></h2>\r\n    \r\n    <utlz-tabs :tabs=\"tabs\">\r\n\r\n      <template v-slot:existingproduct>\r\n\r\n        <div class=\"existing-product\">\r\n           <div class=\"form-group-custom\">\r\n            <div class=\"form-group\">\r\n                <label for=\"city\" v-translation=\"{ code: 'label_search_by_prod', type: 'label'}\"></label>                    \r\n                <utlz-searchbar id=\"searchbar\" :placeholder=\"placeholder\" v-model=\"searchText\" />\r\n            </div>\r\n           </div>\r\n\r\n          <transition name=\"fade\">\r\n            <div class=\"entry-product\" v-if=\"selectedProduct.prices !== undefined\">\r\n              <div class=\"prod-img\">\r\n                <img :src=\"selectedProduct.imageUrl ? selectedProduct.imageUrl : '/documents/productimages/not-available-small.jpg'\" />\r\n              </div>\r\n              <div class=\"prod-desc\">\r\n                <p>{{ selectedProduct.shortDescription }}</p>          \r\n                <p class=\"prod-code\">{{ selectedProduct.id }}</p>\r\n              </div>\r\n              <div class=\"prod-price\" v-if=\"selectedProduct.prices.length\">\r\n                <utlz-product-price            \r\n                  :prices=\"selectedProduct.prices[0]\"\r\n                  ></utlz-product-price>\r\n              </div>\r\n              <div class=\"quantity\">\r\n                <utlz-quantity-buttons\r\n                    :initialQuantity=\"1\"\r\n                    :allowZeroQuantity=\"false\"\r\n                    :quantityFactor=\"1\"\r\n                    @quantityChanged=\"quantityChanged($event)\">\r\n                </utlz-quantity-buttons>\r\n              </div>\r\n              <div class=\"add-product-btn\">\r\n                <a @click=\"addExistingProductToQuotation(selectedProduct.id)\" v-translation=\"{ code: 'button_add_product', type: 'button'}\" class=\"btn-u btn-u-sea-shop btn-block\"></a>\r\n              </div>\r\n            </div>\r\n          </transition>\r\n\r\n        </div>\r\n      </template>\r\n\r\n      <template v-slot:newproduct>\r\n        <div class=\"new-product\">\r\n          <div class=\"form-group-custom\">\r\n             <div class=\"form-group input-desc\">\r\n                <label for=\"desc\" v-translation=\"{ code: 'label_add_cust_desc', type: 'label'}\"></label>\r\n                <input type=\"text\" class=\"form-control\" id=\"desc\" :placeholder=\"placeholderCustProd\" v-model=\"customProductDesc\">\r\n              </div>\r\n              <div class=\"form-group input-price\">\r\n                <label for=\"desc\" v-translation=\"{ code: 'label_add_cust_price', type: 'label'}\"></label>\r\n                <utlz-decimal-field :initialValue=\"customProductPrice\" @valueUpdatedEvent=\"updatePrice($event)\"></utlz-decimal-field>\r\n              </div>\r\n          </div>\r\n          <div class=\"add-product-btn\">\r\n            <a @click=\"addCustomProductToQuotation()\" v-translation=\"{ code: 'button_add_product', type: 'button'}\" class=\"btn-u btn-u-sea-shop btn-block\"></a>\r\n          </div>\r\n        </div>\r\n      </template>\r\n\r\n    </utlz-tabs>\r\n\r\n\r\n    \r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import { mapState, mapGetters, mapActions } from 'vuex';\r\n  import Searchbar from './../../src/components/webshop/search-bar/Searchbar.vue';\r\n  import ProductListItem from './../../src/components/webshop/products/product-list-item/ProductListItem.vue';\r\n  import ProductPrice from './../../src/components/webshop/product-price/ProductPrice.vue'\r\n  import QuantityButtons from './../../src/components/webshop/order-product/blocks/QuantityButtons.vue';\r\n  import DecimalField from './../../bespoke/quotations/DecimalField.vue';\r\n  import Tabs from 'src/components/ui/tabs/Tabs.vue';\r\n  export default {\r\n    data() {\r\n      return {\r\n        customProductPrice: 0,\r\n        customProductDesc: \"\",\r\n        placeholder: window.vue.translations.label.label_ph_search_prod,\r\n        searchText: '',\r\n        setQuantity: 1,\r\n        tabs: [\r\n          { id: 'existingproduct', description: window.vue.translations.label.label_search_prod, active: true, visible: true },\r\n          { id: 'newproduct', description: window.vue.translations.label.label_add_custom_prod, active: false, visible: true }\r\n        ],\r\n        placeholderCustProd: window.vue.translations.label.label_phcust_prod\r\n      }\r\n    },\r\n    methods: {\r\n      ...mapActions('orderEntry', ['clearSelectedProduct']),\r\n      updatePrice(customProductPrice) {\r\n        this.customProductPrice = customProductPrice;\r\n      },\r\n      addExistingProductToQuotation() {\r\n        const quoteOrderLine = {\r\n          productPrice: this.selectedProduct.prices[0].rawPrice,\r\n          productDescription: this.selectedProduct.shortDescription,\r\n          productId: this.selectedProduct.id,\r\n          imageUrl: this.selectedProduct.imageUrl ? this.selectedProduct.imageUrl : '/documents/productimages/not-available-small.jpg',\r\n          quantity: 1,\r\n          rowAmount: this.selectedProduct.prices[0].rawPrice,\r\n          customProduct: false\r\n        };\r\n\r\n        this.searchText = '';\r\n        this.setQuantity = 1;\r\n        this.clearSelectedProduct();\r\n        this.$emit('addExistingProductToQuotation', quoteOrderLine);\r\n      },\r\n      addCustomProductToQuotation() {\r\n        const quoteOrderLine = {\r\n          productPrice: this.customProductPrice,\r\n          productDescription: this.customProductDesc,\r\n          productId: this.bespokeGlobalWs.customQuoteProduct,\r\n          quantity: 1,\r\n          rowAmount: this.customProductPrice,\r\n          customProduct: true\r\n        };\r\n        this.$emit('addExistingProductToQuotation', quoteOrderLine);\r\n        this.searchText = '';\r\n        this.setQuantity = 1;\r\n        this.clearSelectedProduct();\r\n      },\r\n      quantityChanged(ev) {\r\n        this.setQuantity = ev.quantity;\r\n      }\r\n    },\r\n    components: {\r\n      'utlz-searchbar': Searchbar,\r\n      'utlz-product-list-item': ProductListItem,\r\n      'utlz-product-price': ProductPrice,\r\n      'utlz-quantity-buttons': QuantityButtons,\r\n      'utlz-tabs': Tabs,\r\n      'utlz-decimal-field': DecimalField\r\n    },\r\n    computed: {\r\n      ...mapState('orderEntry', ['selectedProduct']),\r\n      ...mapGetters(['bespokeGlobalWs'])\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProduct.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchProduct.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SearchProduct.vue?vue&type=template&id=6f8152ae&\"\nimport script from \"./SearchProduct.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchProduct.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-12 quotation-line\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-1 prod-img\"},[(_vm.quotation.customProduct)?[_vm._m(0)]:_vm._e(),[_c('img',{staticClass:\"img-responsive\",attrs:{\"src\":_vm.quotation.imageUrl}})]],2),_c('div',{staticClass:\"col-md-6 prod-desc label-bold\"},[(_vm.quotation.customProduct)?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.quotation.productDescription),expression:\"quotation.productDescription\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.quotation.productDescription)},on:{\"change\":function($event){return _vm.updateProductDescription()},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.quotation, \"productDescription\", $event.target.value)}}})]:[_c('p',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.quotation.productDescription))]),_c('p',{staticClass:\"comment\"},[_vm._v(_vm._s(_vm.quotation.comment))]),_c('p',{staticClass:\"text-small text-grey-100\"},[_vm._v(_vm._s(_vm.quotation.productId))])]],2),_c('div',{staticClass:\"col-md-2 prod-price\"},[_c('utlz-decimal-field',{attrs:{\"initialValue\":_vm.quotation.productPrice},on:{\"valueUpdatedEvent\":function($event){return _vm.updatePrice($event)}}})],1),_c('div',{staticClass:\"col-md-1 prod-qty\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.productQuantity),expression:\"productQuantity\"}],staticClass:\"form-control\",domProps:{\"value\":(_vm.productQuantity)},on:{\"change\":function($event){return _vm.updateQuantity()},\"input\":function($event){if($event.target.composing){ return; }_vm.productQuantity=$event.target.value}}})]),_c('div',{staticClass:\"col-md-1 row-amt\"},[_vm._v(\"\\n      \"+_vm._s(_vm.formattedRowAmount)+\"\\n    \")]),_c('div',{staticClass:\"col-md-1 delete\"},[_c('i',{staticClass:\"fa fa-trash-o delete-button\",on:{\"click\":function($event){return _vm.deleteQuotation()}}})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"cust-prod-icon\"},[_c('i',{staticClass:\"fa fa-wrench\"})])}]\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-md-12 quotation-line\">\r\n    <div class=\"row\">\r\n\r\n      <div class=\"col-md-1 prod-img\">\r\n        <template v-if=\"quotation.customProduct\">          \r\n          <span class=\"cust-prod-icon\">\r\n            <i class=\"fa fa-wrench\"></i>\r\n          </span>\r\n        </template>\r\n        <template>\r\n          <img class=\"img-responsive\" :src=\"quotation.imageUrl\" />\r\n        </template>\r\n      </div>\r\n\r\n      <div class=\"col-md-6 prod-desc label-bold\">        \r\n        <template v-if=\"quotation.customProduct\">  \r\n          <input type=\"text\" v-model=\"quotation.productDescription\" @change=\"updateProductDescription()\" />\r\n        </template>\r\n        <template v-else>  \r\n          <p class=\"label-bold\">{{ quotation.productDescription }}</p>\r\n          <p class=\"comment\">{{ quotation.comment }}</p>\r\n          <p class=\"text-small text-grey-100\">{{ quotation.productId }}</p>\r\n        </template>\r\n      </div>\r\n\r\n      <div class=\"col-md-2 prod-price\">        \r\n        <utlz-decimal-field :initialValue=\"quotation.productPrice\" @valueUpdatedEvent=\"updatePrice($event)\"></utlz-decimal-field>\r\n      </div>\r\n\r\n      <div class=\"col-md-1 prod-qty\">        \r\n        <input v-model=\"productQuantity\" class=\"form-control\" @change=\"updateQuantity()\">\r\n      </div>\r\n\r\n      <div class=\"col-md-1 row-amt\">\r\n        {{ formattedRowAmount }}\r\n      </div>\r\n\r\n      <div class=\"col-md-1 delete\">\r\n        <i class=\"fa fa-trash-o delete-button\" @click=\"deleteQuotation()\"></i>\r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { formatPrice } from 'src/utilities/helpers';\r\nimport DecimalField from './../../bespoke/quotations/DecimalField.vue';\r\nexport default {\r\n  props: {\r\n    quotation: { type: Object, required: true }\r\n  },\r\n  components: {\r\n    'utlz-decimal-field': DecimalField\r\n  },\r\n  data() {\r\n    return {      \r\n      productQuantity: this.quotation.quantity\r\n    }\r\n  },\r\n  computed: {\r\n    formattedRowAmount() {\r\n      return formatPrice(this.quotation.rowAmount);\r\n    }\r\n  },\r\n  methods: {\r\n    deleteQuotation() {\r\n      this.$emit('deleteQuotationEvent', this.quotation.recId);\r\n    },\r\n    updatePrice(productPrice) {\r\n      var rowAmount = productPrice * this.productQuantity;\r\n      var payload = { price: productPrice, rowAmount: rowAmount, recId: this.quotation.recId };\r\n      this.$emit('updatePriceEvent', payload);\r\n    },\r\n    updateQuantity() {\r\n      var parsedQuantity = parseInt(this.productQuantity);\r\n\r\n      if (parsedQuantity < 0 || isNaN(parsedQuantity)) {\r\n        this.productQuantity = 0;\r\n        return;\r\n      }\r\n\r\n      this.productQuantity = parsedQuantity;\r\n      var rowAmount = this.quotation.productPrice * parsedQuantity;\r\n      var payload = { quantity: parsedQuantity, rowAmount: rowAmount, recId: this.quotation.recId };\r\n      this.$emit('updateQuantityEvent', payload);\r\n    },\r\n    updateProductDescription() {\r\n      var payload = { prodDesc: this.quotation.productDescription, recId: this.quotation.recId };\r\n      this.$emit('updateProductDescriptionEvent', payload);\r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationLine.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuotationLine.vue?vue&type=template&id=a8a831ca&\"\nimport script from \"./QuotationLine.vue?vue&type=script&lang=js&\"\nexport * from \"./QuotationLine.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"address-card\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showModal)?_c('div',{staticClass:\"full-screen-fader edit-address flex-column justify-content-center\"},[_c('div',{staticClass:\"utlz-container\"},[_c('div',{staticClass:\"utlz-row\"},[_c('div',{staticClass:\"utlz-col-lg-12\"},[_c('span',{staticClass:\"close-button\",on:{\"click\":function($event){return _vm.closeModal()}}},[_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"}})]),_c('div',{staticClass:\"modal-content add-product-modal-content address-modal\"},[(_vm.loading)?[_c('p',[_vm._v(\"Loading\")])]:[_c('div',{staticClass:\"form-wrapper\"},[_c('h2',[_vm._v(_vm._s(_vm.modalTitle))]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"name\"}},[_vm._v(\"\\n                    \"+_vm._s(_vm.labelName)+\"\\n                  \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.name),expression:\"address.name\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"name\",\"placeholder\":_vm.labelName},domProps:{\"value\":(_vm.address.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.address, \"name\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"country\"}},[_vm._v(\"\\n                    \"+_vm._s(_vm.labelCountry)+\"\\n                  \")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.countryCode),expression:\"address.countryCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"country\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.address, \"countryCode\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.availableCountries),function(country){return _c('option',{key:country.Code,domProps:{\"value\":country.Code}},[_vm._v(\"         \\n                      \"+_vm._s(country.Name)+\"\\n                    \")])}),0)]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"address\"}},[_vm._v(\"\\n                    \"+_vm._s(_vm.labelAddress)+\"\\n                  \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.address),expression:\"address.address\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"address\",\"placeholder\":_vm.labelAddress},domProps:{\"value\":(_vm.address.address)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.address, \"address\", $event.target.value)}}})]),_c('div',{staticClass:\"address-form-group\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"city\"}},[_vm._v(\"\\n                      \"+_vm._s(_vm.labelCity)+\"\\n                    \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.city),expression:\"address.city\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"city\",\"placeholder\":_vm.labelCity},domProps:{\"value\":(_vm.address.city)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.address, \"city\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quote_col_zip', type: 'label'}),expression:\"{ code: 'label_quote_col_zip', type: 'label'}\"}],attrs:{\"for\":\"name\"}},[_vm._v(\"\\n                      \"+_vm._s(_vm.labelZip)+\"\\n                    \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.zipCode),expression:\"address.zipCode\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"zipcode\",\"placeholder\":_vm.labelZip},domProps:{\"value\":(_vm.address.zipCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.address, \"zipCode\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group\"},[_c('label',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quote_col_phone', type: 'label'}),expression:\"{ code: 'label_quote_col_phone', type: 'label'}\"}],attrs:{\"for\":\"name\"}},[_vm._v(\"\\n                     \"+_vm._s(_vm.labelPhone)+\"\\n                  \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.phone),expression:\"address.phone\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"phone\",\"placeholder\":_vm.labelPhone},domProps:{\"value\":(_vm.address.phone)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.address, \"phone\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"email\"}},[_vm._v(\"\\n                    \"+_vm._s(_vm.labelEmail)+\"\\n                    \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.address.email),expression:\"address.email\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"email\",\"placeholder\":_vm.labelEmail},domProps:{\"value\":(_vm.address.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.address, \"email\", $event.target.value)}}})]),_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_save_address', type: 'button'}),expression:\"{ code: 'button_save_address', type: 'button'}\"}],staticClass:\"btn-u btn-u-sea-shop btn-block\",on:{\"click\":_vm.saveForm}})])]],2)])])])]):_vm._e()]),(_vm.showAddress)?[_c('div',{staticClass:\"panel-white\"},[_c('p',[_vm._v(_vm._s(_vm.address.name))]),_c('p',[_vm._v(_vm._s(_vm.address.address))]),_c('p',[_vm._v(_vm._s(_vm.address.zipCode)+\" \"+_vm._s(_vm.address.city))]),_c('p',[_vm._v(_vm._s(_vm.countryDisplayName))]),_c('p',[_vm._v(_vm._s(_vm.address.phone))]),_c('p',[_vm._v(_vm._s(_vm.address.email))]),_c('span',{staticClass:\"edit-icon\",on:{\"click\":_vm.openModal}},[_c('i',{staticClass:\"fa fa-pencil-square-o\"})])]),(_vm.addressIncomplete)?[_c('div',{staticClass:\"alert alert-warning incomp-address\",attrs:{\"role\":\"alert\"}},[_vm._v(\"Adres gegevens zijn incompleet\")])]:_vm._e()]:[_c('div',{staticClass:\"add-address panel-white\",on:{\"click\":_vm.openModal}},[_vm._m(0)])]],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-icon\"},[_c('i',{staticClass:\"fa fa-user\"}),_c('i',{staticClass:\"fa fa-plus\"})])}]\n\nexport { render, staticRenderFns }","<template>\r\n\r\n  <div class=\"address-card\">\r\n    <transition name=\"fade\">\r\n    <div v-if=\"showModal\" class=\"full-screen-fader edit-address flex-column justify-content-center\">\r\n      <div class=\"utlz-container\">\r\n        <div class=\"utlz-row\">\r\n          <div class=\"utlz-col-lg-12\">\r\n            <span class=\"close-button\" @click=\"closeModal()\">\r\n              <i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i>\r\n            </span>\r\n            <div class=\"modal-content add-product-modal-content address-modal\">\r\n              <template v-if=\"loading\">\r\n                <p>Loading</p>\r\n              </template>\r\n              <template v-else>\r\n                <div class=\"form-wrapper\">\r\n                  <h2>{{ modalTitle }}</h2>\r\n                  <div class=\"form-group\">\r\n                    <label for=\"name\">\r\n                      {{ labelName }}\r\n                    </label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"name\" :placeholder=\"labelName\" v-model=\"address.name\">\r\n                  </div>\r\n\r\n                  <div class=\"form-group\">\r\n                    <label for=\"country\">\r\n                      {{ labelCountry }}\r\n                    </label>\r\n                    <select id=\"country\" v-model=\"address.countryCode\" class=\"form-control\">\r\n                      <option v-for=\"country in availableCountries\" :key=\"country.Code\" :value=\"country.Code\">         \r\n                        {{ country.Name }}\r\n                      </option> \r\n                    </select>\r\n                  </div>\r\n\r\n                  <div class=\"form-group\">\r\n                    <label for=\"address\">\r\n                      {{labelAddress }}\r\n                    </label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"address\" :placeholder=\"labelAddress\" v-model=\"address.address\">\r\n                  </div>\r\n\r\n                  <div class=\"address-form-group\">\r\n                    <div class=\"form-group\">\r\n                      <label for=\"city\">\r\n                        {{labelCity }}\r\n                      </label>\r\n                      <input type=\"text\" class=\"form-control\" id=\"city\" :placeholder=\"labelCity\" v-model=\"address.city\">\r\n                    </div>\r\n                    <div class=\"form-group\">\r\n                      <label for=\"name\" v-translation=\"{ code: 'label_quote_col_zip', type: 'label'}\">\r\n                        {{ labelZip }}\r\n                      </label>\r\n                      <input type=\"text\" class=\"form-control\" id=\"zipcode\" :placeholder=\"labelZip\" v-model=\"address.zipCode\">\r\n                    </div>\r\n                  </div>\r\n\r\n                  <div class=\"form-group\">\r\n                    <label for=\"name\" v-translation=\"{ code: 'label_quote_col_phone', type: 'label'}\">\r\n                       {{labelPhone }}\r\n                    </label>                    \r\n                    <input type=\"text\" class=\"form-control\" id=\"phone\" :placeholder=\"labelPhone\" v-model=\"address.phone\">\r\n                  </div>\r\n\r\n                  <div class=\"form-group\">\r\n                    <label for=\"email\">\r\n                      {{labelEmail}}\r\n                      </label>\r\n                    <input type=\"text\" class=\"form-control\" id=\"email\" :placeholder=\"labelEmail\" v-model=\"address.email\">\r\n                  </div>\r\n                \r\n                  <a v-translation=\"{ code: 'button_save_address', type: 'button'}\" @click=\"saveForm\" class=\"btn-u btn-u-sea-shop btn-block\"></a>\r\n                </div>\r\n              </template>\r\n\r\n            </div>\r\n          </div>  \r\n        </div>\r\n      </div>\r\n    </div>\r\n    </transition>\r\n\r\n    <template v-if=\"showAddress\">\r\n      <div class=\"panel-white\">\r\n        <p>{{ address.name }}</p>\r\n        <p>{{ address.address }}</p>\r\n        <p>{{ address.zipCode }} {{ address.city }}</p>\r\n        <p>{{ countryDisplayName }}</p>\r\n        <p>{{ address.phone }}</p>\r\n        <p>{{ address.email }}</p>\r\n        <span class=\"edit-icon\" @click=\"openModal\">          \r\n          <i class=\"fa fa-pencil-square-o\"></i>\r\n        </span>\r\n      </div>\r\n      <template v-if=\"addressIncomplete\">\r\n        <div class=\"alert alert-warning incomp-address\" role=\"alert\">Adres gegevens zijn incompleet</div>\r\n      </template>\r\n    </template>\r\n    <template v-else>\r\n      <div class=\"add-address panel-white\" @click=\"openModal\">\r\n        <div class=\"user-icon\">\r\n          <i class=\"fa fa-user\"></i>\r\n          <i class=\"fa fa-plus\"></i>\r\n        </div>\r\n      </div>\r\n    </template>\r\n\r\n  </div>\r\n  \r\n</template>\r\n\r\n<script>\r\nimport axios from 'axios';\r\nimport { mapGetters } from 'vuex';\r\nexport default {\r\n  props: {\r\n    address: { type: Object, required: true },\r\n    type: { type: String, required: true },\r\n    modalTitle: { type: String, required: true },\r\n  },\r\n  data() {\r\n    return {\r\n      showModal: false,\r\n      loading: false,\r\n      availableCountries: [],\r\n      endpoint: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n      labelName: window.vue.translations.label.label_quote_col_name,\r\n      labelCountry: window.vue.translations.label.label_quote_col_cnt,\r\n      labelAddress: window.vue.translations.label.label_quote_col_address,\r\n      labelCity: window.vue.translations.label.label_quote_col_city,\r\n      labelZip: window.vue.translations.label.label_quote_col_zip,\r\n      labelPhone: window.vue.translations.label.label_quote_col_phone,\r\n      labelEmail: window.vue.translations.label.label_quote_col_email,\r\n      addressIncomplete: false\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['language']),\r\n    showAddress() {\r\n      return Object.keys(this.address).filter(x => this.address[x] !== '').length > 0;\r\n    },\r\n    countryDisplayName() {\r\n      var index = this.availableCountries.findIndex(x => x.Code === this.address.countryCode);\r\n      if (index > 0) {\r\n        return this.availableCountries[index].Name;\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    openModal() {      \r\n      this.showModal = true;\r\n    },\r\n    closeModal() {\r\n      this.showModal = false;      \r\n      this.loading = false;\r\n    },\r\n    saveForm() {\r\n      this.$emit('updateAddressEvent', { address: this.address, type: this.type });\r\n      this.showModal = false;\r\n    }\r\n  },\r\n  created() {\r\n    if (this.availableCountries.length === 0) {        \r\n        this.loading = true;\r\n        axios.post(this.endpoint + \"GetAvailableCountries\", { languageIso: this.language }).then(res => {\r\n          var response = res.data.d; \r\n          if (response.IsSuccess) {\r\n            this.availableCountries = response.Countries;\r\n            this.loading = false;\r\n          } else {\r\n            alert('ERROR');\r\n            this.loading = false;\r\n            this.showModal = false;\r\n          }\r\n        })\r\n      }      \r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddressCard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AddressCard.vue?vue&type=template&id=29a5f132&\"\nimport script from \"./AddressCard.vue?vue&type=script&lang=js&\"\nexport * from \"./AddressCard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('table',{staticClass:\"header\"},[_c('tr',[_c('td',{staticClass:\"logo\"},[(_vm.quoteDetails.logoImgUrl !== '')?_c('img',{staticClass:\"logo-img\",attrs:{\"src\":_vm.quoteDetails.logoImgUrl}}):_vm._e()]),_c('td',[_c('table',{staticClass:\"meta-data\"},[_c('tbody',[_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quotes_nr', type: 'label'}),expression:\"{ code: 'label_quotes_nr', type: 'label'}\"}],staticClass:\"label-bold\"}),_c('span',[_vm._v(_vm._s(_vm.quoteDetails.quoteNr))])])]),_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quotes_date', type: 'label'}),expression:\"{ code: 'label_quotes_date', type: 'label'}\"}],staticClass:\"label-bold\"}),_c('span',[_vm._v(_vm._s(_vm.quoteDetails.quoteDate))])])]),_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quotes_exp_date', type: 'label'}),expression:\"{ code: 'label_quotes_exp_date', type: 'label'}\"}],staticClass:\"label-bold\"}),_c('span',[_vm._v(_vm._s(_vm.quoteDetails.expirationQuoteDate))])])])])])])])]),_c('table',{staticClass:\"address-info\"},[_c('tbody',[_c('tr',[_c('td',[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quote_from', type: 'label'}),expression:\"{ code: 'label_quote_from', type: 'label'}\"}],staticClass:\"label-bold\"}),_c('p',[_vm._v(_vm._s(_vm.deliveryAddress.name))]),_c('p',[_vm._v(_vm._s(_vm.deliveryAddress.address))]),_c('p',[_vm._v(_vm._s(_vm.deliveryAddress.zipCode)+\" \"+_vm._s(_vm.deliveryAddress.city))]),_c('p',[_vm._v(_vm._s(_vm.deliveryAddress.country))]),_c('p',[_vm._v(_vm._s(_vm.deliveryAddress.phone))]),_c('p',[_vm._v(_vm._s(_vm.deliveryAddress.email))])]),_c('td',[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_quote_to', type: 'label'}),expression:\"{ code: 'label_quote_to', type: 'label'}\"}],staticClass:\"label-bold\"}),_c('p',[_vm._v(_vm._s(_vm.invoiceAddress.name))]),_c('p',[_vm._v(_vm._s(_vm.invoiceAddress.address))]),_c('p',[_vm._v(_vm._s(_vm.invoiceAddress.zipCode)+\" \"+_vm._s(_vm.invoiceAddress.city))]),_c('p',[_vm._v(_vm._s(_vm.invoiceAddress.country))]),_c('p',[_vm._v(_vm._s(_vm.invoiceAddress.phone))]),_c('p',[_vm._v(_vm._s(_vm.invoiceAddress.email))])])])])]),_c('table',{staticClass:\"order-lines\"},[_c('thead',[_c('th',{staticClass:\"prod-img\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_desc', type: 'label'}),expression:\"{ code: 'label_col_desc', type: 'label'}\"}],staticClass:\"desc\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_price', type: 'label'}),expression:\"{ code: 'label_col_price', type: 'label'}\"}],staticClass:\"price\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_qty', type: 'label'}),expression:\"{ code: 'label_col_qty', type: 'label'}\"}],staticClass:\"qty\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_amt', type: 'label'}),expression:\"{ code: 'label_col_amt', type: 'label'}\"}],staticClass:\"amt\"})]),_c('tbody',_vm._l((_vm.quoteLines),function(line){return _c('tr',{key:line.recId},[_c('td',{staticClass:\"prod-img\"},[_c('img',{staticClass:\"img-responsive\",attrs:{\"src\":line.imageUrl,\"width\":\"40px\",\"height\":\"40px\"}})]),_c('td',{staticClass:\"desc\"},[_c('span',[_vm._v(_vm._s(line.productDescription))]),(!line.customProduct)?[_c('span',{staticClass:\"text-small\"},[_vm._v(_vm._s(line.productId))])]:_vm._e()],2),_c('td',{staticClass:\"price\"},[_vm._v(_vm._s(_vm.formatPrice(line.productPrice)))]),_c('td',{staticClass:\"qty\"},[_vm._v(_vm._s(line.quantity))]),_c('td',{staticClass:\"amt\"},[_vm._v(_vm._s(_vm.formatPrice(line.rowAmount)))])])}),0)]),_c('table',{staticClass:\"table totals\"},[_c('tbody',[_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_subtotal_excl', type: 'label' }),expression:\"{ code: 'label_subtotal_excl', type: 'label' }\"}]})]),_c('td',[_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.totalExcl))])])]),(_vm.applyingDiscount)?[_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_disc_excl', type: 'label' }),expression:\"{ code: 'label_disc_excl', type: 'label' }\"}]})]),_c('td',[_c('span',[_vm._v(\"- \")]),_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.discountTotal))])])])]:_vm._e(),_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_total_vat', type: 'label' }),expression:\"{ code: 'label_total_vat', type: 'label' }\"}]})]),_c('td',[_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.vatTotal))])])]),_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_total_incl_vat', type: 'label' }),expression:\"{ code: 'label_total_incl_vat', type: 'label' }\"}]})]),_c('td',[_c('span',{staticClass:\"label-bold\"},[_vm._v(_vm._s(_vm.totalIncl))])])])],2)]),_c('table',{staticClass:\"signature\"},[_c('tr',[_c('td',[_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_cust_signature', type: 'label' }),expression:\"{ code: 'label_cust_signature', type: 'label' }\"}],staticClass:\"label-bold\"})])]),_vm._m(0)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"sig-line\"},[_c('td')])}]\n\nexport { render, staticRenderFns }","<template>\r\n<div>  \r\n  <table class=\"header\">\r\n    <tr>\r\n      <td class=\"logo\">        \r\n        <img class=\"logo-img\" v-if=\"quoteDetails.logoImgUrl !== ''\" :src=\"quoteDetails.logoImgUrl\" />\r\n      </td>\r\n      <td>\r\n        \r\n  <table class=\"meta-data\">\r\n    <tbody>\r\n      <tr>\r\n        <td>\r\n          <span class=\"label-bold\" v-translation=\"{ code: 'label_quotes_nr', type: 'label'}\"></span>\r\n          <span>{{ quoteDetails.quoteNr }}</span>\r\n        </td>\r\n      </tr>\r\n      <tr>        \r\n        <td>\r\n          <span class=\"label-bold\" v-translation=\"{ code: 'label_quotes_date', type: 'label'}\"></span>\r\n          <span>{{ quoteDetails.quoteDate }}</span>\r\n        </td>\r\n      </tr>\r\n      <tr>        \r\n        <td>\r\n          <span class=\"label-bold\" v-translation=\"{ code: 'label_quotes_exp_date', type: 'label'}\"></span>\r\n          <span>{{ quoteDetails.expirationQuoteDate }}</span>\r\n        </td>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n      </td>\r\n    </tr>\r\n  </table>\r\n\r\n  <table class=\"address-info\">\r\n    <tbody>\r\n      <tr>\r\n        <td>\r\n          <p class=\"label-bold\" v-translation=\"{ code: 'label_quote_from', type: 'label'}\"></p>\r\n          <p>{{ deliveryAddress.name }}</p>\r\n          <p>{{ deliveryAddress.address }}</p>\r\n          <p>{{ deliveryAddress.zipCode }} {{ deliveryAddress.city }}</p>\r\n          <p>{{ deliveryAddress.country }}</p>\r\n          <p>{{ deliveryAddress.phone }}</p>\r\n          <p>{{ deliveryAddress.email }}</p>\r\n        </td>\r\n        <td>\r\n          <p class=\"label-bold\" v-translation=\"{ code: 'label_quote_to', type: 'label'}\"></p>\r\n          <p>{{ invoiceAddress.name }}</p>\r\n          <p>{{ invoiceAddress.address }}</p>\r\n          <p>{{ invoiceAddress.zipCode }} {{ invoiceAddress.city }}</p>\r\n          <p>{{ invoiceAddress.country }}</p>\r\n          <p>{{ invoiceAddress.phone }}</p>\r\n          <p>{{ invoiceAddress.email }}</p>\r\n        </td>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n\r\n  <table class=\"order-lines\">\r\n    <thead>\r\n      <th class=\"prod-img\"></th>\r\n      <th class=\"desc\" v-translation=\"{ code: 'label_col_desc', type: 'label'}\"></th>\r\n      <th class=\"price\" v-translation=\"{ code: 'label_col_price', type: 'label'}\"></th>\r\n      <th class=\"qty\" v-translation=\"{ code: 'label_col_qty', type: 'label'}\"></th>\r\n      <th class=\"amt\" v-translation=\"{ code: 'label_col_amt', type: 'label'}\"></th>\r\n    </thead>\r\n    <tbody>\r\n      <tr v-for=\"line in quoteLines\" :key=\"line.recId\">\r\n        <td class=\"prod-img\">\r\n          <img class=\"img-responsive\" :src=\"line.imageUrl\" width=\"40px\" height=\"40px\">\r\n        </td>\r\n        <td class=\"desc\">\r\n          <span>{{ line.productDescription }}</span>\r\n          <template v-if=\"!line.customProduct\">\r\n            <span class=\"text-small\">{{ line.productId }}</span>\r\n          </template>\r\n        </td>\r\n        <td class=\"price\">{{ formatPrice(line.productPrice) }}</td>\r\n        <td class=\"qty\">{{ line.quantity }}</td>\r\n        <td class=\"amt\">{{ formatPrice(line.rowAmount) }}</td>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n\r\n  <table class=\"table totals\">\r\n    <tbody>\r\n      <tr>\r\n        <td>\r\n          <span v-translation=\"{ code: 'label_subtotal_excl', type: 'label' }\"></span>\r\n          </td>\r\n        <td>\r\n          <span class=\"label-bold\">{{ totalExcl }}</span>\r\n        </td>\r\n      </tr>\r\n      <template v-if=\"applyingDiscount\">\r\n        <tr>\r\n          <td>\r\n            <span v-translation=\"{ code: 'label_disc_excl', type: 'label' }\"></span>\r\n            </td>\r\n          <td>\r\n            <span>- </span> \r\n            <span class=\"label-bold\">{{ discountTotal }}</span>\r\n          </td>\r\n        </tr>\r\n      </template>\r\n      <tr>\r\n        <td>\r\n          <span v-translation=\"{ code: 'label_total_vat', type: 'label' }\"></span>\r\n          </td>\r\n        <td>\r\n          <span class=\"label-bold\">{{ vatTotal }}</span>\r\n        </td>\r\n      </tr>\r\n      <tr>\r\n        <td>\r\n          <span v-translation=\"{ code: 'label_total_incl_vat', type: 'label' }\"></span>\r\n          </td>\r\n        <td>\r\n          <span class=\"label-bold\">{{ totalIncl }}</span>\r\n        </td>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n\r\n  <table class=\"signature\">\r\n    <tr>\r\n      <td><span class=\"label-bold\" v-translation=\"{ code: 'label_cust_signature', type: 'label' }\"></span></td>\r\n    </tr>\r\n    <tr class=\"sig-line\">\r\n      <td></td>\r\n    </tr>\r\n  </table>\r\n</div>\r\n\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nimport axios from 'axios';\r\nimport { getProductInformation } from 'src/services/product-service';\r\nimport { formatPrice } from 'src/utilities/helpers';\r\nexport default {\r\n  data() {\r\n    return {\r\n      endpoint: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n      endpoint: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n      quoteLines: [],\r\n      quoteDetails: {},\r\n      deliveryAddress: {},\r\n      invoiceAddress: {},\r\n      totalExcl: 0,\r\n      discountTotal: 0,\r\n      discountIncludingVat: 0,\r\n      vatTotal: 0,\r\n      totalIncl: 0,\r\n      applyingDiscount: false\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['customerUserId', 'bespokeGlobalWs', 'language']),\r\n  },\r\n  methods: {\r\n    formatPrice(price) {\r\n      return formatPrice(price);\r\n    },\r\n    setTotals({ TotalExcl, VatTotal, GrandTotal, Disc, DiscIncludingVat }) {\r\n      this.totalExcl = formatPrice(TotalExcl);\r\n      this.discountTotal = formatPrice(Disc);\r\n      this.discountIncludingVat = formatPrice(DiscIncludingVat);\r\n      this.vatTotal = formatPrice(VatTotal);\r\n      this.totalIncl = formatPrice(GrandTotal);\r\n\r\n      this.applyingDiscount = Disc > 0;\r\n    }\r\n  },\r\n  created() {\r\n\r\n    var quoteId = new URLSearchParams(window.location.search).get('quoteid');\r\n\r\n    if (quoteId !== null) {\r\n\r\n      axios.post(this.endpoint + \"GetQuotations\", { debtorId: this.customerUserId, recId: quoteId })\r\n        .then(res => {\r\n          var details = res.data.d[0];\r\n          axios.post(this.endpoint + \"GetQuoteTotals\", { recId: quoteId })\r\n            .then(totalsRes => {\r\n                this.setTotals(totalsRes.data.d);\r\n            \r\n\r\n            var dateString = details.QuoteDate;\r\n            let parts = dateString.split('-');\r\n            let formattedDateString = `${parts[1]}/${parts[0]}/${parts[2]}`;\r\n\r\n            var expDateString = details.QuoteExpirationDate;\r\n            let expParts = expDateString.split('-');\r\n            let formattedExpDateString = `${expParts[1]}/${expParts[0]}/${expParts[2]}`\r\n\r\n            this.quoteDetails = {\r\n              debtorId: \"\",\r\n              discountAmount: details.Disc,\r\n              discountType: details.DiscType,\r\n              quoteDate: new Date(formattedDateString).format(\"dd-MM-yyyy\"),\r\n              expirationQuoteDate: new Date(formattedExpDateString).format(\"dd-MM-yyyy\"),\r\n              quoteNr: details.RecId,\r\n              grandTotal: details.GrandTotal,\r\n              totalExcl: details.TotalExcl,\r\n              vatTotal: details.VatTotal,\r\n              logoImgUrl: details.LogoImgUrl            \r\n            };\r\n\r\n            var lines = [];\r\n            details.Lines.forEach(x => {\r\n              lines.push({\r\n                productId: x.ProdCode,\r\n                productDescription: x.ProdDesc,\r\n                quantity: x.Qty,\r\n                rowAmount: x.LineTotal,\r\n                productPrice: x.ProductPrice,\r\n                recId: x.RecId,\r\n                rowOrder: x.RowOrd,\r\n                customProduct: x.ProdCode === this.bespokeGlobalWs.customQuoteProduct ? true : false\r\n              });\r\n            });\r\n\r\n            this.deliveryAddress = {\r\n              name: details.DelAddress.Name,\r\n              address: details.DelAddress.Address,\r\n              countryCode: details.DelAddress.CntCode,\r\n              email: details.DelAddress.Email,\r\n              city: details.DelAddress.City,\r\n              phone: details.DelAddress.Phone,\r\n              zipCode: details.DelAddress.ZipCode\r\n            };\r\n\r\n            this.invoiceAddress = {\r\n              name: details.InvAddress.Name,\r\n              address: details.InvAddress.Address,\r\n              countryCode: details.InvAddress.CntCode,\r\n              email: details.InvAddress.Email,\r\n              city: details.InvAddress.City,\r\n              phone: details.InvAddress.Phone,\r\n              zipCode: details.InvAddress.ZipCode\r\n            };\r\n\r\n            var prodCodes = lines.filter(y => !y.customProduct).map(x => x.productId);\r\n            if (prodCodes.length > 0) {\r\n              getProductInformation({ prodCodes: prodCodes, getSeoInformation: false, getStock: false, getPrice: false })\r\n              .then(res => {\r\n                res.products.forEach(productInfo => {                \r\n                  lines.forEach(x => {\r\n                    if (x.productId === productInfo.id) {                      \r\n                      x.productDescription = productInfo.shortDescription;  \r\n                      x.imageUrl = productInfo.imageUrl ? productInfo.imageUrl : '/documents/productimages/not-available-small.jpg';\r\n                    }\r\n                  });\r\n                });\r\n\r\n                this.quoteLines = lines;    \r\n                setTimeout(() => { \r\n                  window.print();\r\n                }, 500);\r\n              });          \r\n            } else {\r\n              this.quoteLines = lines;\r\n              setTimeout(() => { \r\n                  window.print();\r\n                }, 500);\r\n            }\r\n         \r\n          });\r\n                    \r\n        });   \r\n    }\r\n    \r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrintQuotation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrintQuotation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PrintQuotation.vue?vue&type=template&id=5d42ec39&\"\nimport script from \"./PrintQuotation.vue?vue&type=script&lang=js&\"\nexport * from \"./PrintQuotation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-12 select-disc\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-offset-6 col-md-4\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.quotation.discountType),expression:\"quotation.discountType\"}],staticClass:\"form-control test\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.quotation, \"discountType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.updateDiscountType($event)}]}},[_c('option',{attrs:{\"value\":\"0\"}},[_vm._v(_vm._s(_vm.discountAmountLabel))]),_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(_vm._s(_vm.discountPercentageLabel))])])]),_c('div',{staticClass:\"col-md-2\",class:{ discPrice : _vm.quotation.discountType == 0, discPerc : _vm.quotation.discountType == 1 }},[_c('utlz-decimal-field',{attrs:{\"maxValue\":_vm.maxValue,\"initialValue\":_vm.quotation.discountAmount},on:{\"valueUpdatedEvent\":function($event){return _vm.updateDiscountAmount($event)}}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"col-md-12 select-disc\">\r\n    <div class=\"row\">\r\n      <div class=\"col-md-offset-6 col-md-4\">\r\n        <select class=\"form-control test\" v-model=\"quotation.discountType\" @change=\"updateDiscountType($event)\">\r\n          <option value=\"0\">{{ discountAmountLabel }}</option>\r\n          <option value=\"1\">{{ discountPercentageLabel }}</option>\r\n        </select>\r\n      </div>\r\n      \r\n      <div class=\"col-md-2\" :class=\"{ discPrice : quotation.discountType == 0, discPerc : quotation.discountType == 1 }\" >\r\n        <utlz-decimal-field :maxValue=\"maxValue\" :initialValue=\"quotation.discountAmount\" @valueUpdatedEvent=\"updateDiscountAmount($event)\"></utlz-decimal-field>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport DecimalField from './../../bespoke/quotations/DecimalField.vue';\r\nexport default {\r\n  props: {\r\n    quotation: { type: Object, required: true}\r\n  },\r\n  data() {\r\n    return {\r\n      maxValue: 0,\r\n      discountAmountLabel: window.vue.translations.label.label_quote_dd_disc_amt,\r\n      discountPercentageLabel: window.vue.translations.label.label_quote_dd_disc_perc\r\n    };\r\n  },\r\n  components: {\r\n    'utlz-decimal-field': DecimalField\r\n  },\r\n  methods: {\r\n    updateDiscountType(ev) {\r\n      var discountType = parseInt(ev.target.value);\r\n      var payload = {\r\n        amt: 0,\r\n        type: discountType\r\n      }\r\n      this.setDiscountMaxValue(discountType);\r\n      this.$emit('updateDiscountEvent', payload);\r\n    },\r\n    updateDiscountAmount(amount) {\r\n      var payload = {\r\n        amt: amount,\r\n        type: this.quotation.discountType\r\n      }\r\n      this.$emit('updateDiscountEvent', payload);\r\n    },\r\n    setDiscountMaxValue(discountType) {\r\n      if (discountType === 0) {\r\n        this.maxValue = 0;\r\n      } else if (discountType === 1) {\r\n        this.maxValue = 100;\r\n      }\r\n    }\r\n  },\r\n  created() {\r\n    this.setDiscountMaxValue(this.quotation.discountType);\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationDiscounts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationDiscounts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuotationDiscounts.vue?vue&type=template&id=0b527ed8&\"\nimport script from \"./QuotationDiscounts.vue?vue&type=script&lang=js&\"\nexport * from \"./QuotationDiscounts.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-offset-6 col-md-6 select-vat\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8 label-col\"},[_c('label',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_vat_perc', type: 'label' }),expression:\"{ code: 'label_vat_perc', type: 'label' }\"}]})]),_c('div',{staticClass:\"col-md-4\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.quotation.vatCode),expression:\"quotation.vatCode\"}],staticClass:\"form-control\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.quotation, \"vatCode\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])},function($event){return _vm.updateVatPercentage($event)}]}},_vm._l((_vm.vatCodes),function(vatCode){return _c('option',{key:vatCode.Code,domProps:{\"value\":vatCode.Code}},[_vm._v(_vm._s(vatCode.Percentage))])}),0)])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n    <div class=\"col-md-offset-6 col-md-6 select-vat\">\r\n      <div class=\"row\">\r\n        <div class=\"col-md-12\">\r\n          <div class=\"row\">\r\n            <div class=\"col-md-8 label-col\">\r\n              <label v-translation=\"{ code: 'label_vat_perc', type: 'label' }\"></label>\r\n            </div>\r\n            <div class=\"col-md-4\">\r\n              <select class=\"form-control\" v-model=\"quotation.vatCode\" @change=\"updateVatPercentage($event)\">\r\n                <option v-for=\"vatCode in vatCodes\" :key=\"vatCode.Code\" :value=\"vatCode.Code\">{{ vatCode.Percentage }}</option>\r\n              </select>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n</template>\r\n\r\n<script>\r\nimport axios from 'axios';\r\nexport default {\r\n  props: {\r\n    quotation: { type: Object, required: true}\r\n  },\r\n  data() {\r\n    return {\r\n      vatCodes: []\r\n    };\r\n  },\r\n  components: {\r\n  },\r\n  methods: {\r\n    updateVatPercentage(ev) {\r\n      var payload = {\r\n        code: ev.target.value\r\n      }\r\n      this.$emit('updateVatEvent', payload);\r\n    },\r\n    getVatCodes() {\r\n      axios.post(\"/Bespoke/QuotationWebmethods.aspx/GetAvailableVatCodes\", { })\r\n        .then(res => {\r\n          if (res.data.d.IsSuccess) {\r\n            var vatCodes = [];\r\n            res.data.d.Vat.forEach(x => {\r\n              var index = vatCodes.findIndex(y => y.Percentage === x.Percentage);\r\n              if (index == -1) {\r\n                vatCodes.push(x);\r\n              }\r\n            });\r\n            this.vatCodes = vatCodes;\r\n          }\r\n        });\r\n    }\r\n  },\r\n  created() {\r\n    this.getVatCodes();\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectVatPercentage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectVatPercentage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectVatPercentage.vue?vue&type=template&id=a078da9a&\"\nimport script from \"./SelectVatPercentage.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectVatPercentage.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"select-quote\"},[_c('div',{staticClass:\"upload-logo-btn\"},[_c('a',{on:{\"click\":function($event){return _vm.showUploadLogoEvent()}}},[(_vm.imageUrl)?[_c('img',{attrs:{\"src\":_vm.imageUrl}})]:[_c('span',{staticClass:\"upload-logo-btn-ph\"},[_c('i',{staticClass:\"fa fa-upload\"}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_upload_logo'}),expression:\"{ type: 'button', code: 'button_upload_logo'}\"}]})])]],2)]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showUploadLogo)?_c('div',{staticClass:\"full-screen-fader flex-column justify-content-center\",class:{'disabled': _vm.uploadingFile}},[_c('div',{staticClass:\"utlz-container\"},[_c('div',{staticClass:\"utlz-row\"},[_c('div',{staticClass:\"utlz-col-lg-12\"},[_c('span',{staticClass:\"close-button\",on:{\"click\":function($event){return _vm.closeModal()}}},[_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"}})]),_c('div',{staticClass:\"modal-content upload-logo-modal row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('h2',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'title', code: 'title_upload_file'}),expression:\"{ type: 'title', code: 'title_upload_file'}\"}]},[_vm._v(\"Upload een bestand\")])]),_c('div',{staticClass:\"col-md-12\"},[_c('div',{staticClass:\"upload-btn\"},[_c('div',{staticClass:\"target\"},[_c('i',{staticClass:\"fa fa-upload\"}),_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_click_uplfile'}),expression:\"{ type: 'label', code: 'label_click_uplfile'}\"}]})]),_c('input',{attrs:{\"type\":\"file\",\"accept\":\"image/png,image/jpeg,image/svg+xml,image/webp\"},on:{\"change\":_vm.onFileChange}})])]),(_vm.existingImageUrl !== '')?[_c('div',{staticClass:\"col-md-12 preview existing-img\"},[_c('div',{staticClass:\"existing-file-row\"},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'text_image_exist' }),expression:\"{ type: 'label', code: 'text_image_exist' }\"}]}),_c('div',{staticClass:\"uploaded-file\"},[_c('img',{attrs:{\"src\":_vm.existingImageUrl}}),_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_save_existing_logo'}),expression:\"{ type: 'button', code: 'button_save_existing_logo'}\"}],staticClass:\"btn-u btn-u-sea-shop save-logo-btn\",on:{\"click\":function($event){return _vm.SaveLogo()}}})])])])]:_vm._e(),_c('div',{staticClass:\"col-md-12 errors\"},[(_vm.fileIsInvalid)?[_c('div',{staticClass:\"alert alert-danger alert-file-size\",attrs:{\"role\":\"alert\"},domProps:{\"innerHTML\":_vm._s(_vm.errorMessage)}})]:_vm._e()],2),(_vm.imageAsBytes !== '')?[_c('div',{staticClass:\"col-md-12 preview new-img\"},[_c('div',{staticClass:\"uploaded-file-row\"},[_c('div',{staticClass:\"uploaded-file\"},[(_vm.imageUrl)?[_c('i',{staticClass:\"fa fa-times-circle delete-btn\",attrs:{\"aria-hidden\":\"true\"},on:{\"click\":_vm.deleteFile}})]:_vm._e(),_c('img',{attrs:{\"src\":_vm.imageAsBytes}})],2),(!_vm.fileIsInvalid  && _vm.controlIsTainted)?[_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'button', code: 'button_save_logo'}),expression:\"{ type: 'button', code: 'button_save_logo'}\"}],staticClass:\"btn-u btn-u-sea-shop save-logo-btn\",on:{\"click\":function($event){return _vm.SaveLogo()}}})]:_vm._e()],2)])]:_vm._e()],2)])])])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n<div class=\"select-quote\">\r\n  <div class=\"upload-logo-btn\">\r\n    \r\n    <a @click=\"showUploadLogoEvent()\">\r\n      <template v-if=\"imageUrl\">        \r\n        <img :src=\"imageUrl\" />\r\n      </template>\r\n      <template v-else>\r\n        <span class=\"upload-logo-btn-ph\">          \r\n          <i class=\"fa fa-upload\"></i>\r\n          <span v-translation=\"{ type: 'button', code: 'button_upload_logo'}\"></span>\r\n        </span>\r\n      </template>\r\n      \r\n    </a>\r\n  </div>\r\n  \r\n  <transition name=\"fade\">\r\n    <div v-if=\"showUploadLogo\" class=\"full-screen-fader flex-column justify-content-center\" :class=\"{'disabled': uploadingFile}\">\r\n      <div class=\"utlz-container\">\r\n        <div class=\"utlz-row\">\r\n          <div class=\"utlz-col-lg-12\">\r\n            <span class=\"close-button\" @click=\"closeModal()\">\r\n              <i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i>\r\n            </span>\r\n            <div class=\"modal-content upload-logo-modal row\">              \r\n              <div class=\"col-md-12\">\r\n                <h2 v-translation=\"{ type: 'title', code: 'title_upload_file'}\">Upload een bestand</h2>\r\n              </div>\r\n\r\n              <div class=\"col-md-12\">                \r\n                <div class=\"upload-btn\">\r\n                  <div class=\"target\">\r\n                    <i class=\"fa fa-upload\"></i>\r\n                    <p v-translation=\"{ type: 'label', code: 'label_click_uplfile'}\"></p>\r\n                  </div>\r\n                  <input type=\"file\" @change=\"onFileChange\" accept=\"image/png,image/jpeg,image/svg+xml,image/webp\">\r\n                </div>\r\n              </div>\r\n              \r\n              <template v-if=\"existingImageUrl !== ''\" >\r\n                <div class=\"col-md-12 preview existing-img\">\r\n                  <div class=\"existing-file-row\" >\r\n                      <p v-translation=\"{ type: 'label', code: 'text_image_exist' }\"></p>\r\n                      <div class=\"uploaded-file\">                        \r\n                        <img :src=\"existingImageUrl\" >\r\n                        <a @click=\"SaveLogo()\" class=\"btn-u btn-u-sea-shop save-logo-btn\" v-translation=\"{ type: 'button', code: 'button_save_existing_logo'}\"></a>\r\n                      </div>\r\n                  </div>\r\n                </div>\r\n              </template>\r\n\r\n              <div class=\"col-md-12 errors\">\r\n                <template v-if=\"fileIsInvalid\">\r\n                  <div class=\"alert alert-danger alert-file-size\" role=\"alert\" v-html=\"errorMessage\">  \r\n                  </div>\r\n                </template>\r\n              </div>\r\n              \r\n              <template v-if=\"imageAsBytes !== ''\" > \r\n                <div class=\"col-md-12 preview new-img\">\r\n                  <div class=\"uploaded-file-row\">\r\n                    <div class=\"uploaded-file\">\r\n                      \r\n                      <!-- Only show delete button if file was not written away to the db yet -->\r\n                      <template v-if=\"imageUrl\">\r\n                        <i @click=\"deleteFile\" class=\"fa fa-times-circle delete-btn\" aria-hidden=\"true\"></i>                     \r\n                      </template>\r\n\r\n                      <img :src=\"imageAsBytes\">\r\n                    </div>    \r\n                      <template v-if=\"!fileIsInvalid  && controlIsTainted\">\r\n                        <a @click=\"SaveLogo()\" class=\"btn-u btn-u-sea-shop save-logo-btn\" v-translation=\"{ type: 'button', code: 'button_save_logo'}\"></a>\r\n                      </template>\r\n                  </div>\r\n                </div>\r\n              </template>\r\n              \r\n            </div>\r\n          </div>  \r\n        </div>\r\n      </div>\r\n    </div>\r\n    </transition>\r\n\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n\r\nimport axios from 'axios';\r\nexport default {\r\n  props: {\r\n    quoteId: { type: String, required: false, default: \"\"},\r\n    imageUrl: { type: String, required: false, default: \"\"}\r\n  },\r\n  data() {\r\n    return {\r\n      uploadingFile: false,\r\n      showUploadLogo: false,\r\n      existingImageUrl: \"\",\r\n      existingImageUrl: \"\",\r\n      controlIsTained: false,\r\n      fileIsInvalid: false,\r\n      errorMessage: \"\",\r\n      maxFileSizeInMB: 1,\r\n      controlIsTainted: false,\r\n      acceptedFileTypes: ['image/png', 'image/jpeg', 'image/svg+xml', 'image/webp'],      \r\n      endpoint: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n      uploadedFileAsFile: null,\r\n      imageAsBytes: \"\",\r\n      imageAsBytesDraft: \"\",\r\n      uploadedFileName: \"\" \r\n    }\r\n  },\r\n  computed: {\r\n  },\r\n  methods: {\r\n    showUploadLogoEvent() {\r\n      this.showUploadLogo = true;\r\n    },\r\n    closeModal() {\r\n      this.showUploadLogo = false;\r\n      this.imageAsBytes = this.imageUrl;\r\n      this.resetModalState();\r\n    },\r\n    onFileChange(e) {\r\n\r\n      this.controlIsTainted = true;\r\n\r\n      let files = e.target.files || e.dataTransfer.files;\r\n      if (!files.length)\r\n        return;\r\n\r\n      this.uploadedFileAsFile = files[0];\r\n\r\n      var hasErrors = false;\r\n      var errorMessages = \"\";\r\n\r\n      if (this.uploadedFileAsFile.size / 1024 / 1024 > this.maxFileSizeInMB) {\r\n        hasErrors = true;\r\n        var message = window.vue.translations.label.label_filesize_exceeds;\r\n        errorMessages += \"<p class='alert-text'>\" + message.replace(\"[1]\", this.maxFileSizeInMB)  + \"</p>\";\r\n      }\r\n\r\n      if (!this.acceptedFileTypes.includes(this.uploadedFileAsFile.type)) {\r\n        errorMessages += \"<p class='alert-text'>\" + window.vue.translations.label.label_file_types+ \"</p>\";\r\n        hasErrors = true;\r\n      }\r\n\r\n      if (hasErrors) {\r\n        this.fileIsInvalid = true;\r\n        this.errorMessage = errorMessages;\r\n        return;\r\n      } else {        \r\n        this.fileIsInvalid = false;\r\n        this.errorMessage = \"\";       \r\n        this.createImage(this.uploadedFileAsFile);\r\n      }\r\n    },\r\n    createImage(file) {\r\n      this.uploadedFileName = file.name;\r\n      let reader = new FileReader();\r\n      reader.onload = (e) => {\r\n        this.imageAsBytesDraft = e.target.result;    \r\n        this.validateFile();\r\n      };\r\n      reader.readAsArrayBuffer(file);\r\n    },\r\n    validateFile() {\r\n      this.uploadingFile = true;\r\n      axios.post(this.endpoint + \"ValidateImage\", { fileName: this.uploadedFileName, imageAsBytes: Array.from(new Uint8Array(this.imageAsBytesDraft))}).then(res => {\r\n        var response = res.data.d; \r\n        if (response.ImageExists) {                 \r\n          this.existingImageUrl = response.ImageUrl;\r\n          this.imageAsBytes = \"\";\r\n        } else if (response.IsValid) {          \r\n          let reader = new FileReader();\r\n          reader.onload = (e) => {\r\n            this.imageAsBytes = e.target.result;\r\n          };\r\n          reader.readAsDataURL(this.uploadedFileAsFile);\r\n          this.existingImageUrl = \"\";\r\n        }\r\n        else {\r\n          window.updateErrorMessage('An error occurred');\r\n        }\r\n        this.uploadingFile = false;\r\n      });\r\n    },\r\n    SaveLogo() {\r\n      var imageUrl = this.existingImageUrl !== '' ? this.existingImageUrl : \"\";\r\n\r\n      axios.post(this.endpoint + \"SaveCompanyLogo\", { filename: this.uploadedFileName, quotationId: this.quoteId, url: imageUrl, imageAsBytes: Array.from(new Uint8Array(this.imageAsBytesDraft)) }).then(res => {\r\n        var response = res.data.d;\r\n\r\n        if (response.IsSuccess) {\r\n          this.$emit('saveCompanyLogo', response.ImageUrl);\r\n          this.showUploadLogo = false;          \r\n          this.resetModalState();\r\n        } else {\r\n          var errorMsg = window.vue.translations.label.label_err_add_prod_quote;\r\n          window.updateErrorMessage(errorMsg);\r\n        } \r\n        \r\n        this.showUploadLogo = false;\r\n      });\r\n    },\r\n    deleteFile() {\r\n      axios.post(this.endpoint + \"DeleteCompanyLogo\", { quotationId: this.quoteId }).then(res => {\r\n        var response = res.data.d;\r\n\r\n        if (response.IsSuccess) {\r\n          this.$emit('saveCompanyLogo', \"\");\r\n        } else {\r\n          var errorMsg = window.vue.translations.label.label_err_add_prod_quote;\r\n          window.updateErrorMessage(errorMsg);\r\n        } \r\n        \r\n        this.imageAsBytes = \"\";\r\n        this.showUploadLogo = false;\r\n        this.resetModalState();\r\n      });\r\n    },\r\n    resetModalState() {\r\n      this.fileIsInvalid = false;\r\n      this.controlIsTainted = false;\r\n      this.uploadedFileAsFile = \"\",\r\n      this.imageAsBytesDraft= \"\";\r\n      this.uploadedFileName = \"\"; \r\n      this.existingImageUrl = \"\";\r\n    }\r\n  },\r\n  created() {\r\n    if (this.imageUrl) {\r\n      this.imageAsBytes = this.imageUrl;\r\n    }\r\n  }\r\n}\r\n</script>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadLogo.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadLogo.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UploadLogo.vue?vue&type=template&id=1280ae4c&\"\nimport script from \"./UploadLogo.vue?vue&type=script&lang=js&\"\nexport * from \"./UploadLogo.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div class=\"row\" v-if=\"!loading\">\r\n\r\n    <template v-if=\"isAddingQuoteToCart\">\r\n      <div id=\"spinner-screen\" class=\"full-screen\">\r\n          <div class=\"spinner-wrapper loading-quotes\">\r\n            <template v-if=\"showAddToCartLoaderMessage\">\r\n              \r\n              <div class=\"loader\"></div>\r\n              <span>{{ addingQuoteToCartMessage }}</span>\r\n            </template>\r\n          </div>\r\n      </div>\r\n    </template>\r\n\r\n    <template v-if=\"!noResult\">\r\n      <template v-if=\"showPrintIframe\">\r\n        <iframe width=\"0\" height=\"0\" :src=\"iframeSource\" id=\"print-frame\" name=\"print-frame\"></iframe>\r\n      </template>\r\n\r\n      <template v-if=\"showDeleteQuotation\">\r\n        <utlz-delete-quotation \r\n        :quoteId=\"quoteDetails.quoteNr\"\r\n        @deleteQuotationEvent=\"deleteQuotation($event)\"\r\n        @cancelPrompt=\"showDeleteQuotation = false\"></utlz-delete-quotation>\r\n      </template>\r\n\r\n      <div v-if=\"showProductsAddedToCartHadErrors\" class=\"full-screen-fader add-product flex-column justify-content-center utlz-reset errors-modal\">\r\n        <div class=\"utlz-container\">\r\n          <div class=\"utlz-row\">\r\n            <div class=\"utlz-col-lg-12\">\r\n              <span class=\"close-button\" @click=\"closeProductsWithErrors()\">\r\n                <i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i>\r\n              </span>\r\n              <div class=\"modal-content add-product-modal-content utlz-row\">\r\n                <div class=\"utlz-col-12\">\r\n                  <h3 v-translation=\"{ type: 'label', code: 'label_prod_errors' }\"></h3>\r\n                  <span v-for=\"prod in productsWithErrors\" :key=\"prod\">\r\n                    {{ prod }},\r\n                  </span>\r\n                </div>\r\n              </div>\r\n            </div>  \r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div v-if=\"showAddProductModal\" class=\"full-screen-fader add-product flex-column justify-content-center utlz-reset\">\r\n        <div class=\"utlz-container\">\r\n          <div class=\"utlz-row\">\r\n            <div class=\"utlz-col-lg-12\">\r\n              <span class=\"close-button\" @click=\"closeSearchProduct()\">\r\n                <i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i>\r\n              </span>\r\n              <div class=\"modal-content add-product-modal-content utlz-row\">\r\n                <utlz-search-product\r\n                  @addExistingProductToQuotation=\"addExistingProductToQuotation($event)\"\r\n                ></utlz-search-product>\r\n              </div>\r\n            </div>  \r\n          </div>\r\n        </div>\r\n      </div>\r\n      \r\n      <div class=\"col-md-12\">\r\n        <h1 v-translation=\"{ code: 'title_quotation', type: 'title' }\"></h1>\r\n      </div>\r\n      <div class=\"col-md-12\">\r\n        <div class=\"row\">\r\n\r\n          <div class=\"col-md-8\">\r\n            <div class=\"row\">\r\n              \r\n              <div class=\"col-md-12\">\r\n                \r\n                <div class=\"panel-grey-100 row quote-info\">\r\n\r\n                  <div class=\"col-md-6 meta-data\">\r\n                    <p>\r\n                      <span class=\"label-bold\" v-translation=\"{ code: 'label_quotes_nr', type: 'label' }\"></span>\r\n                      <span>{{ quoteDetails.quoteNr }}</span>\r\n                    </p>\r\n                    <div class=\"quote-date\">\r\n                      <span class=\"label-bold\" v-translation=\"{ code: 'label_quotes_date', type: 'label' }\"></span>\r\n                      <div id=\"date-picker\" class=\"flatpickr input-group\" data-id=\"strap\">\r\n                        <input type=\"text\" placeholder=\"Kies een datum\" data-input class=\"form-control\" />\r\n                        <i class=\"fa fa-pencil\"></i>\r\n                      </div>\r\n                    </div>\r\n\r\n                    <div class=\"quote-date\">\r\n                      <span class=\"label-bold\" v-translation=\"{ code: 'label_quotes_exp_date', type: 'label' }\"></span>\r\n                      <div id=\"exp-date-picker\" class=\"flatpickr input-group\" data-id=\"strap\">\r\n                        <input type=\"text\" placeholder=\"Kies een datum\" data-input class=\"form-control\" />\r\n                        <i class=\"fa fa-pencil\"></i>\r\n                      </div>\r\n                    </div>\r\n\r\n                  </div>                 \r\n\r\n                  <div class=\"col-md-6 logo-col\">\r\n                    <utlz-upload-logo @saveCompanyLogo=\"SaveCompanyLogo($event)\" :quoteId=\"quoteDetails.quoteNr\" :imageUrl=\"quoteDetails.logoImgUrl\"></utlz-upload-logo>\r\n                  </div>\r\n                  \r\n                </div>\r\n              </div>\r\n\r\n              <div class=\"col-md-12 addresses\">\r\n                <div class=\"panel-grey-100 row\">\r\n\r\n                  <div class=\"col-md-6\">\r\n                      <div class=\"row\">\r\n                        <div class=\"col-md-12\">\r\n                          <p class=\"label-bold\" v-translation=\"{ code: 'label_quote_from', type: 'label' }\"></p>\r\n                        </div>\r\n                        <div class=\"col-md-12\">\r\n                          <utlz-address-card :address=\"{ ...deliveryAddress }\" :type=\"'delivery'\" :modalTitle=\"titleLabelQuoteFrom\" @updateAddressEvent=\"updateAddress($event)\"></utlz-address-card>                          \r\n                        </div>\r\n                      </div>\r\n                  </div>\r\n\r\n                  <div class=\"col-md-6\">\r\n                    <div class=\"row\">\r\n                      <div class=\"col-md-12\">\r\n                        <p class=\"label-bold\" v-translation=\"{ code: 'label_quote_to', type: 'label' }\"></p>\r\n                      </div>\r\n                      <div class=\"col-md-12\">\r\n                        <utlz-address-card :address=\"{ ...invoiceAddress }\" :type=\"'invoice'\" \r\n                        :modalTitle=\"titleAddrCard\" @updateAddressEvent=\"updateAddress($event)\"></utlz-address-card>\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n\r\n                </div>\r\n              </div>\r\n\r\n            </div>\r\n          </div>\r\n          <div class=\"col-md-4 utlz-reset\">\r\n            <ul class=\"action-links\">\r\n              <li class=\"text-link\" @click=\"printQuote()\">\r\n                <i class=\"fa fa-print\"></i>\r\n                <span v-translation=\"{ code: 'button_print_quote', type: 'button'}\">                  \r\n                </span>\r\n              </li>\r\n              <li class=\"text-link\" @click=\"initDeleteQuotation()\">\r\n                <i class=\"fa fa-trash\"></i>\r\n                <span v-translation=\"{ code: 'button_delete_quote', type: 'button'}\"></span>\r\n              </li>\r\n            </ul>\r\n          </div>\r\n\r\n        </div>\r\n      </div>\r\n      <div class=\"col-md-12 quotation-lines\">\r\n        \r\n        <div class=\"row lines-header panel-grey-100\">\r\n          <div class=\"col-md-1 prod-img label-bold\"></div>\r\n          <div class=\"col-md-6 prod-desc label-bold\" v-translation=\"{ code: 'label_col_desc', type: 'label'}\"></div>\r\n          <div class=\"col-md-2 prod-price label-bold\" v-translation=\"{ code: 'label_col_price', type: 'label'}\"> </div>\r\n          <div class=\"col-md-1 prod-qty label-bold\" v-translation=\"{ code: 'label_col_qty', type: 'label'}\"></div>\r\n          <div class=\"col-md-1 row-amt label-bold\" v-translation=\"{ code: 'label_col_amt', type: 'label'}\"></div>\r\n          <div class=\"col-md-1 delete label-bold\"></div>\r\n        </div>\r\n\r\n        <div class=\"row lines-body panel-grey-100\">\r\n          <utlz-quotation-line\r\n          @updateProductDescriptionEvent=\"updateDescription($event)\"\r\n          @deleteQuotationEvent=\"deleteQuotationLine($event)\"\r\n          @updateQuantityEvent=\"updateQuantity($event)\" \r\n          @updatePriceEvent=\"updatePrice($event)\"\r\n          v-for=\"line in quoteLines\" \r\n          :key=\"line.recId\" \r\n          :quotation=\"line\"></utlz-quotation-line>\r\n          \r\n          <div class=\"col-md-12 quotation-line add-line\" @click=\"initAddProductModal()\">\r\n          <div class=\"row\">\r\n\r\n            <div class=\"col-md-1 prod-img\">\r\n              <div class=\"plus-icon\">\r\n                <i class=\"fa fa-plus\"></i>\r\n              </div>\r\n            </div>\r\n            <div class=\"col-md-4\">            \r\n              <p class=\"label-bold\" v-translation=\"{ code: 'label_add_quote_line', type: 'label'}\"></p>\r\n              <p class=\"text-small text-grey-100\" v-translation=\"{ code: 'label_add_quote_example', type: 'label'}\"></p>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-md-12 discounts\">\r\n        \r\n        <div class=\"row panel-grey-100\">\r\n          <utlz-quotation-discount\r\n            :quotation=\"quoteDetails\"\r\n            @updateDiscountEvent=\"updateDiscount\"\r\n          ></utlz-quotation-discount>\r\n          <utlz-select-vat-percentage\r\n            :quotation=\"quoteDetails\"\r\n            @updateVatEvent=\"updateVatPercentage($event)\"\r\n          ></utlz-select-vat-percentage>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-md-6 col-md-offset-6\">\r\n        <div class=\"row totals\">\r\n          <div class=\"col-12\">\r\n            <span v-translation=\"{ code: 'label_subtotal_excl', type: 'label' }\"></span>\r\n            <span class=\"label-bold\">{{ totalExcl }}</span>\r\n          </div>\r\n          \r\n          <template v-if=\"applyingDiscount\">\r\n            <div class=\"col-12\">\r\n              <span v-translation=\"{ code: 'label_disc_excl', type: 'label' }\"></span>\r\n              <span class=\"label-bold\">\r\n                - {{ discountTotal }}\r\n              </span>\r\n            </div>\r\n          </template>\r\n          \r\n          <div class=\"col-12\">\r\n            <span v-translation=\"{ code: 'label_total_vat', type: 'label' }\"></span>\r\n            <span class=\"label-bold\">{{ vatTotal }}</span>\r\n          </div>\r\n          <div class=\"col-12\">\r\n            <span v-translation=\"{ code: 'label_total_incl_vat', type: 'label' }\"></span>\r\n            <span class=\"label-bold\">{{ totalIncl }}</span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"col-md-12\">\r\n        <div class=\"buttons\">     \r\n          \r\n          <a :href=\"'/' + language + '/bespoke/account/quotations.aspx'\" class=\"btn-u btn-u-sea-shop\" v-translation=\"{ code: 'button_back_to_quotes', type: 'button'}\">\r\n          </a>\r\n          \r\n          <a class=\"btn-u btn-u-sea-shop add-to-cart\" @click=\"addQuoteToCart()\">\r\n            <i class=\"fa fa-shopping-cart\"></i>\r\n            <span v-translation=\"{ code: 'button_quote_to_cart', type: 'button'}\"></span>\r\n          </a>\r\n\r\n          <a class=\"btn-u btn-u-sea-shop\" @click=\"printQuote()\">\r\n            <i class=\"fa fa-print\"></i>\r\n            <span v-translation=\"{ code: 'button_print_quote', type: 'button'}\"></span>\r\n          </a>\r\n\r\n        </div>\r\n      </div>\r\n\r\n    </template>\r\n    <template v-else>\r\n      <p>No results found</p>\r\n    </template>\r\n  </div>\r\n\r\n  <div v-else>\r\n    <div class=\"col-md-12\">\r\n        <div id=\"spinner-screen\">\r\n          <div class=\"spinner-wrapper loading-quotes\">\r\n              <div class=\"loader\"></div>              \r\n              <span v-translation=\"{ code: 'label_loading_quote' , type: 'label'}\"></span>\r\n          </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters } from 'vuex';\r\nimport axios from 'axios';\r\nimport SearchProduct from './../../bespoke/quotations/SearchProduct.vue';\r\nimport QuotationLine from './../../bespoke/quotations/QuotationLine.vue';\r\nimport AddressCard from './../../bespoke/quotations/AddressCard.vue';\r\nimport DeleteQuotation from './../../bespoke/quotations/DeleteQuotation.vue';\r\nimport PrintQuotation from './../../bespoke/quotations/PrintQuotation.vue';\r\nimport QuotationDiscounts from './../../bespoke/quotations/QuotationDiscounts.vue';\r\nimport SelectVatPercentage from './../../bespoke/quotations/SelectVatPercentage.vue';\r\nimport UploadLogo from './../../bespoke/quotations/UploadLogo.vue';\r\nimport { getProductInformation } from 'src/services/product-service';\r\nimport { formatPrice } from 'src/utilities/helpers';\r\n\r\nexport default {\r\n  components: {\r\n    'utlz-search-product': SearchProduct,\r\n    'utlz-quotation-line': QuotationLine,\r\n    'utlz-address-card': AddressCard,\r\n    'utlz-delete-quotation': DeleteQuotation,\r\n    'utlz-delete-quotation': DeleteQuotation,\r\n    'utlz-quotation-discount': QuotationDiscounts,\r\n    'utlz-select-vat-percentage': SelectVatPercentage,\r\n    'utlz-print-quotation': PrintQuotation,\r\n    'utlz-upload-logo': UploadLogo\r\n  },\r\n  data() {\r\n    return {\r\n      loading: true,\r\n      showAddProductModal: false,\r\n      endpoint: \"/Bespoke/QuotationWebmethods.aspx/\",\r\n      quoteLines: [],\r\n      quoteDetails: {},\r\n      deliveryAddress: {},\r\n      invoiceAddress: {},\r\n      totalExcl: 0,\r\n      discountTotal: 0,\r\n      discountIncludingVat: 0,\r\n      vatTotal: 0,\r\n      totalIncl: 0,\r\n      showDeleteQuotation: false,\r\n      quoteListUrl: {},\r\n      showPrintIframe: false,\r\n      iframeSource: \"\",\r\n      noResult: false,\r\n      vatCodes: {},\r\n      datePickersSet: false,\r\n      applyingDiscount: false,\r\n      isAddingQuoteToCart: false,\r\n      addingQuoteToCartMessage: window.vue.translations.label.label_proc_addtocart,\r\n      showProductsAddedToCartHadErrors: false,\r\n      productsWithErrors: [],\r\n      showAddToCartLoaderMessage: true,\r\n      titleLabelQuoteFrom: window.vue.translations.label.label_quote_from,\r\n      titleAddrCard: window.vue.translations.title.title_addr_card\r\n    };\r\n  },\r\n  computed: {\r\n    ...mapGetters(['customerUserId', 'bespokeGlobalWs', 'language']),\r\n  },\r\n  methods: {\r\n    initAddProductModal() {\r\n      this.showAddProductModal = true;\r\n    },\r\n    closeSearchProduct() {\r\n      this.showAddProductModal = false;\r\n    },\r\n    initDeleteQuotation() {\r\n      this.showDeleteQuotation = true;\r\n    },\r\n    updateDiscount({ amt, type }) {\r\n      axios.post(this.endpoint + \"UpdateQuotationDiscount\", { recId: this.quoteDetails.quoteNr, amt: amt, type: type }).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {       \r\n          this.quoteDetails.discountType = type;\r\n          this.quoteDetails.discountAmount = amt;\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    updateVatPercentage({ code }) {\r\n      axios.post(this.endpoint + \"UpdateVatPercentage\", { quoteRecId: this.quoteDetails.quoteNr, vatCode: code }).then(res => {\r\n        this.quoteDetails.vatCode = code;\r\n        this.setTotals(res.data.d.Totals);\r\n      })\r\n    },\r\n    deleteQuotation(quotationRecId) {\r\n      axios.post(this.endpoint + \"DeleteQuotations\", { recId: quotationRecId }).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {\r\n          window.location.href = this.quoteListUrl;\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    deleteQuotationLine(recId) {\r\n      var quoteProductToDeleteIndex = this.quoteLines.findIndex(x => x.recId === recId);\r\n      \r\n      axios.post(this.endpoint + \"DeleteQuotationLine\", { recId: recId, hdrId: this.quoteDetails.quoteNr }).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {          \r\n          var message = window.vue.translations.label.label_deleted_prod;\r\n          window.updateOrderMessage(message);\r\n          this.quoteLines.splice(quoteProductToDeleteIndex, 1);\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    updateDescription({ prodDesc, recId }) {\r\n      var quoteProductToUpdate = this.quoteLines.find(x => x.recId === recId);      \r\n      var payload = {\r\n        recId: recId,\r\n        hdrId: this.quoteDetails.quoteNr,\r\n        prodCode: quoteProductToUpdate.productId, \r\n        prodDesc: prodDesc,\r\n        quoteQty: quoteProductToUpdate.quantity,\r\n        vatCode: this.quoteDetails.vatCode,\r\n        prodPrice: quoteProductToUpdate.productPrice,\r\n        rowAmt: quoteProductToUpdate.rowAmount,\r\n        rowOrd: quoteProductToUpdate.rowOrder\r\n      };\r\n\r\n      axios.post(this.endpoint + \"UpdateQuotationLine\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {          \r\n          quoteProductToUpdate.productDescription = prodDesc;\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    updatePrice({ price, rowAmount, recId }) {\r\n      var quoteProductToUpdate = this.quoteLines.find(x => x.recId === recId);      \r\n      var payload = {\r\n        recId: recId,\r\n        hdrId: this.quoteDetails.quoteNr,\r\n        prodCode: quoteProductToUpdate.productId, \r\n        prodDesc: quoteProductToUpdate.productDescription,\r\n        quoteQty: quoteProductToUpdate.quantity,\r\n        vatCode: this.quoteDetails.vatCode,\r\n        prodPrice: price,\r\n        rowAmt: rowAmount,\r\n        rowOrd: quoteProductToUpdate.rowOrder\r\n      };\r\n\r\n      axios.post(this.endpoint + \"UpdateQuotationLine\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {          \r\n          quoteProductToUpdate.productPrice = price;\r\n          quoteProductToUpdate.rowAmount = rowAmount;\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    updateQuoteDate(selectedDate) {\r\n      var payload = {\r\n        quotationId: this.quoteDetails.quoteNr,\r\n        quotationDate: selectedDate\r\n      };\r\n\r\n      axios.post(this.endpoint + \"UpdateQuoteDate\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {          \r\n          // Update date\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      });\r\n    },\r\n    updateQuoteExpirationDate(selectedDate) {\r\n      var payload = {\r\n        quotationId: this.quoteDetails.quoteNr,\r\n        quotationDate: selectedDate\r\n      };\r\n\r\n      axios.post(this.endpoint + \"UpdateQuoteExpirationDate\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {          \r\n          // Update date\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      });\r\n    },\r\n    updateQuantity({ quantity, rowAmount, recId }) {\r\n      var quoteProductToUpdate = this.quoteLines.find(x => x.recId === recId);\r\n      \r\n      var payload = {\r\n        recId: recId,\r\n        hdrId: this.quoteDetails.quoteNr,\r\n        prodCode: quoteProductToUpdate.productId, \r\n        prodDesc: quoteProductToUpdate.productDescription,\r\n        quoteQty: quantity,\r\n        vatCode: this.quoteDetails.vatCode,\r\n        prodPrice: quoteProductToUpdate.productPrice,\r\n        rowAmt: rowAmount,\r\n        rowOrd: quoteProductToUpdate.rowOrder\r\n      };\r\n\r\n      axios.post(this.endpoint + \"UpdateQuotationLine\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {          \r\n          quoteProductToUpdate.quantity = quantity;\r\n          quoteProductToUpdate.rowAmount = rowAmount;\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    addExistingProductToQuotation(quotationProduct) {\r\n\r\n      var payload = {\r\n        hdrId: this.quoteDetails.quoteNr,\r\n        prodCode: quotationProduct.productId, \r\n        prodDesc: quotationProduct.productDescription,\r\n        quoteQty: quotationProduct.quantity,\r\n        vatCode: this.quoteDetails.vatCode,\r\n        prodPrice: quotationProduct.productPrice,\r\n        rowAmt: quotationProduct.productPrice * quotationProduct.quantity,\r\n        rowOrd: this.quoteLines.length + 1,\r\n        comment: ''\r\n      };\r\n\r\n      axios.post(this.endpoint + \"CreateQuotationLine\", payload).then(res => {\r\n        var response = res.data.d; \r\n        if (response.IsSuccess) {       \r\n          quotationProduct.rowOrder = payload.rowOrd;\r\n          quotationProduct.recId = response.RecId;\r\n          this.quoteLines.push(quotationProduct);\r\n          this.showAddProductModal = false;\r\n          this.setTotals(response.Totals);\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    updateAddress({ type, address }) {\r\n      var addressDto = {\r\n        Name: address.name,\r\n        Address: address.address,\r\n        ZipCode: address.zipCode,\r\n        City: address.city,\r\n        Phone: address.phone,\r\n        CntCode: address.countryCode,\r\n        Email: address.email\r\n      };\r\n\r\n      var endpoint = type === 'invoice' ? this.endpoint + \"UpdateInvoiceAddress\" : this.endpoint + \"UpdateDeliveryAddress\"\r\n\r\n      axios.post(endpoint, { quoteRecId: this.quoteDetails.quoteNr, newAddress: addressDto }).then(res => {\r\n        var response = res.data.d; \r\n        if (response) {          \r\n          var message = window.vue.translations.label.label_chg_address;\r\n          window.updateOrderMessage(message);\r\n          if (type === 'invoice') {\r\n            this.invoiceAddress = address;\r\n          } else if (type === 'delivery') {\r\n            this.deliveryAddress = address;\r\n          }\r\n        } else {\r\n          alert('ERROR');\r\n        }\r\n      })\r\n    },\r\n    setTotals({ TotalExcl, VatTotal, GrandTotal, Disc, DiscIncludingVat}) {\r\n      this.totalExcl = formatPrice(TotalExcl);\r\n      this.discountTotal = formatPrice(Disc);\r\n      this.vatTotal = formatPrice(VatTotal);\r\n      this.totalIncl = formatPrice(GrandTotal);\r\n      this.discountIncludingVat = formatPrice(DiscIncludingVat);\r\n      this.quoteDetails.totalsIncl = GrandTotal;\r\n\r\n      this.applyingDiscount = Disc > 0;\r\n    },    \r\n    printQuote() {\r\n      this.showPrintIframe = false;\r\n      this.$nextTick(() => {\r\n        this.showPrintIframe = true;\r\n      });\r\n    },\r\n    SaveCompanyLogo(logoImgUrl) {\r\n      this.quoteDetails.logoImgUrl = logoImgUrl;\r\n    },\r\n    addQuoteToCart() {\r\n      this.isAddingQuoteToCart = true;\r\n      axios.post(this.endpoint + \"CreateShoppingCartFromOffer\", { debtorId: this.customerUserId, recId: this.quoteDetails.quoteNr })\r\n        .then(res => {\r\n            var result = res.data.d;\r\n            var message = window.vue.translations.label.label_quote_to_cart;\r\n            window.updateOrderMessage(message);\r\n            this.showAddToCartLoaderMessage = false;\r\n            setTimeout(() => {              \r\n              this.addingQuoteToCartMessage = window.vue.translations.label.label_redirect_cart;\r\n              this.showAddToCartLoaderMessage = true;\r\n            }, 2000);\r\n            // if (result.errorProdCodes.length) {\r\n            //   this.showProductsAddedToCartHadErrors = true;\r\n            //   this.productsWithErrors = result.errorProdCodes;\r\n            // }\r\n            window.location.href = `/${this.language}/webshop/paymentprocess/single_checkout.aspx`;\r\n        });\r\n    },\r\n    setDatePicker(elementId, defaultDate, callback) {\r\n      var config = {\r\n        locale: \"nl\",\r\n        wrap: true,\r\n        inline: false,\r\n        altInput: true,\r\n        dateFormat: \"d-m-Y\\\\TH:i:S\\\\Z\",\r\n        altFormat: \"d-m-Y\",\r\n        defaultDate: defaultDate,\r\n        onChange: (selectedDates, dateStr, instance) => {\r\n          callback(dateStr);\r\n        },\r\n        onOpen: function () {\r\n            //dotNetReference.invokeMethodAsync('SetFocus', true);\r\n        },\r\n        onClose: function () {\r\n            //dotNetReference.invokeMethodAsync('SetFocus', false);\r\n        }\r\n      };\r\n\r\n      $('#' + elementId).flatpickr(config);\r\n    },\r\n    closeProductsWithErrors() {\r\n      this.showProductsAddedToCartHadErrors = false;\r\n      this.productsWithErrors = [];\r\n    }\r\n  },\r\n  updated() {\r\n    if (!this.datePickersSet) {\r\n      this.setDatePicker('date-picker', this.quoteDetails.quoteDate, this.updateQuoteDate);\r\n      this.setDatePicker('exp-date-picker', this.quoteDetails.quoteExpirationDate, this.updateQuoteExpirationDate);\r\n      this.datePickersSet = true;\r\n    } \r\n  },\r\n  created() {    \r\n\r\n    this.quoteListUrl = new URL(location.origin + \"/\" + this.language + \"/bespoke/account/quotations.aspx\");\r\n\r\n    var quoteId = new URLSearchParams(window.location.search).get('quoteid');\r\n\r\n    if (quoteId !== null) {\r\n      \r\n      axios.post(this.endpoint + \"GetQuotations\", { debtorId: this.customerUserId, recId: quoteId })\r\n        .then(res => {\r\n          if (res.data.d.length > 0) {\r\n\r\n          var details = res.data.d[0];\r\n        \r\n          axios.post(this.endpoint + \"GetQuoteTotals\", { recId: quoteId })\r\n            .then(totalsRes => {\r\n                this.setTotals(totalsRes.data.d);\r\n            });\r\n\r\n          // this.setTotals(details);\r\n\r\n          var dateString = details.QuoteDate;\r\n          let parts = dateString.split('-');\r\n          let formattedDateString = `${parts[1]}/${parts[0]}/${parts[2]}`;\r\n\r\n          var expirationDateString = details.QuoteExpirationDate;\r\n          let partsExp = expirationDateString.split('-');\r\n          let formattedExpirationDateString = `${partsExp[1]}/${partsExp[0]}/${partsExp[2]}`;\r\n\r\n          this.quoteDetails = {\r\n            debtorId: \"\",\r\n            discountAmount: details.Disc,\r\n            discountType: details.DiscType,\r\n            quoteDate: new Date(formattedDateString).format(\"dd-MM-yyyy\"),\r\n            quoteExpirationDate: new Date(formattedExpirationDateString).format(\"dd-MM-yyyy\"),\r\n            quoteNr: details.RecId,\r\n            grandTotal: details.GrandTotal,\r\n            totalExcl: details.TotalExcl,\r\n            totalIncl: details.TotalIncl,\r\n            vatTotal: details.VatTotal,\r\n            vatCode: details.VatCode,\r\n            logoImgUrl: details.LogoImgUrl\r\n          };\r\n\r\n          var lines = [];\r\n          details.Lines.forEach(x => {\r\n            lines.push({\r\n              productId: x.ProdCode,\r\n              productDescription: x.ProdDesc,\r\n              quantity: x.Qty,\r\n              rowAmount: x.LineTotal,\r\n              productPrice: x.ProductPrice,\r\n              recId: x.RecId,\r\n              rowOrder: x.RowOrd,\r\n              vatCode: x.VatCode,\r\n              customProduct: x.ProdCode === this.bespokeGlobalWs.customQuoteProduct ? true : false,\r\n              comment: x.Comment\r\n            });\r\n          });\r\n\r\n          this.deliveryAddress = {\r\n            name: details.DelAddress.Name,\r\n            address: details.DelAddress.Address,\r\n            countryCode: details.DelAddress.CntCode,\r\n            email: details.DelAddress.Email,\r\n            city: details.DelAddress.City,\r\n            phone: details.DelAddress.Phone,\r\n            zipCode: details.DelAddress.ZipCode\r\n          };\r\n\r\n          this.invoiceAddress = {\r\n            name: details.InvAddress.Name,\r\n            address: details.InvAddress.Address,\r\n            countryCode: details.InvAddress.CntCode,\r\n            email: details.InvAddress.Email,\r\n            city: details.InvAddress.City,\r\n            phone: details.InvAddress.Phone,\r\n            zipCode: details.InvAddress.ZipCode\r\n          };\r\n\r\n          var prodCodes = lines.filter(y => !y.customProduct).map(x => x.productId);\r\n          if (prodCodes.length > 0) {\r\n            getProductInformation({ prodCodes: prodCodes, getSeoInformation: false, getStock: false, getPrice: false })\r\n            .then(res => {\r\n              res.products.forEach(productInfo => {\r\n                lines.forEach(x => {\r\n                  if (x.productId === productInfo.id) {      \r\n                    x.productDescription = productInfo.shortDescription;                \r\n                    x.imageUrl = productInfo.imageUrl ? productInfo.imageUrl : '/documents/productimages/not-available-small.jpg';\r\n                  }\r\n                });\r\n\r\n              });\r\n\r\n              this.quoteLines = lines;\r\n              this.loading = false;\r\n            });          \r\n          } else {\r\n            this.loading = false;\r\n            this.quoteLines = lines;\r\n          }\r\n\r\n          var iframeSource = new URL(location.origin + \"/\" + this.language + \"/bespoke/account/printquotation.aspx\");\r\n          iframeSource.searchParams.append('quoteid', this.quoteDetails.quoteNr);\r\n          this.iframeSource = iframeSource.href; \r\n        } else {\r\n          this.loading = false;\r\n          this.noResult = true;\r\n        }\r\n      });   \r\n    }\r\n    \r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuotationDetails.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuotationDetails.vue?vue&type=template&id=71d54caf&\"\nimport script from \"./QuotationDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./QuotationDetails.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"select-quote\"},[_c('div',{staticClass:\"select-quote-btn\"},[_c('a',{on:{\"click\":function($event){return _vm.showSelectQuotationModal()}}},[_c('i',{staticClass:\"fa fa-file-text-o\"})])]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.isShowSelectQuotesTool)?_c('div',{staticClass:\"full-screen-fader flex-column justify-content-center\"},[_c('div',{staticClass:\"utlz-container\"},[_c('div',{staticClass:\"utlz-row\"},[_c('div',{staticClass:\"utlz-col-lg-12\"},[_c('span',{staticClass:\"close-button\",on:{\"click\":function($event){return _vm.closeModal()}}},[_c('i',{staticClass:\"fa fa-times-circle\",attrs:{\"aria-hidden\":\"true\"}})]),_c('div',{staticClass:\"modal-content select-quote-modal-content\"},[_c('div',{staticClass:\"header\"},[_c('h2',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'title_select_quote', type: 'title' }),expression:\"{ code: 'title_select_quote', type: 'title' }\"}]}),_c('a',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_to_quotes', type: 'button' }),expression:\"{ code: 'button_to_quotes', type: 'button' }\"}],staticClass:\"text-btn\",attrs:{\"href\":'/' + _vm.language + '/bespoke/account/quotations.aspx'}}),_c('span',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'button_new_quote', type: 'button' }),expression:\"{ code: 'button_new_quote', type: 'button' }\"}],staticClass:\"text-btn\",on:{\"click\":function($event){return _vm.createQuote()}}})]),(_vm.queueingQuoteProduct)?[_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_c('p',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ type: 'label', code: 'label_select_quote_first'}),expression:\"{ type: 'label', code: 'label_select_quote_first'}\"}],staticClass:\"alert-text\"})])]:_vm._e(),_c('div',{staticClass:\"table-wrapper\"},[_c('table',{staticClass:\"table\"},[_c('thead',{staticClass:\"table-header rgba-banner\"},[_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_isactive', type: 'label'}),expression:\"{ code: 'label_col_isactive', type: 'label'}\"}],staticClass:\"is-active\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_quote', type: 'label'}),expression:\"{ code: 'label_col_quote', type: 'label'}\"}]}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_date', type: 'label'}),expression:\"{ code: 'label_col_date', type: 'label'}\"}],staticClass:\"col-date\"}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_customer', type: 'label'}),expression:\"{ code: 'label_col_customer', type: 'label'}\"}]}),_c('th',{directives:[{name:\"translation\",rawName:\"v-translation\",value:({ code: 'label_col_subtotal_exclvat', type: 'label'}),expression:\"{ code: 'label_col_subtotal_exclvat', type: 'label'}\"}]})]),_c('tbody',_vm._l((_vm.quotations),function(quotation){return _c('tr',{key:quotation.id,on:{\"click\":function($event){return _vm.setSelection(quotation.id)}}},[_c('td',{staticClass:\"is-active\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":quotation.isActive}})]),_c('td',[_vm._v(_vm._s(quotation.id))]),_c('td',{staticClass:\"col-date\"},[_vm._v(_vm._s(quotation.date))]),_c('td',[_vm._v(_vm._s(quotation.name))]),_c('td',[_vm._v(_vm._s(_vm.formattedPrice(quotation.subtotalExclVat)))])])}),0)])])],2)])])])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n<div class=\"select-quote\">\r\n  <div class=\"select-quote-btn\">\r\n    \r\n    <a @click=\"showSelectQuotationModal()\">\r\n      <i class=\"fa fa-file-text-o\"></i>\r\n    </a>\r\n  </div>\r\n  \r\n  <transition name=\"fade\">\r\n    <div v-if=\"isShowSelectQuotesTool\" class=\"full-screen-fader flex-column justify-content-center\">\r\n      <div class=\"utlz-container\">\r\n        <div class=\"utlz-row\">\r\n          <div class=\"utlz-col-lg-12\">\r\n            <span class=\"close-button\" @click=\"closeModal()\">\r\n              <i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i>\r\n            </span>\r\n            <div class=\"modal-content select-quote-modal-content\">\r\n              <div class=\"header\">                \r\n                <h2 v-translation=\"{ code: 'title_select_quote', type: 'title' }\"></h2>\r\n                <a :href=\"'/' + language + '/bespoke/account/quotations.aspx'\" class=\"text-btn\" v-translation=\"{ code: 'button_to_quotes', type: 'button' }\"></a>\r\n                <span @click=\"createQuote()\" class=\"text-btn\" v-translation=\"{ code: 'button_new_quote', type: 'button' }\"></span>\r\n              </div>\r\n\r\n              <template v-if=\"queueingQuoteProduct\">\r\n                <div class=\"alert alert-warning\" role=\"alert\">\r\n                  <p class=\"alert-text\" v-translation=\"{ type: 'label', code: 'label_select_quote_first'}\"></p>\r\n                </div>\r\n              </template>\r\n              <div class=\"table-wrapper\">\r\n                <table class=\"table\">\r\n                  <thead class=\"table-header rgba-banner\">\r\n                    <th class=\"is-active\" v-translation=\"{ code: 'label_col_isactive', type: 'label'}\">                    \r\n                    </th>\r\n                    <th v-translation=\"{ code: 'label_col_quote', type: 'label'}\">\r\n                    </th>\r\n                    <th v-translation=\"{ code: 'label_col_date', type: 'label'}\" class=\"col-date\">\r\n                    </th>\r\n                    <th v-translation=\"{ code: 'label_col_customer', type: 'label'}\">\r\n                    </th>\r\n                    <th v-translation=\"{ code: 'label_col_subtotal_exclvat', type: 'label'}\">\r\n                    </th>\r\n                  </thead>\r\n                  <tbody>                  \r\n                    <tr v-for=\"quotation in quotations\" :key=\"quotation.id\" @click=\"setSelection(quotation.id)\">\r\n                      <td class=\"is-active\">\r\n                        <input type=\"checkbox\" :checked=\"quotation.isActive\" />\r\n                      </td> \r\n                      <td>{{ quotation.id }}</td>\r\n                      <td class=\"col-date\">{{ quotation.date }}</td>\r\n                      <td>{{ quotation.name }}</td>\r\n                      <td>{{ formattedPrice(quotation.subtotalExclVat) }}</td>\r\n                    </tr>\r\n                  </tbody>\r\n                </table>\r\n              </div>\r\n            </div>\r\n          </div>  \r\n        </div>\r\n      </div>\r\n    </div>\r\n    </transition>\r\n\r\n</div>\r\n</template>\r\n\r\n<script>\r\nimport { mapGetters, mapActions } from 'vuex';\r\nimport { formatPrice } from 'src/utilities/helpers';\r\nexport default {\r\n  data() {\r\n    return {\r\n      showModal: false\r\n    }\r\n  },\r\n  computed: {\r\n    ...mapGetters(['language']),\r\n    ...mapGetters('quotations', ['quotations', 'selectedQuote', 'isShowSelectQuotesTool', 'queueingQuoteProduct'])\r\n  },\r\n  methods: {\r\n    ...mapActions('quotations', ['setSelectedQuote', 'promptUserForQuote', 'addQueuedProductToQuoteList', 'cancelPromptUserForQuote', 'showSelectQuotesTool', 'createQuote']),\r\n    formattedPrice (price) {\r\n      return formatPrice(price);\r\n    },\r\n    showSelectQuotationModal() {\r\n      this.showSelectQuotesTool(true);\r\n    },\r\n    closeModal() {\r\n      this.cancelPromptUserForQuote();\r\n    },\r\n    setSelection(selectedQuoteId) {\r\n      var successMessage = window.vue.translations.label.label_switched_quote_list.replace('[1]', selectedQuoteId);\r\n      \r\n      // When selecting a quote, while a quote product is in que awaiting to be added to a quote list\r\n      if (this.queueingQuoteProduct) {\r\n        this.addQueuedProductToQuoteList(selectedQuoteId);\r\n      } else {\r\n        this.setSelectedQuote({ quoteId: selectedQuoteId, isActive: true}).then(_ => { \r\n          this.showSelectQuotesTool(false);\r\n          window.updateOrderMessage(successMessage);\r\n        });\r\n      }\r\n      \r\n      \r\n    }\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>","let handleOutsideClick;\r\n\r\nconst OutsideClickDirective = {\r\n  inserted (el, binding, vnode) {\r\n    const { handler, exclude } = binding.value;\r\n\r\n    handleOutsideClick = (ev) => {\r\n      ev.stopPropagation();\r\n      let clickedOnExcludedEl = false;\r\n      exclude.forEach(refName => {\r\n        if (!clickedOnExcludedEl) {\r\n          const excludedEl = vnode.context.$refs[refName];\r\n          clickedOnExcludedEl = excludedEl.contains(ev.target);\r\n        }\r\n        if (!el.contains(ev.target) && !clickedOnExcludedEl) {\r\n          vnode.context[handler]();\r\n        }\r\n      })\r\n    }\r\n    document.addEventListener('click', handleOutsideClick);\r\n  },\r\n  unbind () {\r\n    document.removeEventListener('click', handleOutsideClick);\r\n  }\r\n};\r\n\r\nexport default OutsideClickDirective;\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectQuote.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectQuote.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SelectQuote.vue?vue&type=template&id=f5c78c38&\"\nimport script from \"./SelectQuote.vue?vue&type=script&lang=js&\"\nexport * from \"./SelectQuote.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","const TranslationDirective = {\r\n  inserted (el, { value }) {\r\n    let translation = window.vue.translations[value.type][value.code];\r\n    el.innerHTML = translation;\r\n  },\r\n  componentUpdated (el, { value }) {\r\n    let translation = window.vue.translations[value.type][value.code];\r\n    if (value.interpolations !== undefined) {\r\n      let newTranslation = translation;\r\n      value.interpolations.forEach((interpolation, index) => {\r\n        let ind = index + 1;\r\n        newTranslation = newTranslation.replace('[' + ind + ']', interpolation);\r\n      });\r\n      translation = newTranslation;\r\n    }\r\n    el.innerHTML = translation;\r\n  }\r\n}\r\n\r\nexport default TranslationDirective;\r\n","const FormatPriceDirecive = {\r\n  inserted (el, { value }) {\r\n    el.innerHTML = '€ ' + value.toFixed(2).replace('.', ',');\r\n  }\r\n}\r\n\r\nexport default FormatPriceDirecive;\r\n","import Vue from 'vue';\r\nimport ElasticProductList from 'src/components/webshop/elastic/elastic-product-list/ElasticProductList.vue';\r\nimport ElasticProductDetails from 'src/components/webshop/elastic/elastic-product-details/ElasticProductDetails.vue';\r\nimport ProductBlock from 'src/components/webshop/product-block/ProductBlock.vue';\r\nimport ElasticProductFilters from 'src/components/webshop/elastic/elastic-product-filters/ElasticProductFilters.vue';\r\nimport ShoppingCartControl from 'src/components/webshop/shopping-cart/ShoppingCartControl.vue';\r\nimport store from 'src/store/store';\r\n\r\n// BESPOKE\r\nimport QuotationsList from './../bespoke/quotations/QuotationsList.vue';\r\nimport QuotationDetails from './../bespoke/quotations/QuotationDetails.vue';\r\nimport SelectQuote from './../bespoke/quotations/SelectQuote.vue';\r\nimport PrintQuotation from './../bespoke/quotations/PrintQuotation.vue';\r\n// END BESPOKE\r\n\r\n// Directives\r\nimport TranslationDirective from 'src/directives/TranslationDirective';\r\nimport FormatPriceDirective from 'src/directives/FormatPriceDirective';\r\nimport OutsideClickDirective from 'src/directives/OutsideClickDirective';\r\n\r\n// Setup global directives\r\nVue.directive('translation', TranslationDirective);\r\nVue.directive('format-price', FormatPriceDirective);\r\nVue.directive('outside-click', OutsideClickDirective);\r\n\r\n// Initializes the store with global settings from uc_vue_data_transfer\r\nwindow.vuexStore = new Vue({\r\n  store: store,\r\n  created () {\r\n    this.$store.dispatch('initBrowserDetection');\r\n    this.$store.dispatch('setGlobalCmsSettings', window.vue.globalData.cmsSettings);\r\n    this.$store.dispatch('setGlobalWsSettings', window.vue.globalData.webshopSettings);\r\n    this.$store.dispatch('setGlobalUserInformation', window.vue.globalData.userInformation);\r\n    this.$store.dispatch('setGlobalEndpoints', window.vue.globalData.endpoints);\r\n  }\r\n});\r\n\r\nwindow.loadElasticSearch = function () {\r\n  // Initializes elastic search module\r\n  const elasticSearch = window.vue.modules.elasticSearch;\r\n  if (elasticSearch) {\r\n    new Vue({\r\n      store: store,\r\n      created () {\r\n        this.$store.commit('elastic/initConfig', elasticSearch.config.config);\r\n        this.$store.commit('elastic/initSearchConfig', elasticSearch.config.searchConfig);\r\n      },\r\n      render: h => h(ElasticProductList)\r\n    }).$mount('#elastic-search');\r\n  }\r\n}\r\n\r\nwindow.loadElasticProductDetails = function () {\r\n  // Initializes elastic product details module\r\n  const productDetails = window.vue.modules.productDetails;\r\n  if (productDetails) {\r\n    new Vue({\r\n      store: store,\r\n      created () {\r\n        this.$store.commit('productDetails/setProductCode', productDetails.config.productCode);\r\n        this.$store.commit('productDetails/setGroupFields', productDetails.config.groupFields);\r\n        this.$store.commit('productDetails/setSearchConfig', productDetails.config.searchConfig);\r\n      },\r\n      render: h => h(ElasticProductDetails)\r\n    }).$mount('#elastic-detail-page');\r\n  }\r\n}\r\n\r\n// Initializes elastic aggregations module\r\nconst elasticAggrFilters = window.vue.modules.elasticAggrFilters;\r\nif (elasticAggrFilters) {\r\n  new Vue({\r\n    store: store,\r\n    render: l => l(ElasticProductFilters)\r\n  }).$mount('#elastic-aggr-filters');\r\n};\r\n\r\nif (window.vue.modules.ShoppingCartControl) {\r\n  new Vue({\r\n    store: store,\r\n    render: h => h(ShoppingCartControl)\r\n  }).$mount('#shopping-cart-control');\r\n};\r\n\r\nwindow.vue.productBlocks.forEach(config => {\r\n  new Vue({\r\n    store: store,\r\n    data: {\r\n      config: config\r\n    },\r\n    render: h => h(ProductBlock)\r\n  }).$mount('#block-' + config.Target);\r\n});\r\n\r\n// BESPOKE\r\n// Initializes elastic aggregations module\r\nconst quotations = window.vue.modules.quotations;\r\nif (quotations) {\r\n  new Vue({\r\n    store: store,\r\n    render: l => l(QuotationsList)\r\n  }).$mount('#quotations');\r\n};\r\n\r\nwindow.loadVueJsQuotationTool = function() {\r\n  const quotationsStore = window.vue.modules.quotationsStore;\r\n  if (quotationsStore) {\r\n    new Vue({\r\n      store: store,\r\n      created() {\r\n        this.$store.dispatch('quotations/init', {});\r\n      },\r\n      render: l => l(SelectQuote)\r\n    }).$mount('#select-quote');;\r\n  };\r\n}\r\n\r\nconst quotationDetails = window.vue.modules.quotationDetails;\r\nif (quotationDetails) {\r\n  new Vue({\r\n    store: store,\r\n    created() {\r\n      this.$store.commit('orderEntry/initSearchConfig', quotationDetails.config.searchConfig);\r\n    },\r\n    render: l => l(QuotationDetails)\r\n  }).$mount('#quotation-details');\r\n};\r\n\r\nconst printQuotationDetails = window.vue.modules.printQuotationDetails;\r\nif (printQuotationDetails) {\r\n  new Vue({\r\n    store: store,\r\n    render: l => l(PrintQuotation)\r\n  }).$mount('#print-quotation-details');\r\n};\r\n// END BESPOKE\r\n\r\nVue.config.productionTip = false\r\n"],"sourceRoot":""}