{"version":3,"sources":["filter.js","string.js","auth.js","basket.js","dictionaries.js","navigation.js","languagemodal.js","index.js","agent.js","print.js","dealers.js","tracking.js","selfService.js","wishlist.js","01-atoms/loader/loader.js","02-molecules/article-tile/article-tile.js","02-molecules/basketline/basketline.js","02-molecules/blog-post-tile/blog-post-tile.js","02-molecules/dealer-modal/dealer-modal.js","02-molecules/dealer-tile/dealer-tile.js","02-molecules/dropdown-element/dropdown-element.js","02-molecules/dropdown-selector/dropdownselector.js","02-molecules/google-maps/google-maps.js","02-molecules/language-modal/language-modal.js","02-molecules/google-maps-autocomplete/google-maps-autocomplete.js","02-molecules/measurement-input/measurement-input.js","02-molecules/multi-filter/multi-filter.js","03-organisms/article-list/article-list.js","03-organisms/basket-page/basket-page.js","03-organisms/article-slider/article-slider.js","03-organisms/camera-page/camera-page.js","03-organisms/checkout-page/checkout-page.js","03-organisms/collection-product/collection-product.js","03-organisms/dealer-list-page/dealer-list-page.js","03-organisms/dealer-list-page/dealers-list.js","03-organisms/drop-down-filter/drop-down-filter.js","03-organisms/filter-checkbox/filter-checkbox.js","03-organisms/footer/footer.js","03-organisms/hero/video-player.js","03-organisms/list-filters/list-filters.js","03-organisms/mobile-filter/toggle-mobile-filter.js","03-organisms/login-page/login-page.js","03-organisms/modal/modal.js","03-organisms/navigation/navigation-message.js","03-organisms/navigation/navigation.js","03-organisms/order-page/order-page.js","03-organisms/product-list/product-list.js","03-organisms/product-list-highlight/product-list-highlight.js","03-organisms/product-page/product-page.js","03-organisms/product-page-slider/product-page-slider.js","03-organisms/product-recommendation/product-recommendation.js","03-organisms/product-tile/product-tile.js","03-organisms/receipt-page/receipt-page.js","03-organisms/search-page/search-page.js","03-organisms/self-service-customer-info/self-service-customer-info.js","03-organisms/search-results/search-results.js","03-organisms/testimonial-list/testimonial-list.js","03-organisms/specification-navigation/specification-navigation.js","03-organisms/toiletseat-filters/toiletseat-filters.js","03-organisms/video-grid/video-grid.js","03-organisms/wishlist/wishlist.js","cookieService.js","navigationService.js","app.js"],"names":["pressalit","filterHelpers","mergeFilters","newFilter","currentFilter","map","filter","current","find","x","filterId","filterType","selected","fromValue","stringHelpers","b64DecodeUnicode","str","decodeURIComponent","Array","prototype","call","atob","c","charCodeAt","toString","slice","join","getCookieValue","name","regex","RegExp","document","cookie","replace","axios","clientId","clientSecret","baseUrl","window","location","origin","storeAuth","this","store","_mutations","setAccessToken","s","token","accessToken","cookieService","setCookie","setRefreshToken","refreshToken","_actions","init","_ref","commit","getCookie","login","_ref2","loginCredentials","payload","username","password","grant_type","client_id","client_secret","req","post","then","_ref3","data","access_token","refresh_token","createUser","_ref4","userData","market","country","company","email","terms","_ref5","console","log","logout","_ref6","removeCookie","href","refresh","_ref7","state","_ref8","namespaced","actions","getters","isLoggedIn","mutations","storeBasket","_getters","getLines","lines","getLineById","id","isLoading","isSubmitting","getTotals","totals","getQuantity","quantity","isAddedToBasket","productIds","indexOf","getCulture","culture","getSiteNodeId","siteNodeId","getErrors","errors","isNewCustomer","disabledInvoiceFields","properties","hasERPInvoiceAddress","invoiceAddress","deliveryAddress","deliveryDetails","isDeliveryToInvoiceAddress","reference","poNumber","shippingDateRequested","customerDeliveryState","requestadeliverydate","contactUponDelivery","phoneNumberUponDelivery","deliveryInstructions","comment","hasError","Object","keys","some","key","value","isArray","length","_typeof","getSummaryFromCookie","result","cookieBase64","json","JSON","parse","summary","lineCount","e","error","getBasket","get","basket","orderTotals","getCheckout","checkout","updateQuantity","params","basketLineId","put","removeBasketLine","basketlineId","delete","_ref9","submit","_ref10","Promise","resolve","reject","_ref11","isSuccess","operationCompleted","paymentResponse","response","api","addToBasket","_ref12","_ref13","productId","_ref14","addReplicatedBasketLine","_ref15","_ref16","forceNewBasketLine","_ref17","addPoNumber","_ref18","_ref19","_ref20","deletePoNumber","_ref21","_ref22","firstName","lastName","addressLine1","addressLine2","postalCode","city","countryCode","setQuantity","setErrors","setLines","setProductsInBasket","setTotals","setLoading","setSubmitting","unsetLoading","unsetSubmitting","setCulture","setSiteNodeId","updateBasketLineQuantity","index","findIndex","line","setIsNewCustomer","setProperties","setEmail","setInvoiceAddress","address","setDeliveryAddress","setShippingDetails","shippingDetails","setDeliveryToInvoiceAddress","status","setComment","storeDictionaries","getAll","promise","dictionaries","getByKey","item","cultureVariant","translations","setAll","setPromise","storeNavigation","toggleSidebar","isOpen","arguments","undefined","isSidebarOpen","showOverlay","scrollTo","getElementsByTagName","classList","add","remove","setTimeout","isFullWidth","component","toggleOverlay","show","isSearchOpen","toggleSearch","setIsFullWidth","setComponent","setData","setNavigationProps","props","navigationProps","setListeners","listeners","storeLanguageModal","toggle","setCurrent","storeFilter","setFilterProductName","filterProductName","setFilterManufacturerName","filterManufacturerName","setFilterToiletShape","filterToiletShape","setFilterToiletMounting","filterToiletMounting","setFilterToiletMeasurement1","filterToiletMeasurement1","setFilterToiletMeasurement2","filterToiletMeasurement2","setFilterToiletMeasurement3","filterToiletMeasurement3","setIsManufacturerSearch","newState","isManufacturerSearch","setProductEndpoint","endpoint","productEndpoint","setFilters","total","page","pageSize","pagesize","filters","categoryId","initialCount","products","filterToken","resetFilters","setProducts","concat","_toConsumableArray","toggleSearching","searching","hideServersideRendered","setMappings","mappings","filterMappings","search","filterPayload","dispatch","isFilterReset","resetAllFilters","sorting","replaceFilters","filterOptions","options","results","router","query","searchInFilters","updateQuery","assign","currentRoute","sort","getProductEndpoint","getFilterManufacturerName","getFilterProductName","getFilterToiletShape","getFilterToiletMounting","getFilterToiletMeasurement1","getFilterToiletMeasurement2","getFilterToiletMeasurement3","getFilters","perfionName","perfionFieldName","mapping","f","title","label","Vuex","vuex","Vue","use","_this","Store","registerModule","storeAgent","storePrint","storeDealers","tracking","storeSelfService","storeWishlist","getElementById","interceptors","request","config","auth","headers","Authorization","isAlreadyFetchingAccessToken","subscribers","handle401","__isRetryRequest","retryOriginalRequest","callback","push","newToken","forEach","err","isAgentIe","documentMode","isWishlistPrinting","wishlistPrinting","printWishlist","stopWishlistPrint","fetch","language","rootState","latitude","longitude","radius","languageCode","term","isWebshop","isPrivate","bottomRight","topLeft","cancelToken","cancelSource","uudi","dt","Date","getTime","r","Math","random","floor","toGoogleMoney","val","Number","toFixed","mapBasketLine","item_id","erpId","item_name","productTitle","item_category","item_category2","discount","productPrice","price","currency","item_variant","variantTitle","taxable","requiresShipping","_actions2","_defineProperty","trackEcommerce","_objectDestructuringEmpty","dataLayer","totalPrice","p","event","transactionId","transactionAffiliation","affiliation","transactionTotal","transactionTax","transactionProducts","trackToiletSeatManufacturerSearch","action","manufacturerTitle","modelTitle","trackViewBasket","ecommerce","unitPrice","items","basketLine","trackViewWishList","trackToiletSeatOverlay","overlayChoice","overlayTitle","trackToiletSeatShapeSearch","toiletShape","toiletMounting","toiletMeasurement1","toiletMeasurement2","toiletMeasurement3","customerid","itemView","productNumber","productName","item_url","productUrl","item_status","lineStatus","item_price","lineAmount","lineQuantity","addToCart","productCategory","parentProductId","productQuantity","addToWishList","removeFromWishList","changedQuantityTo","transaction_id","VueRouter","mode","_state","customerInfo","customerOrders","fetchingData","showLoadmore","loadMore","getCustomerInfo","catch","getCustomerOrders","firstCall","newPage","orders","finally","url","URL","pathname","setCustomerInfo","setCustomerOrders","setFetchingData","setPage","setTerm","setShowLoadmore","setLoadMore","setFilter","getWishlist","bulkAdd","productIdQuantityDictionary","apply","k","redirectUrl","removeSubline","subLineId","_ref23","setProductsInWishlist","updateWishlistLineQuantity","novicell","loader","template","active","type","Boolean","default","theme","String","computed","color","articleTile","article","contentType","charAt","toUpperCase","dataQueryObj","center","image","focalPoint","top","left","stringify","quality","articleTileType","primaryFilter","basketline","sublinesIsVisible","methods","toggleSublines","deleteItem","$store","deleteSubline","decreaseQuantity","increaseQuantity","changeQuantity","target","parseInt","watch","isPrinting","handler","quantityDecreaseDisabled","productImage","hasSubLines","subLines","print","blogPostTile","blogPost","dealerModal","selectedType","types","selectedFilters","editType","showDealerTypeSelection","selectedTypeLabel","aliasKey","select","close","$emit","onFilter","getActiveClass","toggleBodyLock","elements","scrollClass","newVal","dealerTile","dealer","tempFilter","dropdownElement","els","querySelectorAll","i","addEventListener","currentTarget","dropdown","dropdownselector","toggleList","countries","getElementsByClassName","VueGoogleMaps","GmapCluster","googleMaps","load","libraries","Cluster","markers","currentPosition","zoom","infoWindowOpen","currentSelectedMarker","changingPlace","currentMidx","infoOptions","pixelOffset","width","height","isMapDragged","zoomLevel","gmapOptions","streetViewControl","fullscreenControl","mapTypeControl","icon","getBoundsCoordinates","$refs","$mapObject","getBounds","getStyles","styles","featureType","elementType","stylers","visibility","saturation","lightness","getBoundMarkers","bounds","google","maps","LatLngBounds","extend","position","phoneTranslation","infoWindowPos","getSelectedMarkerState","info","oldVal","panTo","fitBounds","click","marker","mapIsDragged","mapHasLoaded","mounted","$mapPromise","setCenter","setZoom","addListener","setOptions","languageModal","el","languagemodal","vm","overlay","create","selector","class","onLoaded","links","_loop","link","preventDefault","parts","split","languagePart","lang","dataset","langName","alias","langAlias","onDestroy","immediate","languageModalElement","createElement","innerHTML","languageLinks","defaultLanguage","defaultName","languageSegment","match","currentLanguage","languageFromSegment","footerModalEl","open","googleMapsAutocomplete","inheritAttrs","clearInput","input","blur","focus","_this2","$gmapApiPromiseLazy","places","Autocomplete","Error","$autocomplete","$watch","v","setComponentRestrictions","getPlace","measurementInput","number","measurement","onMeasurementChange","toValue","multiFilter","applyDictionaryKey","singleFilter","showReset","isDealerView","selectedValues","o","isSingle","customLabel","casedValue","substring","toLowerCase","dictionary","targetFilter","deep","validate","last","setTemp","reset","update","articleList","articles","parentId","$route.query","created","initialState","currentQuery","$route","sortingMethod","onQueryChange","$router","loadmore","updateSorting","paginationText","dict","includes","visibleLinksAmount","basketPage","pageEl","showAdditionalPoNumberSections","additionalPoNumbers","showError","basketLines","basketTotals","toggleShowAdditionalPoNumberSection","$set","replicateOrderLine","addAdditionalPoNumber","removeAdditionalPoNumber","Flickity","articleSlider","pageDots","groupCells","contain","draggable","cellAlign","imagesLoaded","arrowShape","x0","x1","y1","x2","y2","x3","cameraPage","getVerification","sender","phone","success","sending","send","senderName","senderEmail","senderPhone","checkoutPage","additionalAddressLine","additionalAddressLineDelivery","commentSection","showDeliverydate","receiptPage","$validator","validateAll","receiptPageUrl","encodeURIComponent","newRedirectUrl","set","collectionProduct","contentOverlayTriggers","overlayInnerContent","querySelector","stopPropagation","content","getAttribute","onCreate","injectContent","loadedContent","clearContent","collectionGrids","addToWishlist","tpl","wrapper","activeCampaignForm","changeAddress","dealerListPage","lastPosition","lat","lng","currentBounds","pagination","activeTab","showWebshops","isSearching","searchTimeout","initialCountryIsoFilter","userType","totalResults","currentCountry","place","showMap","activeDealer","inputChanged","initialZoom","goToPhysicalDealers","clearPlace","switchTab","tabs","tab","goToDealer","mapElement","innerWidth","scroll","offsetTop","clientHeight","behavior","openMarker","onDealerOpen","changePlace","place_id","updateRouteQuery","webshop","geoLocations","getGeoLocations","nw","nwLat","nwLng","se","seLat","seLng","isWebshops","updateZoom","updateBounds","getCenter","setType","userTypeFilter","identifier","getLatLng","newPosition","visibleMap","temporaryDomNode","style","clientWidth","body","append","fakeMap","Map","isoFilterIndex","getIsoFilterIndex","clearTimeout","cancel","CancelToken","source","isPrivateUser","getSegmentFilters","setSelectedFilterBasedOnCategory","currentCategoryId","category","productGroupFilters","categoryOption","option","onInputChange","referenceElement","rect","getBoundingClientRect","pacContainer","adjustedBottom","parseFloat","bottom","scrollY","styleSheets","insertRule","geometry","visibleFilters","northEast","getNorthEast","southWest","getSouthWest","showingForType","_this3","mappedFilter","isFixed","nullable","sortOrder","isActive","_this4","_tags","website","websiteUrl","tags","isProffessional","categories","jsonValue","initialValues","filterMapping","dealersList","dealers","isClickableHeadline","newDealerId","list","child","dealerClick","openAccordion","closeAccordion","getDealerState","dropDownFilter","allowNullable","selectedAlias","filterCheckbox","localValue","selectedValue","initialLoad","setLocalValue","isSelected","filter.selected","_newValue","prevValue","footer","videoPlayer","listFilters","visibleFilterIds","isInOverlay","count","update:filters","hideModal","showTags","initialFilters","openFilters","showBackdrop","reduce","arr","closeModal","showResults","_this5","closeAll","updateFilter","removeAllFilters","removeFilterValue","updateCategory","splice","mobileTagsList","toggleMobileFilters","loginPage","createAccountToggle","showCreateAccount","submitting","errorMessage","loginSubmitting","loginError","loginSuccess","countryUrl","languageAbsoluteUrl","jwtDecode","t","raw","header","showCreateUser","clearData","trackinghash","Cookies","languageName","memberId","message","validateBeforeSubmit","modal","createOverlay","element","modalClosers","destroy","modalTriggers","triggerElement","navigationMessage","isIe","searchTrigger","quickLinks","searchUrl","searchTerm","searchOpen","navigation","setResults","searchInput","goToSearch","setSearchTerm","navigationState","currentNav","prevNav","secondNavigation","findDealer","currentList","children","nav","mainNavigation","selectNode","nodeId","goBack","selectedItem","pop","navigationEl","navigationContentEl","navigationComponent","navigationListeners","wishlistUrl","wishlistQuantity","openSidebar","prevScrollpos","pageYOffset","onscroll","currentScrollPos","searchPageIsActive","specificationNavigation","contains","toggleNavTop","burgerIcon","navigationWhite","navigationBlack","bannerMarket","main","orderPage","order","loading","getOrder","orderId","orderid","goToProduct","product","productList","initialCategoryState","eventData","showToiletFilterButtons","hasBestFit","fit","hasSecondBestFit","hasThirdBestFit","showContentBoxes","hideLoadmore","productListJson","manufacturerFilters","manufacturerFilter","categoryJson","filterIds","scrollToProductList","productListRect","y","objectIsEmpty","obj","prop","hasOwnProperty","insertManufacturerInformation","fitDescription","comp","heroHeading","description","heroText","headingElement","descriptionElement","textContent","newURL","test","getFiltervalue","filterName","filterArray","filterMatch","filterEntry","selectorMatch","trim","beforeDestroy","productListHighlight","triggers","currentTrigger","productPage","productLine","activeBasketLine","activeWishlistLine","punchoutShops","showButtonLoading","isLoadingPunchouts","loadingData","isLoadingAddToBasket","addToBasketState","showSuccess","addedToBasketError","addedToBasket","updateActiveBasketLine","wishlistLines","updateActiveWishlistLine","basketPageUrl","openPowerStep","trackingData","powerStepInstance","$destroy","activeLines","isAddedToFavorites","openPunchoutOverlay","productData","loadingTimer","catalogId","ean","res","shopsInstance","hasPunchoutShops","shops","showPunchoutShops","channel","showFindDealer","getDataQueryObject","focalPoints","handleShopClick","shop","sku","getTrackingClassName","openOverlay","openImage","hAglbFile","jsonFile","productPageSlider","getPrice","_this6","imageToOpen","pageEls","a","sliders","controlFunctions","controlMeasurements","activeControlMeasurements","setActiveTab","tabName","destroySlider","initImageSlider","initVideoSlider","init3603D","isCheckboxChecked","checked","invertState","customScript","setAttribute","head","appendChild","ProductViewerSettings","server","staticAssetsServer","units","initialEffect","initialEffectImageURL","enableCameraPresetControls","enableFunctionControls","enableFullscreenControl","enableMeasurementControls","enableLighting","enablePartsControls","enableCameraControl","background","debugMode","PressalitModelViewer","modelData","functions","measurements","activateFunction","activateMeasurements","localBool","setMeasurementVisibility","slideIndex","sliderRef","overlaySlider","slider","thumbnailRef","overlayThumbnails","thumbs","prevNextButtons","asNavFor","overlayVideoSlider","overlayVideoThumbnails","indexSlider","productRecommendation","percentPosition","on","ready","productTileTemplate","bestFitDictionary","secondBestFitDictionary","thirdBestFitDictionary","getTrackingClass","productFitId","getProductFitClass","getFitText","trackPurchase","searchPage","Cookiebot","selfService","setQuery","getCustomer","getOrders","loadMoreOrder","clearSearch","searchResults","showSearchTerm","totalResultCount","totalResultsString","getTotalResultsCount","temp","getQueryParameterByName","exec","$nextTick","iOS","navigator","userAgent","MSStream","displayImageUrl","showNormalPage","contents","hasResults","countProducts","countArticles","references","hideLoadMore","productsTotal","testimonialList","freeScroll","lazyLoad","mainNavLinks","productPageHeight","offsetHeight","fromTop","section","hash","ev","linkRect","toiletseatFilters","showWebAppButton","levelTwoFilter","setLevelTwoFilter","className","protocol","hostname","subText","iconAlias","stepNumber","filterImages","shapeFilterEndpoint","filter2Disabled","filter3Disabled","filterMeasurementDisabled","valid","getMeasurementImage","shapeFilter","selectedShape","getImageWithMeasurementsByName","images","shapeFilters","getImageByName","names","imageWithMeasurements","isFilterSelected","selectFilter","filterIndex","blacklistedFilters","AndReplacer","output","initialEndpoint","channelFilter","videoGrid","showVideo","cookiesAccepted","checkCookies","playVideo","toggleVideo","renew","loadVideo","consent","marketing","preferences","statistics","wishlist","initComponents","wishlistJson","goToPreviousPage","history","back","sendToRecipient","sendToPressalit","senderCompany","senderPostalCode","recipient","recipientName","recipientEmail","ca","days","expires","date","setTime","toUTCString","navigationService","toggleBackdrop","sidebarId","menuOverlay","_listener","removeEventListener","lazySizes","VeeValidate","classes","locale","documentElement","svg4everybody","VTooltip","anchors","targetNode","pushState","scrollIntoView"],"mappings":"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","file":"app.min.js","sourcesContent":["/**\r\n * @name Navigation\r\n * @desc Store for navigation\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\npressalit.storeFilter = pressalit.storeFilter || new function () {\r\n this.store = null;\r\n\r\n const _state = {\r\n filterManufacturerName: null,\r\n filterProductName: null,\r\n isManufacturerSearch: false,\r\n filters: [],\r\n page: 1,\r\n pageSize: 20,\r\n sorting: 'NameAscending',\r\n total: null,\r\n categoryId: null,\r\n initialCount: null,\r\n products: [],\r\n searching: false,\r\n filterToken: null,\r\n hideServersideRendered: false,\r\n filterMappings: [],\r\n productEndpoint: '/api/catalog/search/SearchProducts',\r\n };\r\n\r\n const _mutations = {\r\n setFilterProductName(s, name) {\r\n s.filterProductName = name;\r\n },\r\n setFilterManufacturerName(s, name) {\r\n s.filterManufacturerName = name;\r\n },\r\n setFilterToiletShape(s, name) {\r\n s.filterToiletShape = name;\r\n },\r\n setFilterToiletMounting(s, name) {\r\n s.filterToiletMounting = name;\r\n },\r\n setFilterToiletMeasurement1(s, name) {\r\n s.filterToiletMeasurement1 = name;\r\n },\r\n setFilterToiletMeasurement2(s, name) {\r\n s.filterToiletMeasurement2 = name;\r\n },\r\n setFilterToiletMeasurement3(s, name) {\r\n s.filterToiletMeasurement3 = name;\r\n },\r\n setIsManufacturerSearch(s, newState) {\r\n s.isManufacturerSearch = newState;\r\n },\r\n setProductEndpoint(s, endpoint) {\r\n s.productEndpoint = endpoint;\r\n },\r\n setFilters(s, filter) {\r\n const { total } = filter;\r\n s.total = (typeof total !== 'undefined') ? total : s.total;\r\n s.page = filter.page || s.page;\r\n s.pageSize = filter.pagesize || s.pageSize;\r\n s.filters = filter.filters || s.filters;\r\n s.categoryId = filter.categoryId || s.categoryId;\r\n s.initialCount = filter.initialCount || s.initialCount;\r\n s.products = filter.products || s.products;\r\n s.filterToken = filter.filterToken || s.filterToken;\r\n\r\n return null;\r\n },\r\n resetFilters(s) {\r\n s.total = 0;\r\n s.pageSize = 20;\r\n s.filters = [];\r\n s.page = 1;\r\n s.categoryId = null;\r\n s.initialCount = 0;\r\n s.products = [];\r\n s.filterToken = null;\r\n },\r\n setProducts(s, products) {\r\n s.products = [\r\n ...s.products,\r\n ...products,\r\n ];\r\n },\r\n toggleSearching(s, value) {\r\n s.searching = value;\r\n },\r\n hideServersideRendered(s) {\r\n s.hideServersideRendered = true;\r\n },\r\n setMappings(s, mappings) {\r\n s.filterMappings = mappings;\r\n },\r\n };\r\n\r\n const _getters = {\r\n getProductEndpoint(s) {\r\n return s.productEndpoint;\r\n },\r\n getFilterManufacturerName(s) {\r\n return s.filterManufacturerName;\r\n },\r\n getFilterProductName(s) {\r\n return s.filterProductName;\r\n },\r\n getFilterToiletShape(s) {\r\n return s.filterToiletShape;\r\n },\r\n getFilterToiletMounting(s) {\r\n return s.filterToiletMounting;\r\n },\r\n getFilterToiletMeasurement1(s) {\r\n return s.filterToiletMeasurement1;\r\n },\r\n getFilterToiletMeasurement2(s) {\r\n return s.filterToiletMeasurement2;\r\n },\r\n getFilterToiletMeasurement3(s) {\r\n return s.filterToiletMeasurement3;\r\n },\r\n getFilters: s => s.filters.map((x) => {\r\n const perfionName = x.properties.perfionFieldName;\r\n if (!perfionName) {\r\n return x;\r\n }\r\n const mapping = s.filterMappings ? s.filterMappings.find(f => f.perfionName === perfionName) : null;\r\n if (mapping != null) {\r\n x.title = mapping.label;\r\n }\r\n return x;\r\n }),\r\n };\r\n\r\n const _actions = {\r\n search({\r\n commit,\r\n state,\r\n dispatch,\r\n }, filterPayload) {\r\n if (!filterPayload.endpoint || state.searching) {\r\n return false;\r\n }\r\n\r\n commit('toggleSearching', true);\r\n const isFilterReset = filterPayload.filters && filterPayload.filters.resetAllFilters;\r\n\r\n if (filterPayload.hideServersideRendered) {\r\n commit('hideServersideRendered');\r\n }\r\n\r\n const payload = {\r\n categoryId: state.categoryId,\r\n page: state.page,\r\n pageSize: state.pageSize,\r\n sorting: state.sorting,\r\n filter: {\r\n filters: filterPayload.filters,\r\n },\r\n };\r\n\r\n let endpoint = filterPayload.endpoint;\r\n if (state.isManufacturerSearch) {\r\n endpoint = '/api/catalog/search/SearchProductsByManufacturer';\r\n }\r\n\r\n return axios.post(endpoint, payload)\r\n .then(({\r\n data,\r\n }) => {\r\n commit('setFilters', {\r\n filters: filterPayload.replaceFilters ? data.filterOptions.options.filters : null,\r\n total: data.total,\r\n filterToken: data.filterOptions.filterToken,\r\n });\r\n\r\n commit('setProducts', data.results);\r\n\r\n if (isFilterReset) {\r\n // Remove the existing query when filters are reset\r\n filterPayload.router.replace({\r\n query: '',\r\n });\r\n } else {\r\n dispatch('updateQuery', filterPayload.router);\r\n }\r\n\r\n commit('toggleSearching', false);\r\n return data;\r\n }, () => {\r\n commit('toggleSearching', false);\r\n });\r\n },\r\n searchInFilters({\r\n state,\r\n }, filterPayload) {\r\n if (!filterPayload.endpoint) {\r\n return false;\r\n }\r\n\r\n const payload = {\r\n categoryId: state.categoryId,\r\n page: state.page,\r\n pageSize: state.pageSize,\r\n sorting: state.sorting,\r\n filter: {\r\n filters: filterPayload.filters,\r\n },\r\n };\r\n return axios.post(filterPayload.endpoint, payload)\r\n .then(({\r\n data,\r\n }) => data);\r\n },\r\n updateQuery({\r\n state,\r\n }, router) {\r\n const query = Object.assign({}, router.currentRoute.query);\r\n query.page = state.page;\r\n query.sort = state.sorting;\r\n query.filter = state.filterToken;\r\n router.replace({\r\n query,\r\n });\r\n },\r\n setMappings({\r\n commit,\r\n }, {\r\n filterMappings,\r\n }) {\r\n commit('setMappings', filterMappings);\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","\r\n/**\r\n * @name String Helpers\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.stringHelpers = pressalit.stringHelpers || new function () {\r\n return {\r\n b64DecodeUnicode(str) {\r\n return decodeURIComponent(Array.prototype.map.call(atob(str), c => `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`).join(''));\r\n },\r\n getCookieValue(name) {\r\n const regex = new RegExp(`(?:(?:^|.*;\\\\s*)${name}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`);\r\n return document.cookie.replace(regex, '$1');\r\n },\r\n\r\n };\r\n}();\r\n","/**\r\n * @name Auth\r\n * @desc Store for Auth\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\nconst clientId = 'pressalit-oauth-website';\r\nconst clientSecret = '1e9K4FEuAR48jeYuGm10TSPotv8OKaV435';\r\n\r\nconst baseUrl = window.location.origin.replace('pressalit.', 'admin.pressalit.');\r\n\r\npressalit.storeAuth = pressalit.storeAuth || new function () {\r\n this.store = null;\r\n const _state = {\r\n accessToken: '',\r\n refreshToken: '',\r\n };\r\n\r\n const _mutations = {\r\n setAccessToken(s, token) {\r\n s.accessToken = token;\r\n pressalit.cookieService.setCookie(\r\n 'pressalit_access_token',\r\n token,\r\n 60, // TODO Set the lifetime based on Access Token lifetime\r\n );\r\n },\r\n setRefreshToken(s, token) {\r\n s.refreshToken = token;\r\n pressalit.cookieService.setCookie(\r\n 'pressalit_refresh_token',\r\n token,\r\n 60, // TODO Set the lifetime based on Refresh Token lifetime\r\n );\r\n },\r\n };\r\n\r\n const _getters = {\r\n isLoggedIn: s => !!s.accessToken,\r\n };\r\n\r\n const _actions = {\r\n init({ commit }) {\r\n const accessToken = pressalit.cookieService.getCookie('pressalit_access_token');\r\n commit('setAccessToken', accessToken);\r\n const refreshToken = pressalit.cookieService.getCookie('pressalit_refresh_token');\r\n commit('setRefreshToken', refreshToken);\r\n },\r\n login({\r\n commit,\r\n }, loginCredentials) {\r\n const payload = {\r\n username: loginCredentials.username,\r\n password: loginCredentials.password,\r\n grant_type: 'password',\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n\r\n };\r\n const req = axios.post(`${baseUrl}/oauth/token`, payload);\r\n req.then(\r\n ({ data }) => {\r\n commit('setAccessToken', data.access_token);\r\n commit('setRefreshToken', data.refresh_token);\r\n },\r\n );\r\n return req;\r\n },\r\n createUser({\r\n commit,\r\n }, userData) {\r\n const payload = {\r\n market: userData.country,\r\n company: userData.company,\r\n email: userData.email,\r\n password: userData.password,\r\n terms: userData.terms,\r\n\r\n };\r\n const req = axios.post(`${baseUrl}/api/member/create`, payload);\r\n req.then(\r\n ({ data }) => {\r\n // TODO handle this later\r\n console.log(commit);\r\n console.log(data);\r\n },\r\n );\r\n return req;\r\n },\r\n logout({\r\n commit,\r\n }) {\r\n commit('setAccessToken', '');\r\n commit('setRefreshToken', '');\r\n pressalit.cookieService.removeCookie(\r\n 'B2B-Basket',\r\n );\r\n window.location.href = '/';\r\n },\r\n refresh({\r\n commit,\r\n state,\r\n }) {\r\n const payload = {\r\n refresh_token: state.refreshToken,\r\n grant_type: 'refresh_token',\r\n client_id: clientId,\r\n client_secret: clientSecret,\r\n\r\n };\r\n const req = axios.post(`${baseUrl}/oauth/token`, payload);\r\n req.then(\r\n ({ data }) => {\r\n commit('setAccessToken', data.access_token);\r\n commit('setRefreshToken', data.refresh_token);\r\n },\r\n () => {\r\n commit('setAccessToken', '');\r\n commit('setRefreshToken', '');\r\n },\r\n );\r\n return req;\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeBasket = pressalit.storeBasket\r\n || new (function () {\r\n this.store = null;\r\n const state = {\r\n quantity: 0,\r\n lines: [],\r\n productIds: [],\r\n isLoading: true,\r\n isSubmitting: false,\r\n totals: [],\r\n errors: {},\r\n culture: null,\r\n siteNodeId: null,\r\n email: '',\r\n deliveryAddress: {\r\n firstName: null,\r\n lastName: null,\r\n addressLine1: null,\r\n addressLine2: null,\r\n company: null,\r\n postalCode: null,\r\n city: null,\r\n country: '',\r\n countryCode: '',\r\n email: null,\r\n },\r\n invoiceAddress: {\r\n firstName: null,\r\n lastName: null,\r\n addressLine1: null,\r\n addressLine2: null,\r\n company: null,\r\n postalCode: null,\r\n city: null,\r\n country: '',\r\n countryCode: '',\r\n email: null,\r\n },\r\n isDeliveryToInvoiceAddress: true,\r\n properties: {\r\n reference: '',\r\n poNumber: '',\r\n requestadeliverydate: 'false',\r\n contactUponDelivery: '',\r\n phoneNumberUponDelivery: '',\r\n deliveryInstructions: '',\r\n comment: '',\r\n customerDeliveryState: '',\r\n shippingDateRequested: '',\r\n },\r\n };\r\n\r\n const mutations = {\r\n setQuantity(s, quantity) {\r\n s.quantity = quantity;\r\n },\r\n setErrors(s, errors) {\r\n s.errors = errors;\r\n },\r\n setLines(s, lines) {\r\n s.lines = lines;\r\n },\r\n setProductsInBasket(s, productIds) {\r\n s.productIds = productIds;\r\n },\r\n\r\n setTotals(s, totals) {\r\n s.totals = totals;\r\n },\r\n setLoading(s) {\r\n s.isLoading = true;\r\n },\r\n setSubmitting(s) {\r\n s.isSubmitting = true;\r\n },\r\n unsetLoading(s) {\r\n s.isLoading = false;\r\n },\r\n unsetSubmitting(s) {\r\n s.isSubmitting = false;\r\n },\r\n setCulture(s, culture) {\r\n s.culture = culture;\r\n },\r\n setSiteNodeId(s, id) {\r\n s.siteNodeId = id;\r\n },\r\n updateBasketLineQuantity(s, payload) {\r\n const index = s.lines.findIndex(\r\n line => line.id === payload.basketLineId,\r\n );\r\n if (index >= 0) {\r\n s.lines[index].quantity = payload.quantity;\r\n }\r\n },\r\n setIsNewCustomer(s, isNewCustomer) {\r\n s.isNewCustomer = !(isNewCustomer === 'False');\r\n },\r\n setProperties(s, properties) {\r\n s.properties = properties;\r\n },\r\n setEmail(s, email) {\r\n s.email = email;\r\n },\r\n setInvoiceAddress(s, address) {\r\n s.invoiceAddress = address || s.invoiceAddress;\r\n },\r\n setDeliveryAddress(s, address) {\r\n s.deliveryAddress = address || s.deliveryAddress;\r\n },\r\n setShippingDetails(s, address) {\r\n s.shippingDetails = address || s.shippingDetails;\r\n },\r\n setDeliveryToInvoiceAddress(s, status) {\r\n s.isDeliveryToInvoiceAddress = status;\r\n },\r\n setComment(s, comment) {\r\n s.properties.comment = comment;\r\n },\r\n };\r\n\r\n const _getters = {\r\n getLines: s => s.lines,\r\n getLineById: s => id => s.lines.find(x => x.id === id),\r\n isLoading: s => s.isLoading,\r\n isSubmitting: s => s.isSubmitting,\r\n getTotals: s => s.totals,\r\n getQuantity: s => s.quantity,\r\n isAddedToBasket: s => id => s.productIds.indexOf(id) > -1,\r\n getCulture: s => s.culture,\r\n getSiteNodeId: s => s.siteNodeId,\r\n getErrors: s => s.errors,\r\n isNewCustomer: s => s.isNewCustomer,\r\n disabledInvoiceFields: s => s.properties.hasERPInvoiceAddress === 'true',\r\n email: s => s.email,\r\n invoiceAddress: s => s.invoiceAddress || {},\r\n deliveryAddress: s => s.deliveryAddress || {},\r\n deliveryDetails: s => s.deliveryDetails,\r\n isDeliveryToInvoiceAddress: s => s.isDeliveryToInvoiceAddress,\r\n reference: s => s.properties.reference,\r\n poNumber: s => s.properties.poNumber,\r\n shippingDateRequested: s => s.properties.shippingDateRequested,\r\n customerDeliveryState: s => s.properties.customerDeliveryState,\r\n requestadeliverydate: s => s.properties.requestadeliverydate === 'true',\r\n contactUponDelivery: s => s.properties.contactUponDelivery,\r\n phoneNumberUponDelivery: s => s.properties.phoneNumberUponDelivery,\r\n deliveryInstructions: s => s.properties.deliveryInstructions,\r\n comment: s => s.properties.comment,\r\n properties: s => s.properties,\r\n hasError: s => Object.keys(s.errors).some((key) => {\r\n const value = s.errors[key];\r\n if (value && Array.isArray(value) && value.length) {\r\n return true;\r\n }\r\n if ((typeof value === 'object' || typeof value === 'function') && (value !== null) && Object.keys(value).length) {\r\n return true;\r\n }\r\n return false;\r\n }),\r\n };\r\n\r\n const actions = {\r\n getSummaryFromCookie({\r\n commit,\r\n }) {\r\n // Grabs cookie and parse it to json\r\n try {\r\n const result = pressalit.stringHelpers.getCookieValue('B2B-Basket');\r\n if (!result) {\r\n return;\r\n }\r\n let cookieBase64 = '{}';\r\n cookieBase64 = pressalit.stringHelpers.b64DecodeUnicode(\r\n result,\r\n );\r\n\r\n const json = cookieBase64 ? JSON.parse(cookieBase64) : '{}';\r\n if (!json.summary.lineCount) {\r\n return;\r\n }\r\n\r\n commit('setQuantity', json.summary.quantity);\r\n commit('setProductsInBasket', json.summary.productIds);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n getBasket({\r\n commit,\r\n }) {\r\n const req = axios.get('/api/b2b/webshop/basket/getBasket');\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n commit('unsetLoading');\r\n commit('setErrors', data.result.errors);\r\n commit('setLines', data.basket.lines);\r\n commit('setQuantity', data.summary.quantity);\r\n commit('setTotals', data.basket.orderTotals);\r\n commit('setIsNewCustomer', data.basket.properties.isNewCustomer);\r\n return data;\r\n },\r\n () => {\r\n // TODO Error handling\r\n commit('unsetLoading');\r\n },\r\n );\r\n return req;\r\n },\r\n\r\n getCheckout({\r\n commit,\r\n }) {\r\n commit('setLoading');\r\n const req = axios.get('/api/b2b/webshop/checkout/getCheckout');\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n commit('unsetLoading');\r\n commit('setErrors', data.result.errors);\r\n commit('setEmail', data.checkout.email);\r\n commit('setDeliveryToInvoiceAddress', data.checkout.isDeliveryToInvoiceAddress);\r\n commit('setInvoiceAddress', data.checkout.invoiceAddress);\r\n commit('setDeliveryAddress', data.checkout.deliveryAddress);\r\n commit('setLines', data.checkout.basket.lines);\r\n commit('setTotals', data.checkout.basket.orderTotals);\r\n commit('setProperties', data.checkout.properties);\r\n commit('setIsNewCustomer', data.checkout.properties.isNewCustomer);\r\n\r\n return data;\r\n },\r\n () => {\r\n commit('unsetLoading');\r\n // TODO Error handling\r\n },\r\n );\r\n return req;\r\n },\r\n\r\n updateQuantity({\r\n commit,\r\n }, payload) {\r\n if (payload.quantity > 999) {\r\n payload.quantity = 999;\r\n }\r\n const params = {\r\n basketLineId: payload.basketLineId,\r\n quantity: payload.quantity,\r\n };\r\n const req = axios.put(\r\n `/api/b2b/webshop/basket/UpdateBasketLine?basketlineid=${\r\n params.basketLineId\r\n }&quantity=${params.quantity}`,\r\n );\r\n commit('setErrors', {});\r\n req.then(({ data }) => {\r\n commit('setErrors', data.result.errors);\r\n commit('updateBasketLineQuantity', params);\r\n commit('setLines', data.basket.lines);\r\n commit('setTotals', data.basket.orderTotals);\r\n if (data.summary && data.summary.quantity) {\r\n commit('setQuantity', data.summary.quantity);\r\n }\r\n });\r\n },\r\n\r\n removeBasketLine({\r\n commit,\r\n }, basketlineId) {\r\n // eslint-disable-line\r\n const params = {\r\n basketlineId,\r\n };\r\n const req = axios.delete(\r\n '/api/b2b/webshop/basket/RemoveBasketLine', {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n // Update values\r\n commit('setLines', data.basket.lines);\r\n commit('setTotals', data.basket.orderTotals);\r\n commit('setQuantity', data.summary.quantity);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n\r\n submit({\r\n commit,\r\n getters,\r\n }) {\r\n const payload = {\r\n invoiceAddress: getters.invoiceAddress,\r\n deliveryAddress: getters.deliveryAddress,\r\n isDeliveryToInvoiceAddress: getters.isDeliveryToInvoiceAddress,\r\n email: getters.email,\r\n };\r\n\r\n // Update the user details\r\n commit('setErrors', {});\r\n commit('setSubmitting');\r\n return new Promise((resolve, reject) => {\r\n axios.post(\r\n '/api/b2b/webshop/checkout/setCheckoutProperties',\r\n getters.properties,\r\n ).then(() => {\r\n axios.put(\r\n '/api/b2b/webshop/checkout/UpdateDetails',\r\n payload,\r\n ).then(\r\n ({ data }) => {\r\n if (!data.result.isSuccess || !data.result.operationCompleted) {\r\n commit('unsetSubmitting');\r\n commit('setErrors', data.result.errors);\r\n throw data.result.errors;\r\n }\r\n // Submit order\r\n // eslint-disable-next-line consistent-return\r\n return axios\r\n .post('/api/b2b/webshop/checkout/GotoPayment')\r\n .then(\r\n (paymentResponse) => {\r\n const result = paymentResponse.data.result;\r\n if (!result.operationCompleted || !result.isSuccess\r\n ) {\r\n commit('unsetSubmitting');\r\n commit('setErrors', result.errors);\r\n reject();\r\n }\r\n resolve(paymentResponse.data.response);\r\n },\r\n () => {\r\n commit('unsetSubmitting');\r\n commit('setErrors', {\r\n api: ['500'],\r\n });\r\n reject();\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n () => {\r\n commit('unsetSubmitting');\r\n commit('setErrors', {\r\n api: ['500'],\r\n });\r\n reject();\r\n },\r\n );\r\n }, () => {\r\n commit('unsetSubmitting');\r\n commit('setErrors', {\r\n api: ['500'],\r\n });\r\n reject();\r\n });\r\n });\r\n },\r\n\r\n addToBasket({\r\n commit,\r\n }, {\r\n productId,\r\n quantity,\r\n }) {\r\n const params = {\r\n productId,\r\n quantity,\r\n };\r\n\r\n const req = axios.post(\r\n '/api/b2b/webshop/basket/AddToBasket',\r\n null, {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n if (\r\n !data.result.operationCompleted\r\n ) {\r\n // TODO Error handling\r\n return;\r\n }\r\n // Set basket lines here, so we don't need to call getBasket API\r\n commit('setLines', data.basket.lines);\r\n commit('setTotals', data.basket.orderTotals);\r\n commit('setQuantity', data.summary.quantity);\r\n commit('setProductsInBasket', data.summary.productIds);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n return req;\r\n },\r\n\r\n addReplicatedBasketLine({\r\n commit,\r\n }, {\r\n productId,\r\n }) {\r\n const params = {\r\n productId: productId.productId,\r\n quantity: 1,\r\n forceNewBasketLine: true,\r\n };\r\n\r\n const req = axios.post(\r\n '/api/b2b/webshop/basket/AddToBasket',\r\n null, {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n if (\r\n !data.result.operationCompleted\r\n ) {\r\n // TODO Error handling\r\n return;\r\n }\r\n // Set basket lines here, so we don't need to call getBasket API\r\n commit('setLines', data.basket.lines);\r\n commit('setTotals', data.basket.orderTotals);\r\n commit('setQuantity', data.summary.quantity);\r\n commit('setProductsInBasket', data.summary.productIds);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n return req;\r\n },\r\n\r\n addPoNumber({\r\n commit,\r\n }, { basketLineId, poNumber }) {\r\n const req = axios.post(\r\n `/api/b2b/webshop/basket/SetPoOnBasketLine?basketlineid=${basketLineId}&poNumber=${poNumber}`,\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n // Update values\r\n commit('setLines', data.basket.lines);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n\r\n deletePoNumber({\r\n commit,\r\n }, basketLineId) {\r\n const req = axios.delete(\r\n `/api/b2b/webshop/basket/RemovePOOnBasketLine?basketlineid=${basketLineId}`,\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n // Update values\r\n commit('setLines', data.basket.lines);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n state,\r\n getters: _getters,\r\n mutations,\r\n actions,\r\n };\r\n })();\r\n","/**\r\n * @name Dictionaries\r\n * @desc Store for dictionaries\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeDictionaries = pressalit.storeDictionaries || new function () {\r\n this.store = null;\r\n const _state = {\r\n culture: 'da', // Hardcoded, but could come from api\r\n promise: null,\r\n dictionaries: [],\r\n };\r\n\r\n const _mutations = {\r\n setAll(s, dictionaries) {\r\n s.dictionaries = dictionaries;\r\n },\r\n setPromise(s, promise) {\r\n s.promise = promise;\r\n },\r\n setCulture(s, culture) {\r\n s.culture = culture;\r\n },\r\n };\r\n\r\n const _getters = {\r\n getByKey: s => (key) => {\r\n const item = s.dictionaries.find(x => x.key === key);\r\n if (!item) {\r\n return '';\r\n }\r\n const cultureVariant = item.translations.find(x => x.culture === s.culture);\r\n if (!cultureVariant) {\r\n return '';\r\n }\r\n\r\n return cultureVariant.value;\r\n },\r\n };\r\n\r\n const _actions = {\r\n setCulture({\r\n commit,\r\n }, culture) {\r\n commit('setCulture', culture);\r\n },\r\n getAll({\r\n commit,\r\n state,\r\n }) {\r\n if (state.promise) {\r\n return state.promise;\r\n }\r\n\r\n if (state.dictionaries.length) {\r\n return Promise.resolve();\r\n }\r\n\r\n const req = axios.get('/api/headless/dictionary/FetchAll').then(({\r\n data,\r\n }) => {\r\n commit('setAll', data);\r\n commit('setPromise', null);\r\n });\r\n commit('setPromise', req);\r\n\r\n return req;\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","/**\r\n * @name Navigation\r\n * @desc Store for navigation\r\n */\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeNavigation = pressalit.storeNavigation\r\n || new (function () {\r\n this.store = null;\r\n const _state = {\r\n isSidebarOpen: false,\r\n isFullWidth: false,\r\n isSearchOpen: false,\r\n showOverlay: false,\r\n component: null,\r\n data: null,\r\n navigationProps: {},\r\n listeners: {},\r\n };\r\n\r\n const _mutations = {\r\n toggleSidebar(s, isOpen = null) {\r\n s.isSidebarOpen = isOpen || !s.isSidebarOpen;\r\n s.showOverlay = isOpen || !s.showOverlay;\r\n\r\n if (s.showOverlay) {\r\n window.scrollTo(0, 0);\r\n document\r\n .getElementsByTagName('html')[0]\r\n .classList.add('search-results__lock-body-scroll');\r\n } else {\r\n document\r\n .getElementsByTagName('html')[0]\r\n .classList.remove('search-results__lock-body-scroll');\r\n\r\n setTimeout(() => {\r\n s.isFullWidth = false;\r\n s.component = null;\r\n }, 300);\r\n }\r\n },\r\n toggleOverlay(s, show = null) {\r\n s.showOverlay = show || !s.showOverlay;\r\n if (!s.showOverlay) {\r\n s.isSidebarOpen = false;\r\n s.isSearchOpen = false;\r\n }\r\n\r\n if (s.showOverlay) {\r\n window.scrollTo(0, 0);\r\n document\r\n .getElementsByTagName('html')[0]\r\n .classList.add('search-results__lock-body-scroll');\r\n } else {\r\n document\r\n .getElementsByTagName('html')[0]\r\n .classList.remove('search-results__lock-body-scroll');\r\n setTimeout(() => {\r\n s.isFullWidth = false;\r\n s.component = null;\r\n }, 300);\r\n }\r\n },\r\n toggleSearch(s, isOpen = null) {\r\n s.isSearchOpen = isOpen || !s.isSearchOpen;\r\n },\r\n setIsFullWidth(s, isFullWidth) {\r\n s.isFullWidth = isFullWidth;\r\n },\r\n setComponent(s, component) {\r\n s.component = component;\r\n },\r\n setData(s, data) {\r\n s.data = data;\r\n },\r\n setNavigationProps(s, props) {\r\n s.navigationProps = props;\r\n },\r\n setListeners(s, listeners) {\r\n s.listeners = listeners;\r\n },\r\n };\r\n\r\n const _getters = {};\r\n\r\n const _actions = {};\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n })();\r\n","/**\r\n * @name Navigation\r\n * @desc Store for navigation\r\n */\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeLanguageModal = pressalit.storeLanguageModal\r\n || new (function () {\r\n this.store = null;\r\n const _state = {\r\n isOpen: false,\r\n current: null,\r\n };\r\n\r\n const _mutations = {\r\n toggle(s) {\r\n s.isOpen = !s.isOpen;\r\n },\r\n setCurrent(s, payload) {\r\n s.current = payload;\r\n },\r\n };\r\n\r\n const _getters = {};\r\n\r\n const _actions = {};\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Vuex = Vuex; // eslint-disable-line\r\n\r\npressalit.vuex = pressalit.vuex || new function () {\r\n this.store = null;\r\n Vue.use(Vuex);\r\n\r\n this.init = function () {\r\n this.store = new Vuex.Store();\r\n this.store.registerModule('auth', pressalit.storeAuth.store);\r\n this.store.registerModule('dictionaries', pressalit.storeDictionaries.store);\r\n this.store.registerModule('basket', pressalit.storeBasket.store);\r\n this.store.registerModule('navigation', pressalit.storeNavigation.store);\r\n this.store.registerModule('filter', pressalit.storeFilter.store);\r\n this.store.registerModule('agent', pressalit.storeAgent.store);\r\n this.store.registerModule('print', pressalit.storePrint.store);\r\n this.store.registerModule('languagemodal', pressalit.storeLanguageModal.store);\r\n this.store.registerModule('dealers', pressalit.storeDealers.store);\r\n this.store.registerModule('tracking', pressalit.tracking.store);\r\n this.store.registerModule('selfService', pressalit.storeSelfService.store);\r\n this.store.registerModule('wishlist', pressalit.storeWishlist.store);\r\n\r\n this.store.dispatch('auth/init');\r\n const culture = document.getElementById('js-site-culture').value;\r\n if (culture) {\r\n this.store.dispatch('dictionaries/setCulture', culture);\r\n }\r\n\r\n\r\n // Connect Axios and Vuex\r\n axios.interceptors.request.use(\r\n (config) => {\r\n // Add header if user is signed in\r\n const token = this.store.state.auth.accessToken;\r\n if (token) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n }\r\n return config;\r\n },\r\n error => Promise.reject(error),\r\n );\r\n\r\n // Handle refresh token setup\r\n let isAlreadyFetchingAccessToken = false;\r\n let subscribers = [];\r\n\r\n const onAccessTokenFetched = (accessToken) => {\r\n // When the refresh is successful, we start retrying the requests one by one and empty the queue\r\n subscribers.forEach(callback => callback(accessToken));\r\n subscribers = [];\r\n };\r\n\r\n const addSubscriber = (callback) => {\r\n subscribers.push(callback);\r\n };\r\n const handle403 = () => {\r\n subscribers = []; // Clean the queue of requests\r\n this.store.dispatch('auth/logout');\r\n };\r\n\r\n const handle401 = (response) => {\r\n const request = response.config;\r\n if (request.__isRetryRequest) {\r\n Promise.reject(request);\r\n }\r\n const retryOriginalRequest = new Promise((resolve) => {\r\n /* We need to add the request retry to the queue\r\n since there another request that already attempt to\r\n refresh the token */\r\n addSubscriber((accessToken) => {\r\n request.headers.Authorization = `Bearer ${accessToken}`;\r\n request.__isRetryRequest = true;\r\n resolve(axios(request));\r\n });\r\n });\r\n\r\n if (!isAlreadyFetchingAccessToken) {\r\n isAlreadyFetchingAccessToken = true;\r\n this.store.dispatch('auth/refresh').then(() => {\r\n const newToken = this.store.state.auth.accessToken;\r\n onAccessTokenFetched(newToken);\r\n isAlreadyFetchingAccessToken = false;\r\n }, () => {\r\n isAlreadyFetchingAccessToken = false;\r\n handle403();\r\n return Promise.reject(request);\r\n });\r\n }\r\n return retryOriginalRequest;\r\n };\r\n\r\n axios.interceptors.response.use(\r\n response => response,\r\n (error) => {\r\n const { response } = error;\r\n if (!response) {\r\n return Promise.reject(error);\r\n }\r\n try {\r\n if (response.status !== 401 || response.config.__isRetryRequest) {\r\n return Promise.reject(error);\r\n }\r\n return handle401(response);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n },\r\n );\r\n };\r\n}();\r\n","/**\r\n * @name Dictionaries\r\n * @desc Store for dictionaries\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeAgent = pressalit.storeAgent || new function () {\r\n this.store = null;\r\n const _state = {\r\n };\r\n\r\n const _mutations = {\r\n };\r\n\r\n const _getters = {\r\n isAgentIe: () => typeof document.documentMode !== 'undefined',\r\n };\r\n\r\n const _actions = {\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","/**\r\n * @name Print\r\n * @desc Store for print\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storePrint = pressalit.storePrint || new function () {\r\n this.store = null;\r\n const _state = {\r\n wishlistPrinting: false,\r\n };\r\n\r\n const _mutations = {\r\n printWishlist(s) {\r\n s.wishlistPrinting = true;\r\n },\r\n stopWishlistPrint(s) {\r\n s.wishlistPrinting = false;\r\n },\r\n };\r\n\r\n const _getters = {\r\n isWishlistPrinting: s => s.wishlistPrinting,\r\n };\r\n\r\n const _actions = {\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","/**\r\n * @name Dealers\r\n * @desc Store for Dealers\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeDealers = pressalit.storeDealers || new function () {\r\n this.store = null;\r\n const _state = {\r\n wishlistPrinting: false,\r\n };\r\n\r\n const _mutations = {};\r\n\r\n const _getters = {};\r\n\r\n const _actions = {\r\n fetch({\r\n rootState,\r\n }, payload) {\r\n const language = rootState.dictionaries.culture;\r\n const request = {\r\n page: payload.page || 0,\r\n pageSize: payload.pageSize || 0,\r\n latitude: payload.latitude,\r\n longitude: payload.longitude,\r\n radius: payload.radius || null,\r\n languageCode: language,\r\n filter: payload.filters || {},\r\n term: payload.term || '',\r\n isWebshop: payload.isWebshop,\r\n isPrivate: payload.isPrivate,\r\n bottomRight: payload.bottomRight,\r\n topLeft: payload.topLeft,\r\n };\r\n const config = {\r\n cancelToken: payload.cancelSource ? payload.cancelSource.token : null,\r\n };\r\n\r\n return axios.post('/api/content/search/SearchDealersGeospatial', request, config).then(result => result.data);\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\nfunction uudi() {\r\n let dt = new Date().getTime();\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (dt + Math.random() * 16) % 16 | 0; // eslint-disable-line\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16); // eslint-disable-line\r\n });\r\n return uuid;\r\n}\r\nfunction toGoogleMoney(val) {\r\n return val ? Number(val.toFixed(2)) : 0;\r\n}\r\nfunction mapBasketLine(line) {\r\n return {\r\n item_id: line.erpId || '',\r\n item_name: line.productTitle || '',\r\n item_category: line.properties['product.categoryId'] || null,\r\n item_category2: line.properties['product.rootCategoryId'] || line.properties['product.masterProductId'] || null,\r\n discount: toGoogleMoney(line.productPrice.discount.value) || 0,\r\n price: toGoogleMoney(line.productPrice.total.value) || 0,\r\n currency: line.productPrice.total.currency || '',\r\n item_variant: line.variantTitle,\r\n quantity: line.quantity,\r\n taxable: line.taxable || '',\r\n requiresShipping: line.requiresShipping || false,\r\n };\r\n}\r\npressalit.tracking = pressalit.tracking || new function () {\r\n this.store = null;\r\n const _state = {\r\n };\r\n\r\n const _mutations = {\r\n };\r\n\r\n const _getters = {\r\n };\r\n\r\n const _actions = {\r\n trackEcommerce({ }, payload) { // eslint-disable-line\r\n window.dataLayer = window.dataLayer || [];\r\n let totalPrice = 0;\r\n payload.products.forEach((p) => { totalPrice += p.price; });\r\n\r\n const data = {\r\n event: 'purchase',\r\n transactionId: uudi(),\r\n transactionAffiliation: payload.affiliation,\r\n transactionTotal: totalPrice,\r\n transactionTax: 25,\r\n transactionProducts: payload.products,\r\n };\r\n\r\n window.dataLayer.push(data);\r\n },\r\n trackToiletSeatManufacturerSearch({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'toiletSeatManufacturerSearch',\r\n action: 'click',\r\n manufacturerTitle: payload.manufacturerTitle,\r\n modelTitle: payload.modelTitle,\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n trackViewBasket({ }, lines) { // eslint-disable-line\r\n if (lines && lines.length) {\r\n const data = {\r\n event: 'view_cart',\r\n ecommerce: {\r\n currency: lines.length ? lines[0].productPrice.unitPrice.currency : null,\r\n items: lines.map((line, index) => {\r\n const basketLine = mapBasketLine(line);\r\n basketLine.index = index + 1;\r\n return basketLine;\r\n }),\r\n },\r\n };\r\n window.dataLayer.push(data);\r\n }\r\n },\r\n trackViewWishList({ }, lines) { // eslint-disable-line\r\n if (lines && lines.length) {\r\n const data = {\r\n event: 'view_wishlist',\r\n ecommerce: {\r\n currency: lines.length ? lines[0].productPrice.unitPrice.currency : null,\r\n items: lines.map((line, index) => {\r\n const basketLine = mapBasketLine(line);\r\n basketLine.index = index + 1;\r\n return basketLine;\r\n }),\r\n },\r\n };\r\n window.dataLayer.push(data);\r\n }\r\n },\r\n trackToiletSeatOverlay({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'overlayClick',\r\n action: 'click',\r\n overlayChoice: payload.overlayChoice,\r\n overlayTitle: payload.overlayTitle,\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n trackToiletSeatShapeSearch({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'toiletSeatShapeSearch',\r\n action: 'click',\r\n toiletShape: payload.toiletShape,\r\n toiletMounting: payload.toiletMounting,\r\n toiletMeasurement1: payload.toiletMeasurement1,\r\n toiletMeasurement2: payload.toiletMeasurement2,\r\n toiletMeasurement3: payload.toiletMeasurement3,\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n createUser({ }, customerid) { // eslint-disable-line\r\n const data = {\r\n event: 'create_user',\r\n customerid,\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n login({ }, customerid) { // eslint-disable-line\r\n const data = {\r\n event: 'login',\r\n customerid,\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n itemView({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'select_item',\r\n action: 'click',\r\n ecommerce: {\r\n items: [\r\n {\r\n item_id: payload.productNumber || '',\r\n item_name: payload.productName || '',\r\n item_url: payload.productUrl || '',\r\n item_status: payload.lineStatus,\r\n item_price: toGoogleMoney(payload.lineAmount.value),\r\n quantity: payload.lineQuantity,\r\n },\r\n ],\r\n },\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n addToCart({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'add_to_cart',\r\n action: 'click',\r\n ecommerce: {\r\n items: [\r\n {\r\n item_id: payload.productId || '',\r\n item_name: payload.productName || '',\r\n item_category: payload.productCategory,\r\n item_category2: payload.parentProductId,\r\n quantity: payload.productQuantity,\r\n },\r\n ],\r\n },\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n addToWishList({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'add_to_wishlist',\r\n action: 'click',\r\n ecommerce: {\r\n items: [\r\n {\r\n item_id: payload.productId || '',\r\n item_name: payload.productName || '',\r\n item_category: payload.productCategory,\r\n item_category2: payload.parentProductId,\r\n quantity: payload.productQuantity,\r\n },\r\n ],\r\n },\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n removeFromWishList({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'remove_from_wishlist',\r\n action: 'click',\r\n ecommerce: {\r\n items: [\r\n {\r\n item_id: payload.productId || '',\r\n item_name: payload.productName || '',\r\n item_category: payload.productCategory,\r\n item_category2: payload.parentProductId,\r\n quantity: payload.productQuantity,\r\n },\r\n ],\r\n },\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n trackToiletSeatOverlay({ }, payload) { // eslint-disable-line\r\n const data = {\r\n event: 'overlayClick',\r\n action: 'click',\r\n overlayChoice: payload.overlayChoice,\r\n overlayTitle: payload.overlayTitle,\r\n };\r\n window.dataLayer.push(data);\r\n },\r\n trackAddOrRemoveToBasket({ }, payload) { // eslint-disable-line\r\n const eventName = payload.event ? payload.event : 'add_to_cart';\r\n const quantity = () => {\r\n let value = null;\r\n\r\n switch (payload.action) {\r\n case 'increase':\r\n value = 1;\r\n break;\r\n case 'decrease':\r\n value = -1;\r\n break;\r\n case 'remove':\r\n value = payload.basketLine.quantity;\r\n break;\r\n case 'changeQuantity':\r\n if (payload.changedQuantityTo) {\r\n value = payload.changedQuantityTo;\r\n }\r\n break;\r\n default:\r\n value = payload.basketLine.quantity;\r\n }\r\n return value;\r\n };\r\n\r\n const data = {\r\n event: eventName,\r\n ecommerce: {\r\n items: [\r\n {\r\n item_id: payload.basketLine.erpId || '',\r\n item_name: payload.basketLine.productTitle || '',\r\n item_category: payload.basketLine.properties['product.categoryId'] || null,\r\n item_category2: payload.basketLine.properties['product.rootCategoryId'] || null,\r\n quantity: quantity(),\r\n },\r\n ],\r\n },\r\n };\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push(data);\r\n },\r\n trackBeginCheckout({ }, lines) { // eslint-disable-line\r\n if (lines && lines.length) {\r\n const data = {\r\n event: 'begin_checkout',\r\n ecommerce: {\r\n currency: lines.length ? lines[0].productPrice.unitPrice.currency : null,\r\n items: lines.map((line, index) => {\r\n const basketLine = mapBasketLine(line);\r\n basketLine.index = index + 1;\r\n return basketLine;\r\n }),\r\n },\r\n };\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push(data);\r\n }\r\n },\r\n trackSubmitPurchase({ }, lines) { // eslint-disable-line\r\n if (!lines.lines.length) {\r\n return;\r\n }\r\n if (lines && lines.lines && lines.lines.length) {\r\n const data = {\r\n event: 'purchase',\r\n ecommerce: {\r\n transaction_id: lines.transactionId,\r\n items: lines.lines.map((line, index) => {\r\n const basketLine = mapBasketLine(line);\r\n basketLine.index = index + 1;\r\n return basketLine;\r\n }),\r\n },\r\n };\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push(data);\r\n }\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","/**\r\n * @name SelfService\r\n * @desc Store for SelfService\r\n */\r\n\r\n\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\n\r\npressalit.storeSelfService = pressalit.storeSelfService || new function () {\r\n this.store = null;\r\n Vue.use(VueRouter);\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n const _state = {\r\n customerInfo: {},\r\n customerOrders: [],\r\n fetchingData: undefined,\r\n showLoadmore: false,\r\n loadMore: false,\r\n page: 1,\r\n term: '',\r\n filter: '',\r\n };\r\n\r\n const _mutations = {\r\n setCustomerInfo(s, customerInfo) {\r\n s.customerInfo = customerInfo;\r\n },\r\n setCustomerOrders(s, customerOrders) {\r\n s.customerOrders = customerOrders;\r\n },\r\n setFetchingData(s, fetchingData) {\r\n s.fetchingData = fetchingData;\r\n },\r\n setPage(s, page) {\r\n s.page = page;\r\n },\r\n setTerm(s, term) {\r\n s.term = term;\r\n },\r\n setShowLoadmore(s, showLoadmore) {\r\n s.showLoadmore = showLoadmore;\r\n },\r\n setLoadMore(s, loadMore) {\r\n s.loadMore = loadMore;\r\n },\r\n setFilter(s, filter) {\r\n s.filter = filter;\r\n },\r\n };\r\n\r\n const _getters = {\r\n };\r\n\r\n const _actions = {\r\n getCustomerInfo({\r\n commit,\r\n }) {\r\n const req = axios.get('/api/frontend/selfservice/GetCustomer');\r\n req.then(\r\n ({ data }) => {\r\n if (!data.isSuccess) {\r\n commit('setCustomerInfo', null);\r\n }\r\n commit('setCustomerInfo', data.data);\r\n },\r\n ).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred', error);\r\n });\r\n return req;\r\n },\r\n getCustomerOrders({\r\n state,\r\n commit,\r\n dispatch,\r\n }, firstCall) {\r\n let req = {};\r\n if (!firstCall) {\r\n const newPage = state.page + 1;\r\n commit('setPage', newPage);\r\n }\r\n\r\n req = axios.get(`/api/frontend/selfservice/getpagedcustomerorders?pageSize=10¤tPage=${state.page}&term=${state.term}&filter=${state.filter}`);\r\n\r\n req.then(\r\n ({ data }) => {\r\n if (!data.isSuccess || data.error) {\r\n commit('setCustomerOrders', []);\r\n }\r\n\r\n if (firstCall) {\r\n commit('setCustomerOrders', data.data.orders);\r\n } else {\r\n commit('setCustomerOrders', state.customerOrders.concat(data.data.orders));\r\n }\r\n commit('setShowLoadmore', data.data.orders.length === 10);\r\n },\r\n ).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred', error);\r\n }).finally(() => {\r\n dispatch('updateQuery');\r\n if (firstCall) {\r\n commit('setFetchingData', false);\r\n } else {\r\n commit('setLoadMore', false);\r\n }\r\n });\r\n },\r\n updateQuery({ state }) {\r\n const query = new URL(window.location).pathname;\r\n const url = `${query}?page=${state.page}&term=${state.term}&filter=${state.filter}`;\r\n\r\n router.replace(url);\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n actions: _actions,\r\n getters: _getters,\r\n state: _state,\r\n mutations: _mutations,\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\npressalit.storeWishlist = pressalit.storeWishlist\r\n || new (function () {\r\n this.store = null;\r\n\r\n const state = {\r\n quantity: 0,\r\n lines: [],\r\n productIds: [],\r\n isLoading: false,\r\n isSubmitting: false,\r\n totals: [],\r\n errors: [],\r\n culture: null,\r\n siteNodeId: null,\r\n };\r\n\r\n const mutations = {\r\n setQuantity(s, quantity) {\r\n s.quantity = quantity;\r\n },\r\n setErrors(s, errors) {\r\n s.errors = errors;\r\n },\r\n setLines(s, lines) {\r\n s.lines = lines;\r\n },\r\n setProductsInWishlist(s, productIds) {\r\n s.productIds = productIds;\r\n },\r\n setTotals(s, totals) {\r\n s.totals = totals;\r\n },\r\n setLoading(s) {\r\n s.isLoading = true;\r\n },\r\n setSubmitting(s) {\r\n s.isSubmitting = true;\r\n },\r\n unsetLoading(s) {\r\n s.isLoading = false;\r\n },\r\n unsetSubmitting(s) {\r\n s.isSubmitting = false;\r\n },\r\n setCulture(s, culture) {\r\n s.culture = culture;\r\n },\r\n setSiteNodeId(s, id) {\r\n s.siteNodeId = id;\r\n },\r\n updateWishlistLineQuantity(s, payload) {\r\n const index = s.lines.findIndex(\r\n line => line.id === payload.basketLineId,\r\n );\r\n if (index >= 0) {\r\n s.lines[index].quantity = payload.quantity;\r\n }\r\n },\r\n };\r\n\r\n const _getters = {\r\n getLines: s => s.lines,\r\n getLineById: s => id => s.lines.find(x => x.id === id),\r\n isLoading: s => s.isLoading,\r\n isSubmitting: s => s.isSubmitting,\r\n getTotals: s => s.totals,\r\n getQuantity: s => s.quantity,\r\n getCulture: s => s.culture,\r\n getSiteNodeId: s => s.siteNodeId,\r\n getErrors: s => s.errors,\r\n };\r\n\r\n const actions = {\r\n getSummaryFromCookie({\r\n commit,\r\n }) {\r\n // Grabs cookie and parse it to json\r\n try {\r\n const result = pressalit.stringHelpers.getCookieValue('Basket');\r\n\r\n if (!result) {\r\n return;\r\n }\r\n let cookieBase64 = '{}';\r\n cookieBase64 = pressalit.stringHelpers.b64DecodeUnicode(\r\n result,\r\n );\r\n const json = cookieBase64 ? JSON.parse(cookieBase64) : '{}';\r\n if (!json.summary.lineCount) {\r\n return;\r\n }\r\n commit('setQuantity', json.summary.quantity);\r\n commit('setProductsInWishlist', json.summary.productIds);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n getWishlist({\r\n commit,\r\n }) {\r\n commit('setLoading');\r\n const req = axios.get('/api/webshop/basket/getBasket');\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n commit('unsetLoading');\r\n commit('setLines', data.basket.lines);\r\n return data;\r\n },\r\n () => {\r\n commit('unsetLoading');\r\n // TODO Error handling\r\n },\r\n );\r\n return req;\r\n },\r\n\r\n // getCheckout({\r\n // commit,\r\n // }) {\r\n // commit('setLoading');\r\n // const req = axios.get('/api/webshop/checkout/getCheckout');\r\n // req.then(\r\n // ({\r\n // data,\r\n // }) => {\r\n // commit('unsetLoading');\r\n // commit('setLines', data.checkout.basket.lines);\r\n // return data;\r\n // },\r\n // () => {\r\n // commit('unsetLoading');\r\n // // TODO Error handling\r\n // },\r\n // );\r\n // return req;\r\n // },\r\n\r\n updateQuantity({\r\n commit,\r\n }, payload) {\r\n let quantity = 1;\r\n if (payload.quantity > 0) {\r\n quantity = payload.quantity;\r\n }\r\n const params = {\r\n basketLineId: payload.basketLineId,\r\n quantity,\r\n };\r\n const req = axios.put(\r\n `/api/webshop/basket/UpdateBasketLine?basketlineid=${\r\n params.basketLineId\r\n }&quantity=${params.quantity}`,\r\n );\r\n req.then(({ data }) => {\r\n commit('updateWishlistLineQuantity', params);\r\n if (data.summary && data.summary.quantity) {\r\n commit('setQuantity', data.summary.quantity);\r\n }\r\n });\r\n },\r\n\r\n remove({\r\n commit,\r\n }, basketlineId) {\r\n // eslint-disable-line\r\n const params = {\r\n basketlineId,\r\n };\r\n const req = axios.delete(\r\n '/api/webshop/basket/RemoveBasketLine', {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n // Update values\r\n commit('setLines', data.basket.lines);\r\n commit('setQuantity', data.summary.quantity);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n\r\n bulkAdd({\r\n commit,\r\n }, {\r\n productIds,\r\n }) {\r\n // eslint-disable-line\r\n const payload = {\r\n productIdQuantityDictionary: {},\r\n };\r\n payload.productIdQuantityDictionary = Object.assign(\r\n ...productIds.map(k => ({\r\n [k]: 1,\r\n })),\r\n );\r\n const req = axios.post(\r\n '/api/webshop/basket/AddLinesToBasket',\r\n payload,\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n if (\r\n !data.result.isSuccess\r\n || !data.result.operationCompleted\r\n ) {\r\n // console.error('Something went wrong'); // TODO\r\n return;\r\n }\r\n commit('setQuantity', data.summary.quantity);\r\n commit('setProductsInWishlist', data.summary.productIds);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n\r\n submit({\r\n commit,\r\n }, {\r\n name,\r\n }) {\r\n const payload = {\r\n name,\r\n };\r\n\r\n // Update the user details\r\n const req = axios.put(\r\n '/api/webshop/waoocheckout/UpdateDetails',\r\n payload,\r\n );\r\n return req.then(\r\n ({\r\n data,\r\n }) => {\r\n if (!data.isSuccess || !data.operationCompleted) {\r\n commit('unsetSubmitting');\r\n // TODO Error handling\r\n return data;\r\n }\r\n // Submit order\r\n // eslint-disable-next-line consistent-return\r\n return axios\r\n .post('/api/webshop/checkout/GotoPayment')\r\n .then(\r\n (paymentResponse) => {\r\n const result = paymentResponse.data.result;\r\n const redirectUrl = paymentResponse.data.response;\r\n if (\r\n !result.isSuccess\r\n || !result.operationCompleted\r\n || !redirectUrl\r\n ) {\r\n commit('unsetSubmitting');\r\n return paymentResponse.data;\r\n }\r\n window.location.href = redirectUrl;\r\n return paymentResponse.data;\r\n },\r\n () => {\r\n commit('unsetSubmitting');\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n () => {\r\n commit('unsetSubmitting');\r\n },\r\n );\r\n },\r\n\r\n add({\r\n commit,\r\n dispatch,\r\n }, {\r\n productId,\r\n }) {\r\n const params = {\r\n productId,\r\n quantity: 1,\r\n };\r\n\r\n const req = axios.post(\r\n '/api/webshop/basket/AddToBasket',\r\n null, {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n if (\r\n !data.result.isSuccess\r\n || !data.result.operationCompleted\r\n ) {\r\n // TODO Error handling\r\n return;\r\n }\r\n dispatch('getWishlist');\r\n commit('setQuantity', data.summary.quantity);\r\n commit('setProductsInWishlist', data.summary.productIds);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n\r\n addToBasket({\r\n commit,\r\n dispatch,\r\n }, {\r\n productId,\r\n quantity,\r\n }) {\r\n const params = {\r\n productId,\r\n quantity,\r\n };\r\n\r\n const req = axios.post(\r\n '/api/webshop/basket/AddToBasket',\r\n null, {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n if (\r\n !data.result.isSuccess\r\n || !data.result.operationCompleted\r\n ) {\r\n // TODO Error handling\r\n return;\r\n }\r\n dispatch('getWishlist');\r\n commit('setQuantity', data.summary.quantity);\r\n commit('setProductsInWishlist', data.summary.productIds);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n return req;\r\n },\r\n\r\n removeSubline({\r\n commit,\r\n }, {\r\n basketLineId,\r\n subLineId,\r\n }) {\r\n const params = {\r\n basketLineId,\r\n subLineId,\r\n };\r\n const req = axios.delete(\r\n '/api/webshop/custombasket/RemoveLineFromCollection', {\r\n params,\r\n },\r\n );\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n // Update values\r\n commit('setLines', data.basket.lines);\r\n },\r\n () => {\r\n // TODO Error handling\r\n },\r\n );\r\n },\r\n };\r\n\r\n this.store = {\r\n namespaced: true,\r\n state,\r\n getters: _getters,\r\n mutations,\r\n actions,\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\n\r\npressalit.loader = pressalit.loader || new function () {\r\n this.init = function () {\r\n Vue.component('loader', {\r\n template: '#js-loader',\r\n props: {\r\n active: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n theme: {\r\n type: String,\r\n default: 'white',\r\n },\r\n },\r\n computed: {\r\n color() {\r\n return `loader--${this.theme}`;\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.articleTile = pressalit.articleTile || new function () {\r\n this.init = function () {\r\n Vue.component('article-tile', {\r\n template: '#js-article-tile',\r\n store: pressalit.vuex.store,\r\n props: {\r\n article: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n computed: {\r\n contentType() {\r\n return this.article.contentType.charAt(0).toUpperCase() + this.article.contentType.slice(1);\r\n },\r\n dataQueryObj() {\r\n const center = `${this.article.image.focalPoint.top},${this.article.image.focalPoint.left}`;\r\n return JSON.stringify({\r\n mode: 'crop',\r\n quality: '70',\r\n center,\r\n });\r\n },\r\n articleTileType() {\r\n if (this.article && this.article.primaryFilter && this.article.primaryFilter.value) {\r\n return this.article.primaryFilter.value;\r\n }\r\n return '';\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.basketline = pressalit.basketline || (new function () {\r\n this.init = function () {\r\n Vue.component('basketline', {\r\n template: '#js-basketline-template',\r\n store: pressalit.vuex.store,\r\n data: () => ({\r\n sublinesIsVisible: false,\r\n quantity: 1,\r\n }),\r\n props: {\r\n line: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n methods: {\r\n toggleSublines() {\r\n this.sublinesIsVisible = !this.sublinesIsVisible;\r\n },\r\n deleteItem(basketlineId) {\r\n this.$store.dispatch('wishlist/remove', basketlineId);\r\n },\r\n deleteSubline(basketLineId, subLineId) {\r\n this.$store.dispatch('wishlist/removeSubline', {\r\n basketLineId,\r\n subLineId,\r\n });\r\n },\r\n decreaseQuantity() {\r\n this.$store.dispatch('wishlist/updateQuantity', {\r\n basketLineId: this.line.id,\r\n quantity: this.line.quantity -= 1,\r\n });\r\n },\r\n increaseQuantity() {\r\n this.$store.dispatch('wishlist/updateQuantity', {\r\n basketLineId: this.line.id,\r\n quantity: this.line.quantity += 1,\r\n });\r\n },\r\n changeQuantity(event) {\r\n const value = event.target.value;\r\n this.$store.dispatch('wishlist/updateQuantity', {\r\n basketLineId: this.line.id,\r\n quantity: parseInt(value, 10),\r\n });\r\n },\r\n },\r\n watch: {\r\n isPrinting: {\r\n handler() {\r\n this.toggleSublines();\r\n },\r\n },\r\n },\r\n computed: {\r\n quantityDecreaseDisabled() {\r\n return this.line.quantity <= 1;\r\n },\r\n image() {\r\n if (!this.line.productImage) {\r\n return null;\r\n }\r\n return `${this.line.productImage}?width=100&height=100&mode=crop`;\r\n },\r\n hasSubLines() {\r\n return !!this.line.subLines.length;\r\n },\r\n type() {\r\n if (!this.line.properties) {\r\n return null;\r\n }\r\n return this.line.properties['product.type'];\r\n },\r\n isPrinting() {\r\n return this.$store.state.print.wishlistPrinting;\r\n },\r\n },\r\n });\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.blogPostTile = pressalit.blogPostTile || new function () {\r\n this.init = function () {\r\n Vue.component('blog-post-tile', {\r\n template: '#js-blog-post-tile',\r\n store: pressalit.vuex.store,\r\n props: {\r\n blogPost: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n computed: {\r\n contentType() {\r\n return this.blogPost.contentType.charAt(0).toUpperCase() + this.blogPost.contentType.slice(1);\r\n },\r\n dataQueryObj() {\r\n const center = `${this.blogPost.image.focalPoint.top},${this.blogPost.image.focalPoint.left}`;\r\n return JSON.stringify({\r\n mode: 'crop',\r\n quality: '70',\r\n center,\r\n });\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\npressalit.dealerModal = pressalit.dealerModal\r\n || new (function () {\r\n this.init = function () {\r\n Vue.component('dealer-modal', {\r\n template: '#js-dealer-modal',\r\n props: {\r\n isOpen: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n filters: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n selectedType: {\r\n type: String,\r\n default: null,\r\n },\r\n types: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n },\r\n data() {\r\n return {\r\n type: null,\r\n selectedFilters: [],\r\n editType: false,\r\n };\r\n },\r\n computed: {\r\n showDealerTypeSelection() {\r\n return this.type == null || this.editType;\r\n },\r\n selectedTypeLabel() {\r\n if (!this.type) {\r\n return '';\r\n }\r\n\r\n const aliasKey = this.type.charAt(0).toUpperCase() + this.type.slice(1);\r\n\r\n return this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ](\r\n `ViewElements.DealerPage.UserTypes.${aliasKey}`,\r\n );\r\n },\r\n },\r\n methods: {\r\n select(type) {\r\n this.editType = false;\r\n this.type = type;\r\n },\r\n close() {\r\n this.$emit('close');\r\n },\r\n onFilter(filters) {\r\n this.filters = filters;\r\n },\r\n getActiveClass(type) {\r\n if (this.type === type) {\r\n return 'dealer-modal__content-buttons-button--selected';\r\n }\r\n\r\n return 'dealer-modal__content-buttons-button';\r\n },\r\n submit() {\r\n this.$emit('done', {\r\n filters: this.selectedFilters,\r\n type: this.type ? this.type : 'private',\r\n });\r\n },\r\n toggleBodyLock() {\r\n const elements = document.getElementsByTagName(\r\n 'body',\r\n );\r\n if (elements) {\r\n const scrollClass = 'scroll-lock';\r\n if (this.isOpen) {\r\n elements[0].classList.add(scrollClass);\r\n } else {\r\n elements[0].classList.remove(scrollClass);\r\n }\r\n }\r\n },\r\n },\r\n watch: {\r\n selectedType: {\r\n handler(newVal) {\r\n this.type = newVal;\r\n },\r\n },\r\n filters: {\r\n handler(newVal) {\r\n this.selectedFilters = newVal;\r\n },\r\n },\r\n isOpen: {\r\n handler() {\r\n this.toggleBodyLock();\r\n },\r\n },\r\n },\r\n });\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.dealerTile = pressalit.dealerTile || (new function () {\r\n this.init = function () {\r\n Vue.component('dealer-tile', {\r\n template: '#js-dealer-tile-template',\r\n props: {\r\n dealer: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n data() {\r\n return {\r\n tempFilter: {},\r\n };\r\n },\r\n computed: {\r\n isWebshop() {\r\n return this.dealer.isWebshop;\r\n },\r\n },\r\n });\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.dropdownElement = pressalit.dropdownElement || new function () {\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-dropdown-list');\r\n if (!els) {\r\n return;\r\n }\r\n for (let i = 0; i < els.length; ++i) {\r\n const el = els[i];\r\n\r\n el.addEventListener('click', (event) => {\r\n const currentTarget = event.currentTarget;\r\n [...els].map((dropdown) => {\r\n if (dropdown !== currentTarget) {\r\n dropdown.classList.remove('show');\r\n }\r\n return dropdown;\r\n });\r\n currentTarget.classList.toggle('show');\r\n });\r\n }\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.dropdownselector = pressalit.dropdownselector || (new function () {\r\n this.init = function () {\r\n function toggleList() {\r\n document.getElementById('dropdown-selector__selector-list').classList.toggle('dropdown-selector__selector-list');\r\n document.getElementById('dropdown-selector__selector-list').classList.toggle('dropdown-selector__selector-list--active');\r\n document.getElementById('dropdown-selector-arrow').classList.toggle('dropdown-selector__selector-arrow');\r\n document.getElementById('dropdown-selector-arrow').classList.toggle('dropdown-selector__selector-arrow--active');\r\n }\r\n document.getElementById('dropdown-selector__selector').addEventListener('click', toggleList);\r\n\r\n const countries = document.getElementsByClassName('js-dropdown-selector-country');\r\n for (let i = 0; i < countries.length; i++) {\r\n countries[i].addEventListener('click', () => {\r\n toggleList();\r\n });\r\n }\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\nvar VueGoogleMaps = VueGoogleMaps; // eslint-disable-line\r\nvar GmapCluster = GmapCluster; // eslint-disable-line\r\npressalit.googleMaps = pressalit.googleMaps || new function () {\r\n Vue.use(VueRouter);\r\n\r\n function initGoogleMaps() {\r\n // eslint-disable-next-line no-undef\r\n Vue.use(VueGoogleMaps, {\r\n load: {\r\n key: 'AIzaSyAcQxAjnmC7YVX1M3-6iBMNGxLCz6Jt4-o',\r\n libraries: 'places',\r\n },\r\n });\r\n\r\n Vue.component('GmapCluster', VueGoogleMaps.Cluster);\r\n }\r\n\r\n this.init = function () {\r\n initGoogleMaps();\r\n\r\n Vue.component('google-maps', {\r\n template: '#js-google-maps',\r\n props: {\r\n markers: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n currentPosition: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n zoom: {\r\n type: Number,\r\n default: 10,\r\n },\r\n infoWindowOpen: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n currentSelectedMarker: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n changingPlace: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data() {\r\n return {\r\n map: null,\r\n currentMidx: null,\r\n infoOptions: {\r\n // optional: offset infowindow so it visually sits nicely on top of our marker\r\n pixelOffset: {\r\n width: 0,\r\n height: -35,\r\n },\r\n },\r\n isMapDragged: false,\r\n };\r\n },\r\n computed: {\r\n zoomLevel() {\r\n return this.zoom;\r\n },\r\n gmapOptions() {\r\n return {\r\n streetViewControl: false,\r\n fullscreenControl: false,\r\n mapTypeControl: false,\r\n };\r\n },\r\n icon() {\r\n return {\r\n url: '/dist/images/icon-map-pin.png',\r\n };\r\n },\r\n getBoundsCoordinates() {\r\n return this.$refs.map.$mapObject.getBounds();\r\n },\r\n getStyles() {\r\n return {\r\n styles: [{\r\n featureType: 'administrative',\r\n elementType: 'labels.text.fill',\r\n stylers: [{\r\n color: '#444444',\r\n }],\r\n },\r\n {\r\n featureType: 'administrative.land_parcel',\r\n elementType: 'labels.text.stroke',\r\n stylers: [{\r\n color: '#d7caca',\r\n }],\r\n },\r\n {\r\n featureType: 'landscape',\r\n elementType: 'all',\r\n stylers: [{\r\n color: '#f2f2f2',\r\n }],\r\n },\r\n {\r\n featureType: 'poi',\r\n elementType: 'all',\r\n stylers: [{\r\n visibility: 'off',\r\n }],\r\n },\r\n {\r\n featureType: 'road',\r\n elementType: 'all',\r\n stylers: [{\r\n saturation: -100,\r\n },\r\n {\r\n lightness: 45,\r\n },\r\n ],\r\n },\r\n {\r\n featureType: 'road.highway',\r\n elementType: 'all',\r\n stylers: [{\r\n visibility: 'simplified',\r\n }],\r\n },\r\n {\r\n featureType: 'road.arterial',\r\n elementType: 'labels.icon',\r\n stylers: [{\r\n visibility: 'off',\r\n }],\r\n },\r\n {\r\n featureType: 'transit',\r\n elementType: 'all',\r\n stylers: [{\r\n visibility: 'off',\r\n }],\r\n },\r\n {\r\n featureType: 'water',\r\n elementType: 'all',\r\n stylers: [{\r\n color: '#d7d2d2',\r\n },\r\n {\r\n visibility: 'on',\r\n },\r\n ],\r\n },\r\n ],\r\n\r\n };\r\n },\r\n getBoundMarkers() {\r\n // eslint-disable-next-line no-undef\r\n const bounds = new google.maps.LatLngBounds();\r\n const markers = this.markers; // some array\r\n for (let i = 0; i < markers.length; i++) {\r\n bounds.extend(markers[i].position);\r\n }\r\n return bounds;\r\n },\r\n phoneTranslation() {\r\n return this.$store.getters['dictionaries/getByKey']('ViewElements.DealerPage.Phone');\r\n },\r\n infoWindowPos() {\r\n return this.currentSelectedMarker.position;\r\n },\r\n getSelectedMarkerState() {\r\n if (this.currentSelectedMarker && this.currentSelectedMarker.info.state) {\r\n return `, ${this.currentSelectedMarker.info.state}`;\r\n }\r\n\r\n return '';\r\n },\r\n },\r\n watch: {\r\n currentSelectedMarker: {\r\n handler(newVal, oldVal) {\r\n if (JSON.stringify(oldVal) === JSON.stringify(newVal)) {\r\n return;\r\n }\r\n\r\n this.map.panTo(newVal.position);\r\n },\r\n },\r\n changingPlace: {\r\n handler() {\r\n if (this.changingPlace) {\r\n this.map.fitBounds(this.getBoundMarkers);\r\n }\r\n },\r\n },\r\n },\r\n methods: {\r\n click(marker) {\r\n this.$emit('marker-click', marker);\r\n },\r\n mapIsDragged() {\r\n this.$emit('zoom', { zoomLevel: this.map.zoom, bounds: this.getBoundsCoordinates });\r\n },\r\n mapHasLoaded() {\r\n this.$emit('loaded', { zoomLevel: this.map.zoom, bounds: this.getBoundsCoordinates });\r\n },\r\n },\r\n mounted() {\r\n const map = this.$refs.map;\r\n if (!map) {\r\n return;\r\n }\r\n map.$mapPromise.then(() => {\r\n map.$mapObject.setCenter(this.currentPosition);\r\n map.$mapObject.setZoom(this.zoom);\r\n map.$mapObject.addListener('zoom_changed', this.mapIsDragged);\r\n map.$mapObject.addListener('dragend', this.mapIsDragged);\r\n map.$mapObject.addListener('tilesloaded', this.mapHasLoaded);\r\n\r\n this.map = map.$mapObject;\r\n this.map.setOptions(this.getStyles);\r\n });\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\n\r\npressalit.languageModal = pressalit.languageModal\r\n || new (function () {\r\n this.init = function () {\r\n const el = document.getElementById('js-modal-placeholder');\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n computed: {\r\n isOpen() {\r\n return this.$store.state.languagemodal.isOpen;\r\n },\r\n },\r\n watch: {\r\n isOpen: {\r\n handler(val) {\r\n const vm = this;\r\n if (val) {\r\n novicell.overlay.create({\r\n selector: '#js-language-modal',\r\n class: 'modal',\r\n onLoaded() {\r\n const links = document.getElementsByClassName(\r\n 'language-modal__link',\r\n );\r\n for (let i = 0; i < links.length; i++) {\r\n const link = links[i];\r\n link.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n let language = '';\r\n const url = link.href;\r\n const parts = url.split('/');\r\n if (parts[parts.length - 1].length === 0) {\r\n const languagePart = parts[parts.length - 2];\r\n if (languagePart.length <= 5) {\r\n language = languagePart;\r\n }\r\n }\r\n const lang = {\r\n language: language === '' || language === null\r\n ? 'int' : language,\r\n link: link.href,\r\n name: link.dataset.langName,\r\n alias: link.dataset.langAlias,\r\n };\r\n\r\n pressalit.cookieService.setCookie(\r\n 'language',\r\n JSON.stringify(lang),\r\n 60,\r\n );\r\n window.location.href = link.href;\r\n });\r\n }\r\n },\r\n onDestroy() {\r\n vm.$store.commit('languagemodal/toggle');\r\n },\r\n });\r\n }\r\n },\r\n immediate: true,\r\n },\r\n },\r\n mounted() {\r\n const languageCookie = pressalit.cookieService.getCookie(\r\n 'language',\r\n );\r\n\r\n if (!languageCookie && window.location.pathname === '/') {\r\n this.$store.commit('languagemodal/toggle');\r\n }\r\n\r\n const languageModal = document.getElementById('js-language-modal');\r\n const languageModalElement = document.createElement('div');\r\n languageModalElement.innerHTML = languageModal.innerHTML;\r\n const languageLinks = Array.prototype.slice.call(\r\n languageModalElement.getElementsByClassName(\r\n 'language-modal__link',\r\n ),\r\n );\r\n\r\n const defaultLanguage = languageLinks.find(\r\n link => link.pathname === '/',\r\n ); // default is the root\r\n\r\n let defaultName = '';\r\n\r\n if (defaultLanguage) {\r\n defaultName = defaultLanguage.dataset.langName;\r\n }\r\n const languageSegment = window.location.pathname.match('/..-../');\r\n\r\n const currentLanguage = {\r\n name: defaultName,\r\n };\r\n\r\n if (languageSegment) {\r\n const languageFromSegment = languageLinks.find(\r\n link => link.pathname.indexOf(\r\n languageSegment[0].replace(/\\//g, ''),\r\n ) > -1,\r\n );\r\n currentLanguage.name = languageFromSegment.dataset.langName;\r\n }\r\n\r\n this.$store.commit('languagemodal/setCurrent', currentLanguage);\r\n },\r\n });\r\n\r\n const footerModalEl = document.getElementById('footer__selector-modal');\r\n new Vue({\r\n el: footerModalEl,\r\n store: pressalit.vuex.store,\r\n computed: {\r\n current() {\r\n return this.$store.state.languagemodal.current;\r\n },\r\n },\r\n methods: {\r\n open() {\r\n this.$store.commit('languagemodal/toggle');\r\n },\r\n },\r\n });\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\n\r\npressalit.googleMapsAutocomplete = pressalit.googleMapsAutocomplete || new function () {\r\n this.init = function () {\r\n Vue.component('google-maps-autocomplete', {\r\n template: '#js-google-maps-autocomplete',\r\n inheritAttrs: false,\r\n data() {\r\n return {\r\n term: '',\r\n };\r\n },\r\n methods: {\r\n clearInput() {\r\n this.$refs.input.blur();\r\n setTimeout(() => {\r\n this.$refs.input.value = '';\r\n this.$refs.input.focus();\r\n }, 10);\r\n },\r\n },\r\n mounted() {\r\n this.$gmapApiPromiseLazy().then(() => {\r\n // eslint-disable-next-line no-undef\r\n if (typeof (google.maps.places.Autocomplete) !== 'function') {\r\n throw new Error('google.maps.places.Autocomplete is undefined. Did you add \\'places\\' to libraries when loading Google Maps?');\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n this.$autocomplete = new google.maps.places.Autocomplete(this.$refs.input, {\r\n types: ['(cities)'],\r\n });\r\n\r\n this.$watch('componentRestrictions', (v) => {\r\n if (v !== undefined) {\r\n this.$autocomplete.setComponentRestrictions(v);\r\n }\r\n });\r\n\r\n this.$autocomplete.addListener('place_changed', () => {\r\n this.$emit('place-changed', this.$autocomplete.getPlace());\r\n });\r\n });\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.measurementInput = pressalit.measurementInput || (new function () {\r\n this.init = function () {\r\n Vue.component('measurement-input', {\r\n template: '#js-measurement-input-template',\r\n props: {\r\n input: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n number: {\r\n type: String,\r\n default: () => '',\r\n },\r\n },\r\n data() {\r\n return {\r\n measurement: Number(this.input.fromValue) || null,\r\n };\r\n },\r\n watch: {\r\n measurement: {\r\n handler() {\r\n this.onMeasurementChange();\r\n },\r\n },\r\n },\r\n // computed: {\r\n // selectedValues() {\r\n // return this.tempFilter.selected.map((x) => {\r\n // const current = this.tempFilter.options.find(o => o.selector === x);\r\n // if (!current) {\r\n // return null;\r\n // }\r\n // return current.value;\r\n // }).filter(x => x != null).join(', ');\r\n // },\r\n // isSingle() {\r\n // if (!this.filter.properties || !this.filter.properties.type) {\r\n // return false;\r\n // }\r\n // return this.filter.properties.type === 'category';\r\n // },\r\n // options() {\r\n // return this.tempFilter.options.map((filter) => {\r\n // if (filter.properties && filter.properties.customLabel) {\r\n // filter.value = filter.properties.customLabel;\r\n // }\r\n // return filter;\r\n // });\r\n // },\r\n // },\r\n methods: {\r\n onMeasurementChange() {\r\n // Format measurement\r\n this.measurement = this.measurement.replace(/\\./g, '');\r\n this.input.fromValue = this.measurement;\r\n this.input.toValue = this.measurement;\r\n },\r\n },\r\n });\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.multiFilter = pressalit.multiFilter || (new function () {\r\n this.init = function () {\r\n Vue.component('multi-filter', {\r\n template: '#js-multi-filter-template',\r\n props: {\r\n filter: {\r\n type: Object,\r\n default: () => { },\r\n },\r\n applyDictionaryKey: {\r\n type: String,\r\n default: '',\r\n },\r\n singleFilter: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n showReset: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n isDealerView: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data() {\r\n return {\r\n tempFilter: {},\r\n };\r\n },\r\n\r\n computed: {\r\n apply() {\r\n return this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ](this.applyDictionaryKey);\r\n },\r\n selectedValues() {\r\n if (!this.tempFilter.selected) {\r\n return null;\r\n }\r\n\r\n return this.tempFilter.selected.map((x) => {\r\n const current = this.tempFilter.options.find(o => o.selector === x);\r\n if (!current) {\r\n return null;\r\n }\r\n return current.value;\r\n }).filter(x => x != null).join(', ');\r\n },\r\n isSingle() {\r\n if (this.singleFilter) {\r\n return true;\r\n }\r\n if (!this.filter.properties || !this.filter.properties.type) {\r\n return false;\r\n }\r\n return this.filter.properties.type === 'category';\r\n },\r\n options() {\r\n if (!this.tempFilter.options) {\r\n return [];\r\n }\r\n\r\n return this.tempFilter.options.map((filter) => {\r\n if (filter.properties && filter.properties.customLabel) {\r\n filter.value = filter.properties.customLabel;\r\n }\r\n\r\n const casedValue = filter.value.substring(0, 1).toUpperCase().concat(filter.value.substring(1, filter.value.length).toLowerCase());\r\n const dictionary = 'ViewElements.ProductList.Filter.'.concat(casedValue);\r\n\r\n const targetFilter = this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ](dictionary);\r\n\r\n if (targetFilter !== null && targetFilter !== '') {\r\n filter.value = targetFilter;\r\n }\r\n return filter;\r\n });\r\n },\r\n },\r\n watch: {\r\n filter: {\r\n immediate: true,\r\n deep: true,\r\n handler: 'setTemp',\r\n },\r\n },\r\n methods: {\r\n\r\n validate() {\r\n if (this.isSingle && this.tempFilter.selected && this.tempFilter.selected.length > 1) {\r\n const last = this.tempFilter.selected[this.tempFilter.selected.length - 1];\r\n this.tempFilter.selected = [];\r\n this.tempFilter.selected.push(last);\r\n }\r\n },\r\n setTemp() {\r\n this.tempFilter = JSON.parse(JSON.stringify(this.filter));\r\n },\r\n reset() {\r\n this.tempFilter.selected = [];\r\n this.update();\r\n },\r\n update() {\r\n this.$emit('update:filter', this.tempFilter);\r\n },\r\n },\r\n });\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\npressalit.articleList = pressalit.articleList || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-article-list');\r\n let i;\r\n if (!els) {\r\n return;\r\n }\r\n for (i = 0; i < els.length; ++i) {\r\n const el = els[i];\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n new Vue({\r\n el,\r\n router,\r\n data: {\r\n articles: [],\r\n filters: [],\r\n total: null,\r\n parentId: null,\r\n page: 1,\r\n pageSize: 9,\r\n sorting: 'NameAscending',\r\n hideServersideRendered: false, // boolean used for hiding the server-side rendered products. Happends on filtering or sorting\r\n },\r\n store: pressalit.vuex.store,\r\n watch: {\r\n '$route.query': {\r\n immediate: false,\r\n handler: 'onQueryChange',\r\n },\r\n },\r\n created() {\r\n const initialState = JSON.parse(\r\n document.getElementById('js-article-list-json')\r\n .innerHTML,\r\n );\r\n\r\n const parentId = JSON.parse(\r\n document.getElementById('js-article-list-parent-json').innerHTML,\r\n );\r\n\r\n this.filters = initialState.filters || [];\r\n this.parentId = parentId || 0;\r\n this.total = initialState.total || 0;\r\n this.articles = initialState.results || [];\r\n\r\n const currentQuery = this.$route.query;\r\n this.page = currentQuery.page * 1 || 1;\r\n this.sorting = currentQuery.sort || initialState.sortingMethod;\r\n },\r\n methods: {\r\n onQueryChange(newVal, oldVal) {\r\n // If there wasnt any filter before, or the filter wasnt the same dont search\r\n // Since the filter has been changed after an search\r\n if (\r\n (newVal.filter && !oldVal.filter)\r\n || oldVal.filter !== newVal.filter\r\n ) {\r\n return;\r\n }\r\n this.search();\r\n },\r\n updateQuery() {\r\n const query = Object.assign({}, this.$route.query);\r\n query.page = this.page;\r\n query.sort = this.sorting;\r\n query.filter = this.filterToken;\r\n this.$router.replace({\r\n query,\r\n });\r\n },\r\n loadmore() {\r\n this.page += 1;\r\n this.updateQuery();\r\n },\r\n updateSorting() {\r\n this.page = 1;\r\n this.articles = [];\r\n this.hideServersideRendered = true;\r\n this.updateQuery();\r\n },\r\n onFilter(filters) {\r\n this.filters = filters;\r\n this.page = 1;\r\n this.articles = [];\r\n this.hideServersideRendered = true;\r\n this.search();\r\n },\r\n search() {\r\n this.searching = true;\r\n const payload = {\r\n page: this.page,\r\n pageSize: this.pageSize,\r\n sorting: this.sorting,\r\n id: this.parentId,\r\n filter: {\r\n filters: this.filters,\r\n },\r\n };\r\n axios.post('/api/catalog/search/SearchArticles', payload)\r\n .then(({\r\n data,\r\n }) => {\r\n this.articles = [\r\n ...this.articles,\r\n ...data.results,\r\n ];\r\n\r\n this.filters = data.filterOptions.options.filters;\r\n\r\n this.total = data.total;\r\n this.filterToken = data.filterOptions.filterToken;\r\n this.updateQuery();\r\n });\r\n },\r\n },\r\n computed: {\r\n paginationText() {\r\n const dict = this.$store.getters['dictionaries/getByKey']('ViewElements.ArticleListPage.PaginationText');\r\n if (dict && dict.includes('[visible]') && dict.includes('[total]')) {\r\n return dict.replace('[visible]', this.visibleLinksAmount).replace('[total]', this.total);\r\n }\r\n return '';\r\n },\r\n visibleLinksAmount() {\r\n if (this.page * this.pageSize < this.total) {\r\n return this.page * this.pageSize;\r\n }\r\n return this.total;\r\n },\r\n },\r\n });\r\n }\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\n\r\npressalit.basketPage = pressalit.basketPage || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n const pageEl = document.getElementById('js-basket-page');\r\n if (!pageEl) {\r\n return;\r\n }\r\n const store = pressalit.vuex.store;\r\n\r\n new Vue({\r\n el: pageEl,\r\n store,\r\n router,\r\n data: () => ({\r\n showAdditionalPoNumberSections: {},\r\n additionalPoNumbers: {},\r\n }),\r\n created() {\r\n this.$store.dispatch('basket/getBasket');\r\n },\r\n computed: {\r\n showError() {\r\n return this.$store.getters['basket/hasError'];\r\n },\r\n isLoading() {\r\n return this.$store.getters['basket/isLoading'];\r\n },\r\n basketLines() {\r\n const lines = this.$store.getters['basket/getLines'];\r\n this.$store.dispatch('tracking/trackViewBasket', lines);\r\n return lines;\r\n },\r\n basketTotals() {\r\n return this.$store.getters['basket/getTotals'];\r\n },\r\n isNewCustomer() {\r\n return this.$store.getters['basket/isNewCustomer'];\r\n },\r\n },\r\n methods: {\r\n toggleShowAdditionalPoNumberSection(basketLine) {\r\n this.$set(this.showAdditionalPoNumberSections, basketLine.id, !this.showAdditionalPoNumberSections[basketLine.id]);\r\n },\r\n decreaseQuantity(basketLine) {\r\n if (basketLine.quantity === 1) {\r\n this.$store.dispatch('basket/removeBasketLine', basketLine.id);\r\n this.$store.dispatch('tracking/trackAddOrRemoveToBasket', { basketLine, action: 'remove', event: 'remove_from_basket' });\r\n } else {\r\n this.$store.dispatch('basket/updateQuantity', {\r\n basketLineId: basketLine.id,\r\n quantity: basketLine.quantity -= 1,\r\n });\r\n this.$store.dispatch('tracking/trackAddOrRemoveToBasket', { basketLine, action: 'decrease', event: 'remove_from_basket' });\r\n }\r\n },\r\n increaseQuantity(basketLine) {\r\n this.$store.dispatch('basket/updateQuantity', {\r\n basketLineId: basketLine.id,\r\n quantity: basketLine.quantity += 1,\r\n });\r\n this.$store.dispatch('tracking/trackAddOrRemoveToBasket', { basketLine, action: 'increase', event: 'add_to_basket' });\r\n },\r\n changeQuantity(event, basketLine) {\r\n const value = event.target.value;\r\n const basketLineId = basketLine.id;\r\n this.$store.dispatch('basket/updateQuantity', {\r\n basketLineId,\r\n quantity: parseInt(value, 10),\r\n });\r\n\r\n if (Number(value) === 0) {\r\n this.$store.dispatch('tracking/trackAddOrRemoveToBasket', { basketLine, action: 'remove', event: 'remove_from_basket' });\r\n } else {\r\n this.$store.dispatch('tracking/trackAddOrRemoveToBasket', {\r\n basketLine, action: 'changeQuantity', changedQuantityTo: parseInt(value, 10), event: 'add_to_basket',\r\n });\r\n }\r\n },\r\n removeBasketLine(basketLine) {\r\n this.$store.dispatch('basket/removeBasketLine', basketLine.id);\r\n this.$store.dispatch('tracking/trackAddOrRemoveToBasket', { basketLine, action: 'remove', event: 'remove_from_basket' });\r\n },\r\n replicateOrderLine(productId) {\r\n this.$store.dispatch('basket/addReplicatedBasketLine', {\r\n productId,\r\n });\r\n },\r\n addAdditionalPoNumber(basketLine) {\r\n const basketLineId = basketLine.id;\r\n this.$store.dispatch('basket/addPoNumber', {\r\n basketLineId,\r\n poNumber: this.additionalPoNumbers[basketLine.id],\r\n });\r\n this.additionalPoNumbers[basketLine.id] = '';\r\n },\r\n removeAdditionalPoNumber(basketLine) {\r\n const basketLineId = basketLine.id;\r\n this.$store.dispatch('basket/deletePoNumber', basketLineId);\r\n this.toggleShowAdditionalPoNumberSection(basketLine);\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Flickity = Flickity; // eslint-disable-line\r\npressalit.articleSlider = pressalit.articleSlider || (new function () {\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-article-slider');\r\n if (!els.length) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n for (let i = 0; i < els.length; i++) {\r\n new Flickity(els[i], {\r\n pageDots: false,\r\n groupCells: true,\r\n contain: true,\r\n draggable: true,\r\n cellAlign: 'left',\r\n imagesLoaded: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 45,\r\n x3: 25,\r\n },\r\n });\r\n }\r\n }, 0);\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar VueRouter = VueRouter || {}; // eslint-disable-line\r\n\r\npressalit.cameraPage = pressalit.cameraPage\r\n || new function () {\r\n this.init = function () {\r\n const el = document.getElementById('js-camera-page');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n new Vue({\r\n el,\r\n router,\r\n store: pressalit.vuex.store,\r\n methods: {\r\n getVerification() {\r\n this.$store.commit('navigation/setComponent', 'get-verification');\r\n this.$store.commit('navigation/toggleSidebar');\r\n },\r\n },\r\n mounted() {\r\n const currentQuery = this.$route.query;\r\n if (currentQuery.validate && currentQuery.validate === 'true') {\r\n this.getVerification();\r\n const query = Object.assign({}, this.$route.query);\r\n delete query.validate;\r\n this.$router.replace({\r\n query,\r\n });\r\n }\r\n },\r\n });\r\n\r\n\r\n Vue.component('get-verification', {\r\n template: '#js-get-verification',\r\n data() {\r\n return {\r\n sender: {\r\n name: '',\r\n email: '',\r\n phone: '',\r\n },\r\n comment: '',\r\n error: false,\r\n success: false,\r\n sending: false,\r\n };\r\n },\r\n computed: {\r\n culture() {\r\n return this.$store.getters['basket/getCulture'];\r\n },\r\n siteNodeId() {\r\n return this.$store.getters['basket/getSiteNodeId'];\r\n },\r\n },\r\n methods: {\r\n send() {\r\n this.sending = true;\r\n const req = axios.post('/api/frontend/webapp/Verify', {\r\n senderName: this.sender.name,\r\n senderEmail: this.sender.email,\r\n senderPhone: this.sender.phone,\r\n comment: this.comment,\r\n });\r\n\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n this.sending = false;\r\n if (data.isSuccess) {\r\n this.success = true;\r\n this.error = false;\r\n return;\r\n }\r\n this.success = false;\r\n this.error = true;\r\n },\r\n () => {\r\n this.success = false;\r\n this.sending = false;\r\n this.error = true;\r\n },\r\n );\r\n },\r\n },\r\n });\r\n };\r\n }();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\n\r\npressalit.checkoutPage = pressalit.checkoutPage || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n const pageEl = document.getElementById('js-checkout-page');\r\n if (!pageEl) {\r\n return;\r\n }\r\n const store = pressalit.vuex.store;\r\n new Vue({\r\n el: pageEl,\r\n store,\r\n router,\r\n data: {\r\n additionalAddressLine: false,\r\n additionalAddressLineDelivery: false,\r\n commentSection: false,\r\n showDeliverydate: false,\r\n },\r\n created() {\r\n this.$store.dispatch('basket/getCheckout').then(() => {\r\n this.additionalAddressLine = !!this.invoiceAddress.addressLine2;\r\n this.additionalAddressLineDelivery = !!this.deliveryAddress.addressLine2;\r\n }).then(() => {\r\n this.$store.dispatch('tracking/trackBeginCheckout', this.basketLines);\r\n });\r\n },\r\n methods: {\r\n submit(receiptPage) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.$store.dispatch('basket/submit').then((redirectUrl) => {\r\n const receiptPageUrl = encodeURIComponent(receiptPage);\r\n const newRedirectUrl = `${redirectUrl}?successUrl=${receiptPageUrl}&errorUrl=${receiptPageUrl}`;\r\n window.location.href = newRedirectUrl;\r\n }, (errors) => {\r\n console.error('Error', errors);\r\n });\r\n }\r\n });\r\n },\r\n },\r\n computed: {\r\n disabledInvoiceFields() {\r\n return this.$store.getters['basket/disabledInvoiceFields'];\r\n },\r\n showError() {\r\n return this.$store.getters['basket/hasError'];\r\n },\r\n isLoading() {\r\n return this.$store.getters['basket/isLoading'];\r\n },\r\n isSubmitting() {\r\n return this.$store.getters['basket/isSubmitting'];\r\n },\r\n invoiceAddress: {\r\n get() {\r\n return this.$store.getters['basket/invoiceAddress'];\r\n },\r\n set(value) {\r\n return this.$store.commit('basket/setInvoiceAddress', value);\r\n },\r\n },\r\n deliveryAddress: {\r\n get() {\r\n return this.$store.getters['basket/deliveryAddress'];\r\n },\r\n set(value) {\r\n return this.$store.commit('basket/setDeliveryAddress', value);\r\n },\r\n },\r\n email: {\r\n get() {\r\n return this.$store.getters['basket/email'];\r\n },\r\n set(value) {\r\n return this.$store.commit('basket/setEmail', value);\r\n },\r\n },\r\n isDeliveryToInvoiceAddress: {\r\n get() {\r\n return this.$store.getters['basket/isDeliveryToInvoiceAddress'];\r\n },\r\n set(value) {\r\n return this.$store.commit('basket/setDeliveryToInvoiceAddress', value);\r\n },\r\n },\r\n reference: {\r\n get() {\r\n return this.$store.getters['basket/reference'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'reference', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n customerDeliveryState: {\r\n get() {\r\n return this.$store.getters['basket/customerDeliveryState'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'customerDeliveryState', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n shippingDateRequested: {\r\n get() {\r\n return this.$store.getters['basket/shippingDateRequested'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'shippingDateRequested', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n poNumber: {\r\n get() {\r\n return this.$store.getters['basket/poNumber'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'poNumber', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n contactUponDelivery: {\r\n get() {\r\n return this.$store.getters['basket/contactUponDelivery'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'contactUponDelivery', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n phoneNumberUponDelivery: {\r\n get() {\r\n return this.$store.getters['basket/phoneNumberUponDelivery'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'phoneNumberUponDelivery', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n deliveryInstructions: {\r\n get() {\r\n return this.$store.getters['basket/deliveryInstructions'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'deliveryInstructions', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n comment: {\r\n get() {\r\n return this.$store.getters['basket/comment'];\r\n },\r\n set(value) {\r\n const properties = this.$store.getters['basket/properties'];\r\n Vue.set(properties, 'comment', value);\r\n return this.$store.commit('basket/setProperties', properties);\r\n },\r\n },\r\n basketLines() {\r\n return this.$store.getters['basket/getLines'];\r\n },\r\n basketTotals() {\r\n return this.$store.getters['basket/getTotals'];\r\n },\r\n isNewCustomer() {\r\n return this.$store.getters['basket/isNewCustomer'];\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\n\r\npressalit.collectionProduct = pressalit.collectionProduct || new function () {\r\n this.contentOverlayTriggers = null;\r\n this.overlayInnerContent = null;\r\n this.init = function () {\r\n this.overlayInnerContent = document.querySelector(\r\n '#js-content-overlay-content',\r\n );\r\n // Select your overlay trigger\r\n const contentOverlayTriggers = document.querySelectorAll(\r\n '.js-content-overlay-trigger',\r\n );\r\n const _this = this;\r\n if (contentOverlayTriggers) {\r\n for (let i = 0; i < contentOverlayTriggers.length; i++) {\r\n contentOverlayTriggers[i].addEventListener('click', (e) => {\r\n e.stopPropagation();\r\n const currentTrigger = contentOverlayTriggers[i];\r\n const content = currentTrigger.getAttribute(\r\n 'data-template-id',\r\n );\r\n novicell.overlay.create({\r\n selector: '#js-content-overlay-content',\r\n class: 'content-overlay',\r\n onCreate() {\r\n _this.injectContent(content);\r\n },\r\n onLoaded() {\r\n _this.loadedContent(content);\r\n },\r\n onDestroy() {\r\n _this.clearContent();\r\n },\r\n });\r\n }, false);\r\n }\r\n }\r\n\r\n const collectionGrids = document.getElementsByClassName('js-collection-grid');\r\n if (!collectionGrids) {\r\n return;\r\n }\r\n for (let index = 0; index < collectionGrids.length; index++) {\r\n const el = collectionGrids[index];\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n methods: {\r\n addToWishlist(productId) {\r\n this.$store.dispatch('wishlist/add', {\r\n productId,\r\n });\r\n },\r\n },\r\n });\r\n }\r\n };\r\n\r\n this.clearContent = function () {\r\n this.overlayInnerContent.innerHTML = '';\r\n };\r\n\r\n this.injectContent = function (content) {\r\n const tpl = document.querySelector(content);\r\n this.overlayInnerContent.innerHTML = tpl.innerHTML;\r\n };\r\n\r\n this.loadedContent = function (content) {\r\n // Initialize vues when popup loads\r\n if (content === '#active-campaign-popup') {\r\n const wrapper = document.getElementById('js-novi-backdrop');\r\n pressalit.activeCampaignForm.init(wrapper);\r\n }\r\n if (content === '#edit-address-popup') {\r\n pressalit.changeAddress.init();\r\n }\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\npressalit.dealerListPage = pressalit.dealerListPage\r\n || new (function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const el = document.getElementById('js-dealer-list-page');\r\n if (!el) {\r\n return;\r\n }\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n\r\n new Vue({\r\n el,\r\n router,\r\n store: pressalit.vuex.store,\r\n data() {\r\n return {\r\n results: [],\r\n currentPosition: {},\r\n lastPosition: {\r\n lat: 0,\r\n lng: 0,\r\n },\r\n currentBounds: null,\r\n changingPlace: false,\r\n filters: [],\r\n token: '',\r\n pagination: {\r\n page: 1,\r\n pageSize: 100,\r\n },\r\n activeTab: 0,\r\n showWebshops: false,\r\n isSearching: true,\r\n searchTimeout: null,\r\n cancelSource: null,\r\n initialCountryIsoFilter: null,\r\n userType: '',\r\n totalResults: null,\r\n zoom: 12,\r\n currentCountry: {},\r\n place: null,\r\n filterMappings: [],\r\n infoWindowOpen: false,\r\n currentSelectedMarker: {},\r\n showMap: true,\r\n market: '',\r\n activeDealer: -1,\r\n inputChanged: false,\r\n initialZoom: 12,\r\n };\r\n },\r\n methods: {\r\n goToPhysicalDealers() {\r\n this.clearPlace();\r\n this.switchTab(this.tabs.find(tab => tab.key === 'tab-1'), 0);\r\n },\r\n goToDealer(dealer) {\r\n this.clearPlace();\r\n this.currentSelectedMarker = dealer;\r\n this.infoWindowOpen = true;\r\n\r\n const mapElement = document.getElementById('js-dealer-list-page-map');\r\n if (mapElement) {\r\n if (window.innerWidth < 992) {\r\n window.scroll({\r\n top: mapElement.offsetTop + mapElement.clientHeight,\r\n behavior: 'smooth',\r\n });\r\n }\r\n }\r\n },\r\n openMarker(marker) {\r\n this.infoWindowOpen = true;\r\n this.currentSelectedMarker = marker;\r\n this.activeDealer = marker.info.id;\r\n },\r\n onDealerOpen(dealer) {\r\n this.activeDealer = dealer.id;\r\n },\r\n changePlace(place) {\r\n if (!place.place_id) {\r\n this.place = null;\r\n return;\r\n }\r\n this.place = place;\r\n },\r\n clearPlace() {\r\n this.place = null;\r\n },\r\n updateRouteQuery() {\r\n const query = Object.assign({}, this.$route.query);\r\n if (this.userType) {\r\n query.type = this.userType;\r\n }\r\n if ((typeof this.currentPosition.lat !== 'undefined' && this.currentPosition.lat > 0) && (typeof this.currentPosition.lng !== 'undefined' && this.currentPosition.lng > 0)) {\r\n query.location = `${this.currentPosition.lat},${this.currentPosition.lng}`;\r\n }\r\n query.zoom = this.zoom;\r\n query.webshop = this.showWebshops;\r\n\r\n const geoLocations = this.getGeoLocations;\r\n\r\n if (geoLocations) {\r\n query.nw = `${geoLocations.nwLat},${geoLocations.nwLng}`;\r\n query.se = `${geoLocations.seLat},${geoLocations.seLng}`;\r\n }\r\n\r\n\r\n this.$router.replace({\r\n query,\r\n });\r\n },\r\n switchTab(tab, index) {\r\n if (index === this.activeTab) {\r\n return;\r\n }\r\n this.clearPlace();\r\n\r\n this.activeTab = index;\r\n this.showWebshops = tab.isWebshops;\r\n this.isSearching = true;\r\n setTimeout(() => {\r\n this.search(this.filters);\r\n }, 50);\r\n },\r\n updateZoom(payload) {\r\n this.zoom = payload.zoomLevel;\r\n this.updateBounds(payload.bounds);\r\n },\r\n updateBounds(bounds) {\r\n if (!bounds) {\r\n return;\r\n }\r\n\r\n this.clearPlace();\r\n this.currentBounds = bounds;\r\n this.currentPosition.lat = bounds.getCenter().lat();\r\n this.currentPosition.lng = bounds.getCenter().lng();\r\n this.search(this.filters);\r\n },\r\n setType(type) {\r\n this.userType = type;\r\n },\r\n onFilter(input) {\r\n // Filter out the UserType, and set the type based on that;\r\n const userTypeFilter = input.filter(x => x.identifier === 'UserType');\r\n if (userTypeFilter && userTypeFilter.length) {\r\n const userType = userTypeFilter[0].selected[0];\r\n if (userType) {\r\n this.setType(userType);\r\n } else {\r\n this.setType(null);\r\n }\r\n }\r\n\r\n this.search({\r\n filters: input,\r\n });\r\n },\r\n getLatLng(location) {\r\n if (typeof location !== 'undefined') {\r\n return location;\r\n }\r\n\r\n return {\r\n lat: this.currentBounds ? this.currentBounds.getCenter().lat() : null,\r\n lng: this.currentBounds ? this.currentBounds.getCenter().lng() : null,\r\n };\r\n },\r\n search(filters, newPosition) {\r\n const geoLocations = this.getGeoLocations;\r\n\r\n if (newPosition) {\r\n this.zoom = this.initialZoom;\r\n this.isSearching = true;\r\n\r\n const visibleMap = document.querySelector('.vue-map');\r\n\r\n // eslint-disable-next-line no-undef\r\n const temporaryDomNode = document.createElement('div');\r\n temporaryDomNode.style.height = visibleMap ? `${visibleMap.clientHeight}px` : '500px';\r\n temporaryDomNode.style.width = visibleMap ? `${visibleMap.clientWidth}px` : '500px';\r\n temporaryDomNode.style.visibility = 'hidden';\r\n\r\n document.body.append(temporaryDomNode);\r\n\r\n // eslint-disable-next-line no-undef\r\n const fakeMap = new google.maps.Map(temporaryDomNode, {\r\n zoom: this.initialZoom,\r\n center: { lat: newPosition.lat, lng: newPosition.lng },\r\n });\r\n\r\n\r\n // eslint-disable-next-line no-undef\r\n google.maps.event.addListener(fakeMap, 'bounds_changed', () => {\r\n const bounds = fakeMap.getBounds();\r\n\r\n this.updateBounds(bounds);\r\n temporaryDomNode.remove();\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (this.changingPlace && !newPosition) {\r\n return;\r\n }\r\n\r\n if (this.showWebshops) {\r\n // Remove the segment filter\r\n // const segmentFilterIndex = this.getSegmentFilters(filters);\r\n // if (segmentFilterIndex !== -1) {\r\n // filters.filters[segmentFilterIndex].selected = [];\r\n // }\r\n } else {\r\n const isoFilterIndex = this.getIsoFilterIndex(filters);\r\n if (isoFilterIndex !== -1) {\r\n filters.filters[isoFilterIndex].selected = [];\r\n }\r\n }\r\n\r\n clearTimeout(this.searchTimeout);\r\n\r\n if (this.cancelSource) {\r\n this.cancelSource.cancel();\r\n }\r\n\r\n this.cancelSource = axios.CancelToken.source();\r\n\r\n // Remove the UserType filter\r\n filters.filters = filters.filters.filter(x => x.identifier !== 'UserType');\r\n\r\n const payload = {\r\n page: 0,\r\n pageSize: newPosition ? 999 : 0,\r\n filters,\r\n latitude: newPosition ? newPosition.lat : this.currentPosition.lat,\r\n longitude: newPosition ? newPosition.lng : this.currentPosition.lng,\r\n bottomRight: this.showWebshops || !geoLocations || newPosition ? null : {\r\n lat: geoLocations.seLat,\r\n lng: geoLocations.seLng,\r\n },\r\n topLeft: this.showWebshops || !geoLocations || newPosition ? null : {\r\n lat: geoLocations.nwLat,\r\n lng: geoLocations.nwLng,\r\n },\r\n isWebshop: this.showWebshops,\r\n isPrivate: this.isPrivateUser,\r\n cancelSource: this.cancelSource,\r\n };\r\n\r\n this.updateRouteQuery();\r\n\r\n this.isSearching = true;\r\n this.$store\r\n .dispatch('dealers/fetch', payload)\r\n .then((result) => {\r\n this.filters = result.filterOptions.options;\r\n this.results = result.results;\r\n this.totalResults = result.total;\r\n this.token = result.filterOptions.filterToken;\r\n this.isSearching = false;\r\n this.cancelSource = null;\r\n\r\n if (newPosition) {\r\n this.changingPlace = true;\r\n this.currentPosition = newPosition;\r\n }\r\n this.searchTimeout = setTimeout(() => {\r\n this.changingPlace = false;\r\n }, 1000);\r\n\r\n this.updateRouteQuery();\r\n }, (error) => {\r\n console.log(error);\r\n });\r\n },\r\n getSegmentFilters(filters) {\r\n return filters.filters.findIndex(filter => filter.identifier === 'NCSegmentKey');\r\n },\r\n getIsoFilterIndex(filters) {\r\n return filters.filters.findIndex(filter => filter.identifier === 'NCDealerCountryIso');\r\n },\r\n setSelectedFilterBasedOnCategory() {\r\n const currentCategoryId = this.$route.query.category;\r\n if (!currentCategoryId) {\r\n return;\r\n }\r\n const filters = this.filters;\r\n\r\n const productGroupFilters = filters.filters.find(filter => filter.identifier === 'NCDealerCategory');\r\n if (!productGroupFilters) {\r\n return;\r\n }\r\n\r\n const categoryOption = productGroupFilters.options.find(option => option.properties.categoryId === currentCategoryId);\r\n if (!categoryOption) {\r\n return;\r\n }\r\n if (productGroupFilters.selected.includes(categoryOption.selector)) {\r\n return;\r\n }\r\n productGroupFilters.selected.push(categoryOption.selector);\r\n },\r\n onInputChange() {\r\n const referenceElement = document.querySelector('.dealer-list-page__form-group.input-field');\r\n if (referenceElement) {\r\n const rect = referenceElement.getBoundingClientRect();\r\n const pacContainer = document.querySelector('.pac-container');\r\n\r\n if (pacContainer) {\r\n const adjustedBottom = (parseFloat(rect.bottom) + window.scrollY - 72);\r\n pacContainer.classList.add('custom-placement');\r\n document.styleSheets[0].insertRule(`\r\n .custom-placement {\r\n top: ${adjustedBottom}px !important;\r\n }\r\n `, 0);\r\n }\r\n }\r\n\r\n this.inputChanged = false;\r\n },\r\n },\r\n watch: {\r\n place: {\r\n handler(val) {\r\n if (!val || !val.geometry) {\r\n return;\r\n }\r\n this.currentPosition = {\r\n lat: val.geometry.location.lat(),\r\n lng: val.geometry.location.lng(),\r\n };\r\n this.search(this.filters, this.currentPosition);\r\n },\r\n immediate: false,\r\n },\r\n token: {\r\n handler(newVal) {\r\n if (!newVal) {\r\n return;\r\n }\r\n const query = Object.assign({}, this.$route.query);\r\n query.token = newVal;\r\n this.$router.replace({\r\n query,\r\n });\r\n },\r\n immediate: true,\r\n },\r\n },\r\n computed: {\r\n visibleFilters() {\r\n const privateMarkets = ['da-dk', 'da-no'];\r\n const filters = [];\r\n filters.push('UserType');\r\n filters.push('NCDealerCategory');\r\n if (this.market && privateMarkets.includes(this.market)) {\r\n filters.push('NCSegmentKey');\r\n }\r\n return filters;\r\n },\r\n types() {\r\n return [{\r\n alias: 'private',\r\n label: this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ]('ViewElements.DealerPage.UserTypes.Private'),\r\n },\r\n {\r\n alias: 'professional',\r\n label: this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ](\r\n 'ViewElements.DealerPage.UserTypes.Professional',\r\n ),\r\n },\r\n ];\r\n },\r\n getGeoLocations() {\r\n if (!this.currentBounds) {\r\n return null;\r\n }\r\n\r\n const northEast = this.currentBounds.getNorthEast();\r\n const southWest = this.currentBounds.getSouthWest();\r\n\r\n const northWestLat = northEast.lat();\r\n const northWestLng = southWest.lng();\r\n const southEastLat = southWest.lat();\r\n const southEastLng = northEast.lng();\r\n\r\n return {\r\n nwLat: northWestLat,\r\n nwLng: northWestLng,\r\n seLat: southEastLat,\r\n seLng: southEastLng,\r\n };\r\n },\r\n tabs() {\r\n return [{\r\n key: 'tab-1',\r\n name: this.$store.getters['dictionaries/getByKey']('ViewElements.DealerPage.Tabs.Physical'),\r\n icon: 'icon-map-pin',\r\n isWebshops: false,\r\n },\r\n {\r\n key: 'tab-2',\r\n name: this.$store.getters['dictionaries/getByKey']('ViewElements.DealerPage.Tabs.Webshops'),\r\n icon: 'icon-cart',\r\n isWebshops: true,\r\n },\r\n ];\r\n },\r\n icon() {\r\n if (this.activeTab === 0) {\r\n return 'icon-map-pin';\r\n }\r\n return 'shopping-cart';\r\n },\r\n showingForType() {\r\n if (!this.userType) {\r\n return '';\r\n }\r\n const key = this.showWebshops ? 'ViewElements.DealerPage.ShowingWebshopResults' : 'ViewElements.DealerPage.ShowingDealersResults';\r\n const label = this.$store.getters['dictionaries/getByKey'](key);\r\n return label.replace('{0}', this.totalResults).replace('{1}', this.userType);\r\n },\r\n filterOptions() {\r\n const mappedFilter = [{\r\n options: this.types.map(type => ({\r\n selector: type.alias,\r\n value: type.label,\r\n })),\r\n selected: [this.userType],\r\n filterType: 2,\r\n title: this.$store.getters['dictionaries/getByKey']('ViewElements.DealerPage.Select'),\r\n identifier: 'UserType',\r\n isFixed: false,\r\n properties: {\r\n type: 'category', perfionFieldName: 'UserType', nullable: true,\r\n },\r\n sortOrder: 0,\r\n isActive: true,\r\n }];\r\n if (this.filters && this.filters.filters) {\r\n this.filters.filters.forEach((x) => {\r\n const perfionName = x.properties.perfionFieldName;\r\n if (!perfionName) {\r\n mappedFilter.push(x);\r\n }\r\n\r\n const mapping = this.filterMappings ? this.filterMappings.find(f => f.perfionName === perfionName) : null;\r\n\r\n if (mapping != null) {\r\n x.title = mapping.label;\r\n }\r\n\r\n mappedFilter.push(x);\r\n });\r\n }\r\n\r\n return mappedFilter;\r\n },\r\n markers() {\r\n return this.results.map(result => ({\r\n position: {\r\n lat: result.latitude,\r\n lng: result.longitude,\r\n },\r\n title: result.name,\r\n info: {\r\n country: result.country,\r\n city: result.city,\r\n state: result.state,\r\n postalCode: result.postalCode,\r\n address: result.address,\r\n phone: result.phone,\r\n website: result.websiteUrl,\r\n id: result.id,\r\n tags: {\r\n [this.$store.getters['dictionaries/getByKey']('ViewElements.DealerPage.Tags.Private')]: result.isPrivate,\r\n [this.$store.getters['dictionaries/getByKey']('ViewElements.DealerPage.Tags.Store')]: result.isProffessional,\r\n },\r\n categories: result.categories,\r\n },\r\n\r\n }));\r\n },\r\n isPrivateUser() {\r\n if (!this.userType) {\r\n return null;\r\n }\r\n return this.userType === 'private';\r\n },\r\n },\r\n mounted() {\r\n // eslint-disable-next-line no-undef\r\n const jsonValue = document.getElementById('js-dealer-page-json');\r\n // eslint-disable-next-line no-undef\r\n const initialValues = JSON.parse(\r\n jsonValue.innerHTML,\r\n );\r\n\r\n if (!initialValues) {\r\n return;\r\n }\r\n\r\n if (initialValues.zoom) {\r\n this.initialZoom = initialValues.zoom ? Number(initialValues.zoom) : this.initialZoom;\r\n }\r\n\r\n if (initialValues.currentPosition) {\r\n this.currentPosition = {\r\n lat: Number(initialValues.currentPosition.lat),\r\n lng: Number(initialValues.currentPosition.lng),\r\n };\r\n }\r\n // this.results = initialValues.markers;\r\n this.filters = initialValues.filters;\r\n // this.totalResults = initialValues.total;\r\n this.token = this.$route.query.token || '';\r\n this.filterMappings = JSON.parse(initialValues.filterMapping);\r\n this.showWebshops = initialValues.showWebshops || false;\r\n this.zoom = initialValues.zoom ? Number(initialValues.zoom) : this.zoom;\r\n this.market = initialValues.market || this.market;\r\n\r\n this.setSelectedFilterBasedOnCategory();\r\n\r\n // Set the active tab\r\n if (this.showWebshops) {\r\n this.activeTab = 1;\r\n }\r\n\r\n if (window.innerWidth < 992) {\r\n this.showMap = false;\r\n }\r\n this.search(this.filters);\r\n },\r\n });\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\nvar VueGoogleMaps = VueGoogleMaps; // eslint-disable-line\r\npressalit.dealersList = pressalit.dealersList\r\n || new (function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n Vue.component('dealers-list', {\r\n template: '#js-dealers-list',\r\n props: {\r\n dealers: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n icon: {\r\n type: String,\r\n default: '',\r\n },\r\n isClickableHeadline: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n activeDealer: {\r\n type: Number,\r\n default: -1,\r\n },\r\n },\r\n watch: {\r\n activeDealer: {\r\n handler(newDealerId) {\r\n const list = document.getElementById('dealer-list');\r\n const child = document.getElementById(`dealer-${newDealerId}`);\r\n if (list && child) {\r\n setTimeout(() => {\r\n list.scrollTo({\r\n top: child.offsetTop,\r\n behavior: 'smooth',\r\n });\r\n }, 0);\r\n }\r\n },\r\n },\r\n },\r\n methods: {\r\n dealerClick(dealer) {\r\n if (!this.isClickableHeadline) {\r\n return;\r\n }\r\n\r\n this.$emit('dealer-click', dealer);\r\n },\r\n openAccordion(dealer) {\r\n this.$emit('update:dealer', dealer);\r\n },\r\n closeAccordion() {\r\n this.$emit('update:dealer', -1);\r\n },\r\n getDealerState(dealer) {\r\n if (dealer.info.state) {\r\n return `, ${dealer.info.state}`;\r\n }\r\n\r\n return '';\r\n },\r\n },\r\n });\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.dropDownFilter = pressalit.dropDownFilter || new function () {\r\n this.init = function () {\r\n Vue.component('drop-down-filter', {\r\n template: '#js-drop-down-filter-template',\r\n store: pressalit.vuex.store,\r\n props: {\r\n filter: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n data() {\r\n return {\r\n selected: null,\r\n };\r\n },\r\n computed: {\r\n options() {\r\n const options = [];\r\n if (this.filter.properties && this.filter.properties.allowNullable === 'true') {\r\n const dictionary = this.$store.getters['dictionaries/getByKey']('DealerList.Select');\r\n options.push({\r\n selector: null,\r\n value: dictionary.replace('{0}', this.filter.title.toLowerCase()),\r\n });\r\n }\r\n return [...options, ...this.filter.options];\r\n },\r\n },\r\n methods: {\r\n setFilter(event) {\r\n const value = event.target.value;\r\n const filter = JSON.parse(JSON.stringify(this.filter));\r\n filter.selected = [];\r\n if (value) {\r\n filter.selected.push(value);\r\n }\r\n this.$emit('update:filter', filter);\r\n },\r\n },\r\n mounted() {\r\n this.selected = this.filter.selected.length ? this.filter.selected[0] : null;\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nconst selectedAlias = 'TRADE'; // Should be changed when this is used for anything else than TRADE/DIY filter\r\npressalit.filterCheckbox = pressalit.filterCheckbox || new function () {\r\n this.init = function () {\r\n Vue.component('filter-checkbox', {\r\n props: ['filter'],\r\n template: '#js-filter-checkbox-template',\r\n data() {\r\n return {\r\n localValue: null,\r\n selectedValue: '',\r\n initialLoad: true,\r\n };\r\n },\r\n mounted() {\r\n this.selectedValue = this.filter.options.find(x => x.value === selectedAlias).selector;\r\n this.setLocalValue();\r\n this.initialLoad = false;\r\n },\r\n methods: {\r\n setLocalValue() {\r\n if (this.filter && this.filter.selected && !this.filter.selected.length) {\r\n this.localValue = false;\r\n } else if (this.filter && this.filter.options && this.filter.options.length === 2) {\r\n const isSelected = this.filter.selected.filter(selector => selector === this.selectedValue);\r\n this.localValue = !!isSelected;\r\n }\r\n },\r\n },\r\n watch: {\r\n 'filter.selected': {\r\n handler() {\r\n this.setLocalValue();\r\n },\r\n },\r\n localValue: {\r\n handler(_newValue, prevValue) {\r\n if (prevValue === null || this.initialLoad) {\r\n return;\r\n }\r\n\r\n if (this.localValue && this.filter && this.filter.options && this.filter.options.length) {\r\n this.filter.selected = [this.selectedValue];\r\n } else if (this.filter) {\r\n this.filter.selected = [];\r\n }\r\n\r\n this.$emit('update:filter', this.filter);\r\n },\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.footer = pressalit.footer || (new function () {\r\n this.init = function () {\r\n\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.videoPlayer = pressalit.videoPlayer || (new function () {\r\n this.init = function () {\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar VueRouter = VueRouter || {}; // eslint-disable-line\r\npressalit.listFilters = pressalit.listFilters\r\n || new (function () {\r\n this.init = function () {\r\n Vue.use(VueRouter);\r\n\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n\r\n Vue.component('mobile-filter-toggle', {\r\n template: '#js-mobile-filter-toggle',\r\n store: pressalit.vuex.store,\r\n props: ['filters', 'visibleFilterIds', 'products', 'isDealerView', 'applyDictionaryKey'],\r\n router,\r\n watch: {\r\n products: {\r\n handler() {\r\n this.$store.commit('navigation/setNavigationProps', {\r\n filters: this.filters,\r\n visibleFilterIds: this.visibleFilterIds,\r\n isInOverlay: true,\r\n products: this.count,\r\n });\r\n },\r\n },\r\n },\r\n computed: {\r\n count() {\r\n return this.products !== 0 ? this.products : '';\r\n },\r\n },\r\n methods: {\r\n toggleSidebar() {\r\n this.$store.commit('navigation/setIsFullWidth', true);\r\n this.$store.commit('navigation/setComponent', 'list-filters');\r\n this.$store.commit('navigation/setNavigationProps', {\r\n filters: this.filters,\r\n visibleFilterIds: this.visibleFilterIds,\r\n isInOverlay: true,\r\n products: this.products,\r\n isDealerView: this.isDealerView,\r\n applyDictionaryKey: this.applyDictionaryKey,\r\n });\r\n this.$store.commit('navigation/setListeners', {\r\n 'update:filters': (filters) => {\r\n this.$emit('update:filters', filters);\r\n },\r\n hideModal: () => {\r\n this.$store.commit('navigation/setComponent', '');\r\n this.$store.commit('navigation/setListeners', {});\r\n this.$store.commit('navigation/setNavigationProps', {});\r\n this.$store.commit('navigation/toggleSidebar');\r\n },\r\n });\r\n this.$store.commit('navigation/toggleSidebar');\r\n },\r\n },\r\n });\r\n\r\n Vue.component('list-filters', {\r\n template: '#js-list-filters-template',\r\n props: {\r\n products: {\r\n type: String,\r\n default: '',\r\n },\r\n isInOverlay: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n filters: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n visibleFilterIds: {\r\n type: Array,\r\n default: () => null,\r\n },\r\n showTags: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n applyDictionaryKey: {\r\n type: String,\r\n default: 'ViewElements.ProductList.Apply',\r\n },\r\n isDealerView: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n mounted() {\r\n this.initialFilters = [...this.filters];\r\n },\r\n data() {\r\n return {\r\n openFilters: {},\r\n initialFilters: [],\r\n };\r\n },\r\n computed: {\r\n showBackdrop() {\r\n return Object.keys(this.openFilters).some(\r\n x => !!this.openFilters[x],\r\n );\r\n },\r\n visibleFilters() {\r\n if (!this.visibleFilterIds) {\r\n return this.filters;\r\n }\r\n return this.filters.filter(x => x.properties\r\n && x.properties.perfionFieldName\r\n && this.visibleFilterIds.indexOf(x.properties.perfionFieldName) > -1);\r\n },\r\n tags() {\r\n if (!this.filters.length || !this.visibleFilterIds || this.isDealerView) {\r\n return [];\r\n }\r\n\r\n let filters = this.filters;\r\n if (this.visibleFilterIds) {\r\n filters = this.filters.filter(filter => this.visibleFilterIds.includes(filter.identifier));\r\n }\r\n\r\n // Construct the tag list based of selected filters\r\n return filters.reduce((arr, filter) => {\r\n switch (filter.filterType) {\r\n case 2:\r\n if (\r\n filter.selected\r\n && filter.selected.length\r\n ) {\r\n const tags = filter.selected\r\n .map((x) => {\r\n const option = filter.options.find(\r\n f => f.selector === x,\r\n );\r\n if (!option) {\r\n return null;\r\n }\r\n // Construct the tag entity;\r\n return {\r\n filterId: filter.filterId,\r\n label: option.properties\r\n && option.properties\r\n .customLabel\r\n ? option.properties\r\n .customLabel : option.value,\r\n selector: x,\r\n };\r\n })\r\n .filter(x => x != null)\r\n .filter((x) => {\r\n if (x.label === 'TRADE') {\r\n x.label = this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ]('ViewElements.ProductList.AssortmentForInstallers');\r\n }\r\n return x;\r\n });\r\n arr = arr.concat(tags);\r\n }\r\n break;\r\n case 3:\r\n if (filter.fromValue) {\r\n arr.push({\r\n filterId: filter.filterId,\r\n label: `${filter.fromValue} mm`,\r\n selector: filter.fromValue,\r\n });\r\n }\r\n // if (filter.selected && filter.selected.length && filter.filterId !== 2) {\r\n // const tags = filter.selected.map((x) => {\r\n // const option = filter.options.find(f => f.selector === x);\r\n // if (!option) {\r\n // return null;\r\n // }\r\n // // Construct the tag entity;\r\n // return {\r\n // filterId: filter.filterId,\r\n // label: option.properties && option.properties.customLabel ? option.properties.customLabel : option.value,\r\n // selector: x,\r\n // };\r\n // }).filter(x => x != null);\r\n // arr = arr.concat(tags);\r\n // }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n return arr;\r\n }, []);\r\n },\r\n },\r\n methods: {\r\n closeModal() {\r\n if (this.isInOverlay) {\r\n this.$emit('update:filters', this.initialFilters);\r\n this.$emit('hideModal');\r\n }\r\n },\r\n showResults() {\r\n if (this.isInOverlay) {\r\n this.$emit('hideModal');\r\n }\r\n },\r\n toggle(identifier) {\r\n this.$set(\r\n this.openFilters,\r\n identifier,\r\n !this.openFilters[identifier],\r\n );\r\n // Close all others\r\n Object.keys(this.openFilters).forEach((x) => {\r\n if (x === identifier) {\r\n return;\r\n }\r\n // Set all filters to closed\r\n this.$set(this.openFilters, x, false);\r\n });\r\n },\r\n closeAll() {\r\n this.openFilters = {};\r\n },\r\n updateFilter(newFilter, filter) {\r\n const filters = this.filters.map((x) => {\r\n if (x.filterId === filter.filterId) {\r\n x = newFilter;\r\n }\r\n return x;\r\n });\r\n this.closeAll();\r\n this.$emit('update:filters', filters);\r\n\r\n // Update the category\r\n if (\r\n newFilter\r\n && newFilter.properties\r\n && newFilter.properties.type === 'category'\r\n ) {\r\n const selected = newFilter.selected[0];\r\n if (selected != null) {\r\n const option = newFilter.options.find(\r\n x => x.selector === selected,\r\n );\r\n this.$emit('update:category', option);\r\n return;\r\n }\r\n this.$emit('update:category', null);\r\n }\r\n },\r\n removeAllFilters() {\r\n const filters = this.filters.map((x) => {\r\n switch (x.filterType) {\r\n case 2:\r\n x.selected = [];\r\n break;\r\n case 3:\r\n x.fromValue = null;\r\n x.toValue = null;\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n return x;\r\n });\r\n filters.resetAllFilters = true;\r\n this.$emit('update:filters', filters);\r\n this.$emit('update:category', null);\r\n },\r\n removeFilterValue(filterId, selector) {\r\n let updateCategory = false;\r\n const filters = this.filters.map((x) => {\r\n if (x.filterId === filterId) {\r\n switch (x.filterType) {\r\n case 2:\r\n updateCategory = x.properties\r\n && x.properties.type === 'category';\r\n // eslint-disable-next-line no-case-declarations\r\n const index = x.selected.indexOf(\r\n selector,\r\n );\r\n if (index > -1) {\r\n x.selected.splice(index, 1);\r\n }\r\n break;\r\n case 3:\r\n x.fromValue = null;\r\n x.toValue = null;\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return x;\r\n });\r\n this.$emit('update:filters', filters);\r\n\r\n if (updateCategory) {\r\n this.$emit('update:category', null);\r\n }\r\n },\r\n mobileTagsList(filter) {\r\n return filter.options\r\n .filter(item => filter.selected && filter.selected.includes(item.selector))\r\n .map(item => item.value)\r\n .join(', ');\r\n },\r\n },\r\n });\r\n };\r\n })();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar VueRouter = VueRouter || {}; // eslint-disable-line\r\npressalit.toggleMobileFilters = pressalit.toggleMobileFilters\r\n || new function () {\r\n this.init = function () {\r\n const el = document.getElementById('js-toggle-mobile-filter');\r\n if (!el) {\r\n return;\r\n }\r\n Vue.use(VueRouter);\r\n\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n router,\r\n methods: {\r\n toggleSidebar() {\r\n this.$store.commit('navigation/setIsFullWidth', true);\r\n this.$store.commit('navigation/setComponent', 'mobile-filter');\r\n this.$store.commit('navigation/toggleSidebar');\r\n },\r\n },\r\n });\r\n };\r\n }();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar cookie = cookie || {}; // eslint-disable-line\r\npressalit.loginPage = pressalit.loginPage || new function () {\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-login-page');\r\n let i;\r\n if (!els) {\r\n return;\r\n }\r\n for (i = 0; i < els.length; ++i) {\r\n const el = els[i];\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n data: {\r\n createAccountToggle: false,\r\n showCreateAccount: false,\r\n country: '',\r\n company: '',\r\n email: '',\r\n password: '',\r\n username: '',\r\n terms: false,\r\n submitting: false,\r\n error: false,\r\n errorMessage: '',\r\n success: false,\r\n loginSubmitting: false,\r\n loginError: false,\r\n loginSuccess: false,\r\n countries: [],\r\n currentCountry: {},\r\n },\r\n created() {\r\n const initialState = JSON.parse(\r\n document.getElementById('js-login-page-json')\r\n .innerHTML,\r\n );\r\n this.countries = initialState;\r\n },\r\n mounted() {\r\n const languageSegment = window.location.pathname.match('/..-../');\r\n\r\n if (languageSegment) {\r\n if (!this.countries.length) {\r\n return;\r\n }\r\n const languageFromSegment = this.countries.find(\r\n countryUrl => countryUrl.languageAbsoluteUrl.indexOf(\r\n languageSegment[0].replace(/\\//g, ''),\r\n ) > -1,\r\n );\r\n this.currentCountry = languageFromSegment || this.countries[0];\r\n }\r\n },\r\n methods: {\r\n jwtDecode(t) {\r\n const token = {};\r\n token.raw = t;\r\n token.header = JSON.parse(window.atob(t.split('.')[0]));\r\n token.payload = JSON.parse(window.atob(t.split('.')[1]));\r\n return (token);\r\n },\r\n createUser() {\r\n this.createAccountToggle = !this.createAccountToggle;\r\n this.showCreateAccount = false;\r\n },\r\n showCreateUser() {\r\n this.showCreateAccount = true;\r\n },\r\n clearData() {\r\n this.country = '';\r\n this.company = '';\r\n this.username = '';\r\n this.email = '';\r\n this.password = '';\r\n this.terms = false;\r\n },\r\n login(redirectUrl) {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.loginSubmitting = true;\r\n this.loginError = false;\r\n this.loginSuccess = false;\r\n const req = this.$store.dispatch('auth/login', {\r\n username: this.username,\r\n password: this.password,\r\n });\r\n req.then(() => {\r\n const trackinghash = this.jwtDecode(Cookies.get('pressalit_access_token')).payload.trackinghash;\r\n this.$store.dispatch('tracking/login', trackinghash);\r\n this.loginSuccess = true;\r\n this.loginSubmitting = false;\r\n if (redirectUrl) {\r\n window.location.href = redirectUrl;\r\n }\r\n }, () => {\r\n this.loginError = true;\r\n this.loginSubmitting = false;\r\n }, () => {\r\n this.loginSubmitting = false;\r\n });\r\n }\r\n });\r\n },\r\n submit() {\r\n this.submitting = true;\r\n this.error = false;\r\n this.errorMessage = '';\r\n this.success = false;\r\n const req = this.$store.dispatch('auth/createUser', {\r\n country: this.currentCountry.languageName,\r\n company: this.company,\r\n email: this.email,\r\n password: this.password,\r\n terms: this.terms,\r\n });\r\n req.then((data) => {\r\n this.success = true;\r\n this.submitting = false;\r\n this.$store.dispatch('tracking/createUser', data.data.memberId);\r\n setTimeout(() => {\r\n this.showCreateAccount = false;\r\n this.createAccountToggle = false;\r\n this.clearData();\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\r\n }, 5000);\r\n }, (err) => {\r\n this.error = true;\r\n this.errorMessage = err.response.data.message ? this.$store.getters[\r\n 'dictionaries/getByKey'\r\n ](err.response.data.message) : err;\r\n this.submitting = false;\r\n }, () => {\r\n this.submitting = false;\r\n });\r\n },\r\n validateBeforeSubmit() {\r\n this.$validator.validateAll().then((result) => {\r\n if (result) {\r\n this.submit();\r\n }\r\n });\r\n },\r\n },\r\n });\r\n }\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\n\r\npressalit.modal = pressalit.modal || new function () {\r\n this.createOverlay = function (element) {\r\n novicell.overlay.create({\r\n selector: element,\r\n class: 'modal',\r\n onLoaded() {\r\n const modalClosers = document.getElementsByClassName(\r\n 'js-modal-close',\r\n );\r\n for (let i = 0; i < modalClosers.length; i++) {\r\n modalClosers[i].addEventListener('click', () => {\r\n novicell.overlay.destroy();\r\n });\r\n }\r\n },\r\n });\r\n };\r\n\r\n this.init = function () {\r\n const modalTriggers = document.getElementsByClassName(\r\n 'js-modal-trigger',\r\n );\r\n\r\n for (let i = 0; i < modalTriggers.length; i++) {\r\n modalTriggers[i].addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n const currentTrigger = e.target;\r\n const triggerElement = currentTrigger.getAttribute(\r\n 'data-element',\r\n );\r\n pressalit.modal.createOverlay(triggerElement);\r\n });\r\n }\r\n };\r\n}();\r\n","\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.navigationMessage = pressalit.navigationMessage || new function () {\r\n this.init = function () {\r\n const el = document.getElementById('js-navigation-message');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n computed: {\r\n isIe() {\r\n return this.$store.getters['agent/isAgentIe'];\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\npressalit.searchTrigger = pressalit.searchTrigger || (new function () {\r\n this.init = function () {\r\n Vue.component('navigation-search', {\r\n template: '#js-navigation-search',\r\n props: {\r\n quickLinks: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n searchUrl: {\r\n type: String,\r\n default: '',\r\n },\r\n },\r\n data() {\r\n return {\r\n results: {},\r\n searchTerm: '',\r\n page: 1,\r\n };\r\n },\r\n computed: {\r\n searchOpen: {\r\n get() {\r\n return this.$store.state.navigation.isSearchOpen;\r\n },\r\n set(open) {\r\n this.$store.commit('navigation/toggleSearch', open);\r\n this.$store.commit('navigation/toggleOverlay', open);\r\n },\r\n },\r\n },\r\n methods: {\r\n setResults(results) {\r\n this.results = results;\r\n },\r\n submit() {\r\n this.$refs.searchInput.goToSearch();\r\n },\r\n setSearchTerm(searchTerm) {\r\n this.searchTerm = searchTerm;\r\n },\r\n setPage(page) {\r\n this.page = page;\r\n },\r\n },\r\n watch: {\r\n searchOpen: {\r\n handler(value) {\r\n if (!value) {\r\n this.searchTerm = '';\r\n }\r\n if (value) {\r\n document.getElementsByTagName('html')[0].classList.add('search-results__lock-body-scroll');\r\n } else {\r\n document.getElementsByTagName('html')[0].classList.remove('search-results__lock-body-scroll');\r\n }\r\n },\r\n },\r\n },\r\n });\r\n };\r\n}());\r\n\r\npressalit.navigation = pressalit.navigation || new function () {\r\n // Component for main navigation\r\n Vue.component('main-navigation', {\r\n template: '#js-main-navigation',\r\n store: pressalit.vuex.store,\r\n data() {\r\n return {\r\n navigationState: [],\r\n currentNav: null,\r\n prevNav: null,\r\n navigation: [],\r\n secondNavigation: [],\r\n findDealer: {},\r\n };\r\n },\r\n // options\r\n computed: {\r\n currentList() {\r\n const currentLevel = this.navigationState.length;\r\n\r\n if (!currentLevel) {\r\n return this.navigation;\r\n }\r\n return this.currentNav ? this.currentNav.children : [];\r\n },\r\n current() {\r\n return this.$store.state.languagemodal.current;\r\n },\r\n },\r\n mounted() {\r\n const nav = JSON.parse(document.getElementById('js-main-navigation-json').innerHTML);\r\n this.navigation = nav.mainNavigation;\r\n this.secondNavigation = nav.secondNavigation;\r\n this.findDealer = nav.findDealer;\r\n },\r\n methods: {\r\n selectNode(item) {\r\n this.navigationState.push(item.nodeId);\r\n this.prevNav = this.currentNav;\r\n this.currentNav = item;\r\n },\r\n goBack() {\r\n this.selectedItem = null;\r\n this.navigationState.pop();\r\n this.currentNav = this.prevNav;\r\n },\r\n open() {\r\n this.$store.commit('languagemodal/toggle');\r\n },\r\n },\r\n });\r\n this.init = function () {\r\n const navigationEl = document.getElementById('navigation');\r\n if (!navigationEl) {\r\n return;\r\n }\r\n\r\n const navigationContentEl = document.getElementById('navigation-menu-content');\r\n if (navigationContentEl) {\r\n new Vue({\r\n el: navigationContentEl,\r\n store: pressalit.vuex.store,\r\n computed: {\r\n isSidebarOpen: {\r\n get() {\r\n return this.$store.state.navigation.isSidebarOpen;\r\n },\r\n set(isOpen) {\r\n this.$store.commit('navigation/toggleSidebar', isOpen);\r\n },\r\n },\r\n isFullWidth() {\r\n return this.$store.state.navigation.isFullWidth;\r\n },\r\n navigationComponent() {\r\n return this.$store.state.navigation.component || 'main-navigation';\r\n },\r\n navigationProps() {\r\n return this.$store.state.navigation.navigationProps || {};\r\n },\r\n navigationListeners() {\r\n return this.$store.state.navigation.listeners || {};\r\n },\r\n },\r\n });\r\n }\r\n\r\n\r\n new Vue({\r\n el: navigationEl,\r\n store: pressalit.vuex.store,\r\n data: {\r\n wishlistUrl: '',\r\n },\r\n computed: {\r\n wishlistQuantity() {\r\n const quantity = this.$store.getters['wishlist/getQuantity'];\r\n return quantity;\r\n },\r\n quantity() {\r\n const quantity = this.$store.getters['basket/getQuantity'];\r\n if (quantity > 99) {\r\n return '+99';\r\n }\r\n return quantity;\r\n },\r\n isIe() {\r\n return this.$store.getters['agent/isAgentIe'];\r\n },\r\n currentList() {\r\n return [];\r\n },\r\n isSidebarOpen: {\r\n get() {\r\n return this.$store.state.navigation.isSidebarOpen;\r\n },\r\n set(isOpen) {\r\n this.$store.commit('navigation/toggleSidebar', isOpen);\r\n },\r\n },\r\n showOverlay: {\r\n get() {\r\n return this.$store.state.navigation.showOverlay;\r\n },\r\n set(show) {\r\n this.$store.commit('navigation/toggleOverlay', show);\r\n },\r\n },\r\n isLoggedIn() {\r\n return this.$store.getters['auth/isLoggedIn'];\r\n },\r\n },\r\n methods: {\r\n logout() {\r\n this.$store.dispatch('auth/logout');\r\n },\r\n openSidebar() {\r\n this.isSidebarOpen = true;\r\n this.$store.commit('navigation/setComponent', 'main-navigation');\r\n },\r\n },\r\n created() {\r\n this.$store.dispatch('wishlist/getSummaryFromCookie');\r\n this.$store.dispatch('basket/getSummaryFromCookie');\r\n\r\n const nav = JSON.parse(document.getElementById('js-main-navigation-json').innerHTML);\r\n this.wishlistUrl = nav.wishlistUrl;\r\n },\r\n });\r\n\r\n\r\n function toggleNavTop() {\r\n const navigation = document.getElementById('navigation');\r\n if (!navigation) {\r\n return;\r\n }\r\n const burgerIcon = document.getElementById('js-navigation-burger');\r\n const navigationWhite = document.getElementById('js-navigation-log-white');\r\n const navigationBlack = document.getElementById('js-navigation-log-black');\r\n const bannerMarket = document.getElementById('js-banner-market');\r\n if (window.pageYOffset <= 60 && navigation.classList.contains('transparent')) {\r\n navigation.classList.remove('navigation--solid');\r\n burgerIcon.classList.remove('burger-inner--solid');\r\n navigationWhite.classList.remove('navigation__logo--hidden');\r\n navigationBlack.classList.add('navigation__logo--hidden');\r\n } else if (window.pageYOffset >= 61 && navigation.classList.contains('transparent')) {\r\n navigation.classList.add('navigation--solid');\r\n burgerIcon.classList.add('burger-inner--solid');\r\n navigationBlack.classList.remove('navigation__logo--hidden');\r\n navigationWhite.classList.add('navigation__logo--hidden');\r\n }\r\n if (navigation && bannerMarket) {\r\n const main = document.getElementById('js-main');\r\n if (main) {\r\n main.classList.add('main--has-banner');\r\n }\r\n navigation.classList.add('navigation--banner');\r\n }\r\n }\r\n\r\n\r\n /* When the user scrolls down, hide the navbar. When the user scrolls up, show the navbar */\r\n\r\n let prevScrollpos = window.pageYOffset;\r\n window.onscroll = function () {\r\n const currentScrollPos = window.pageYOffset;\r\n const navigation = document.getElementById('navigation');\r\n const searchPageIsActive = document.getElementById('js-navigation-search');\r\n const specificationNavigation = document.querySelector('.js-specification-navigation');\r\n if (!navigation) {\r\n return;\r\n }\r\n if (currentScrollPos > 50) {\r\n if (searchPageIsActive && !searchPageIsActive.classList.contains('search-page-is-active')) {\r\n if (prevScrollpos > currentScrollPos) {\r\n navigation.classList.remove('navigation--solid--hidden');\r\n if (specificationNavigation) {\r\n specificationNavigation.classList.add('specification-navigation--push');\r\n }\r\n } else {\r\n navigation.classList.add('navigation--solid--hidden');\r\n if (specificationNavigation) {\r\n specificationNavigation.classList.remove('specification-navigation--push');\r\n }\r\n }\r\n }\r\n }\r\n toggleNavTop();\r\n prevScrollpos = currentScrollPos;\r\n };\r\n\r\n toggleNavTop();\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\n\r\npressalit.orderPage = pressalit.orderPage || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n const pageEl = document.getElementById('js-order-page');\r\n if (!pageEl) {\r\n return;\r\n }\r\n const store = pressalit.vuex.store;\r\n new Vue({\r\n el: pageEl,\r\n store,\r\n router,\r\n data: {\r\n order: null,\r\n loading: false,\r\n },\r\n created() {\r\n this.getOrder();\r\n },\r\n computed: {\r\n orderId() {\r\n return this.$route.query.orderid;\r\n },\r\n },\r\n methods: {\r\n getOrder() {\r\n this.loading = true;\r\n\r\n if (!this.orderId) {\r\n // eslint-disable-next-line no-console\r\n console.log('No order id');\r\n return;\r\n }\r\n axios.get(`/api/frontend/selfservice/getcustomerorder?orderNumber=${this.orderId}`)\r\n .then(({ data }) => {\r\n if (!data.isSuccess || data.error) {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred');\r\n }\r\n this.order = data.data;\r\n }).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred', error);\r\n }).finally(() => {\r\n this.loading = false;\r\n });\r\n },\r\n goToProduct(url, product) {\r\n this.$store.dispatch('tracking/itemView', product);\r\n if (url) {\r\n window.location = url;\r\n }\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\npressalit.productList = pressalit.productList\r\n || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-product-list');\r\n let i;\r\n if (!els) {\r\n return;\r\n }\r\n for (i = 0; i < els.length; ++i) {\r\n const el = els[i];\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n new Vue({\r\n el,\r\n router,\r\n store: pressalit.vuex.store,\r\n data: {\r\n initialCategoryState: {},\r\n visibleFilters: [],\r\n initialFilters: [],\r\n },\r\n watch: {\r\n '$route.query': {\r\n immediate: false,\r\n handler: 'onQueryChange',\r\n },\r\n filterManufacturerName: {\r\n handler() {\r\n if (this.filterManufacturerName && this.filterProductName) {\r\n const eventData = {\r\n manufacturerTitle: this.filterManufacturerName,\r\n modelTitle: this.filterProductName,\r\n };\r\n this.$store.dispatch('tracking/trackToiletSeatManufacturerSearch', eventData);\r\n }\r\n },\r\n },\r\n },\r\n computed: {\r\n showToiletFilterButtons() {\r\n return this.filters.some(filter => filter.title === 'NCPasModel' && filter.selected.length);\r\n },\r\n hasBestFit() {\r\n return this.products.some(product => product.fit === '3');\r\n },\r\n hasSecondBestFit() {\r\n return this.products.some(product => product.fit === '0');\r\n },\r\n hasThirdBestFit() {\r\n return this.products.some(product => product.fit === '1');\r\n },\r\n hideServersideRendered() {\r\n return this.$store.state.filter.hideServersideRendered;\r\n },\r\n showContentBoxes() {\r\n return !this.hideServersideRendered && this.total > 20;\r\n },\r\n count() {\r\n let count = 0;\r\n if (!this.hideServersideRendered) {\r\n count += this.initialCount;\r\n }\r\n count += this.products.length;\r\n return count;\r\n },\r\n hideLoadmore() {\r\n if (!this.count) {\r\n return true;\r\n }\r\n return this.count >= this.total;\r\n },\r\n products() {\r\n return this.$store.state.filter.products;\r\n },\r\n filters() {\r\n return this.$store.getters['filter/getFilters'];\r\n },\r\n total() {\r\n return this.$store.state.filter.total;\r\n },\r\n filterManufacturerName() {\r\n return this.$store.getters['filter/getFilterManufacturerName'];\r\n },\r\n filterProductName() {\r\n return this.$store.getters['filter/getFilterProductName'];\r\n },\r\n endpoint() {\r\n return this.$store.getters['filter/getProductEndpoint'];\r\n },\r\n page: {\r\n get() {\r\n return this.$store.state.filter.page;\r\n },\r\n set(page) {\r\n this.$store.commit('filter/setFilters', {\r\n page,\r\n });\r\n },\r\n },\r\n sorting() {\r\n return this.$store.state.filter.sorting;\r\n },\r\n initialCount() {\r\n return this.$store.state.filter.initialCount;\r\n },\r\n searching() {\r\n return this.$store.state.filter.searching;\r\n },\r\n },\r\n created() {\r\n const productListJson = document.getElementById(\r\n 'js-product-list-json',\r\n );\r\n\r\n if (productListJson) {\r\n const initialState = JSON.parse(\r\n productListJson.innerHTML,\r\n );\r\n\r\n const manufacturerFilters = initialState.manufacturerFilters || null;\r\n\r\n if (manufacturerFilters !== null) {\r\n // Check if any manufacturer filters have selected values\r\n const selectedManufacturerFilters = manufacturerFilters.filter(manufacturerFilter => manufacturerFilter.selected && manufacturerFilter.selected.length);\r\n\r\n // If they do, use the endpoint for manufacturer searches\r\n if (selectedManufacturerFilters.length) {\r\n this.$store.commit('filter/setIsManufacturerSearch', true);\r\n }\r\n }\r\n\r\n this.$store.commit('filter/setFilters', {\r\n manufacturerFilters,\r\n total: initialState.total,\r\n pageSize: initialState.pagesize,\r\n filters: initialState.filters,\r\n categoryId: initialState.categoryId,\r\n initialCount: initialState.initialCount * 1,\r\n });\r\n }\r\n\r\n const categoryJson = document.getElementById(\r\n 'js-category-json',\r\n );\r\n if (categoryJson) {\r\n const initialCategoryState = JSON.parse(\r\n categoryJson.innerHTML,\r\n );\r\n this.visibleFilters = initialCategoryState.filterIds;\r\n this.initialCategoryState = initialCategoryState;\r\n\r\n if (initialCategoryState.filterMapping) {\r\n const filterMappings = JSON.parse(initialCategoryState.filterMapping);\r\n this.$store.dispatch('filter/setMappings', {\r\n filterMappings,\r\n });\r\n }\r\n }\r\n\r\n const currentQuery = this.$route.query;\r\n\r\n this.$store.commit('filter/setFilters', {\r\n page: currentQuery.page * 1 || 1,\r\n sorting: currentQuery.sort || 'NameAscending',\r\n filterToken: currentQuery.token || null,\r\n });\r\n },\r\n methods: {\r\n scrollToProductList() {\r\n const productList = document.querySelector('.js-product-list');\r\n const productListRect = productList.getBoundingClientRect();\r\n window.scrollTo(0, (productListRect.y + window.scrollY) - 50);\r\n },\r\n objectIsEmpty(obj) {\r\n for (const prop in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return JSON.stringify(obj) === JSON.stringify({});\r\n },\r\n insertManufacturerInformation(fitDescription) {\r\n return fitDescription\r\n .replace('[manufacturer]', this.filterProductName)\r\n .replace('[product]', this.filterManufacturerName);\r\n },\r\n toggleSidebar(comp) {\r\n this.$store.commit('navigation/setComponent', comp);\r\n this.$store.commit('navigation/toggleSidebar');\r\n },\r\n updateQuery() {\r\n this.$store.dispatch('filter/updateQuery', this.$router);\r\n },\r\n onQueryChange(newVal, oldVal) {\r\n // If there wasnt any filter before, or the filter wasnt the same dont search\r\n // Since the filter has been changed after an search\r\n if (this.objectIsEmpty(newVal) || (newVal.filter && !oldVal.filter) || oldVal.filter !== newVal.filter) {\r\n return;\r\n }\r\n this.search(this.filters);\r\n },\r\n loadmore() {\r\n this.page += 1;\r\n this.search(this.filters);\r\n this.updateQuery();\r\n },\r\n removeAllFilters() {\r\n const filters = this.filters.map((x) => {\r\n switch (x.filterType) {\r\n case 2:\r\n x.selected = [];\r\n break;\r\n case 3:\r\n x.fromValue = null;\r\n x.toValue = null;\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n return x;\r\n });\r\n\r\n this.$store.commit('filter/setFilterProductName', '');\r\n this.$store.commit('filter/setFilterManufacturerName', '');\r\n this.$store.commit('filter/setIsManufacturerSearch', false);\r\n\r\n filters.resetAllFilters = true;\r\n this.onFilter(filters);\r\n this.updateCategory(null);\r\n },\r\n reset() {\r\n this.$store.commit('filter/setFilters', {\r\n page: 1,\r\n initialCount: 0,\r\n products: [],\r\n });\r\n },\r\n updateSorting() {\r\n this.$store.commit('filter/hideServersideRendered');\r\n this.reset();\r\n this.updateQuery();\r\n },\r\n onFilter(filters) {\r\n if (this.removeAllFilters) {\r\n this.scrollToProductList();\r\n }\r\n if (filters.resetAllFilters && this.filterProductName) {\r\n this.removeAllFilters();\r\n return;\r\n }\r\n this.$store.commit('filter/hideServersideRendered');\r\n this.reset();\r\n this.search(filters);\r\n },\r\n updateCategory(option) {\r\n let category = {\r\n title: this.initialCategoryState.heroHeading,\r\n description: this.initialCategoryState.heroText,\r\n url: this.initialCategoryState.url,\r\n };\r\n if (option) {\r\n category = {\r\n title: option.value,\r\n description: '',\r\n url: option.properties.url,\r\n };\r\n }\r\n\r\n // Update the state\r\n const headingElement = document.querySelector(\r\n '.js-hero-heading',\r\n );\r\n const descriptionElement = document.querySelector(\r\n '.js-hero-description',\r\n );\r\n document.title = category.title || document.title;\r\n if (headingElement && category.title) {\r\n headingElement.textContent = category.title;\r\n }\r\n if (descriptionElement && category.description) {\r\n descriptionElement.textContent = category.description;\r\n }\r\n\r\n const isRelativeCategoryUrl = /^https?:\\/\\//i.test(category.url);\r\n\r\n // Strip the URL to fit into being relative\r\n const newURL = !isRelativeCategoryUrl ? category.url : new URL(category.url).pathname;\r\n\r\n if (newURL) {\r\n this.$router.replace(newURL);\r\n }\r\n },\r\n getFiltervalue(filterName, filterArray) {\r\n if (!filterArray) {\r\n return null;\r\n }\r\n\r\n const filterMatch = filterArray.filter(filterEntry => filterEntry.identifier === filterName);\r\n if (filterMatch.length < 1 || !filterMatch[0].options.length) {\r\n return null;\r\n }\r\n\r\n const selectorMatch = filterMatch[0].options.filter(option => option.selector === filterMatch[0].selected[0]);\r\n if (selectorMatch.length > 0) {\r\n return selectorMatch[0].value;\r\n }\r\n\r\n return null;\r\n },\r\n search(filters) {\r\n this.$store.dispatch('filter/search', {\r\n filters,\r\n replaceFilters: true,\r\n endpoint: this.endpoint,\r\n router: this.$router,\r\n }).then(() => {\r\n const filterProductName = this.getFiltervalue('NCPasManufacturer', filters);\r\n const filterManufacturerName = this.getFiltervalue('NCPasModel', filters);\r\n if (filterProductName && filterManufacturerName) {\r\n this.$store.commit('filter/setFilterProductName', filterProductName.trim());\r\n this.$store.commit('filter/setFilterManufacturerName', filterManufacturerName.trim());\r\n this.$store.commit('filter/setIsManufacturerSearch', true);\r\n }\r\n });\r\n },\r\n },\r\n beforeDestroy() {\r\n this.$store.commit('filter/resetFilters');\r\n this.$store.commit('filter/setProductEndpoint', '/api/catalog/search/SearchProducts');\r\n },\r\n });\r\n }\r\n };\r\n }();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\n\r\npressalit.productListHighlight = pressalit.productListHighlight || (new function () {\r\n this.init = function () {\r\n const triggers = document.querySelectorAll('.js-highlight-trigger');\r\n\r\n if (!triggers) {\r\n return;\r\n }\r\n for (let i = 0; i < triggers.length; i++) {\r\n const currentTrigger = triggers[i];\r\n currentTrigger.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n novicell.overlay.create({\r\n selector: currentTrigger.getAttribute('data-element'),\r\n class: 'selector-overlay',\r\n onCreate() {},\r\n onLoaded() {},\r\n onDestroy() {},\r\n });\r\n });\r\n }\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\npressalit.productPage = pressalit.productPage || new function () {\r\n this.init = function () {\r\n const pageEl = document.getElementById('js-product-page');\r\n if (!pageEl) {\r\n return;\r\n }\r\n const store = pressalit.vuex.store;\r\n new Vue({\r\n el: pageEl,\r\n store,\r\n data() {\r\n return {\r\n productId: '',\r\n productLine: '',\r\n activeBasketLine: null,\r\n activeWishlistLine: null,\r\n wishlistUrl: '',\r\n punchoutShops: [],\r\n showButtonLoading: false,\r\n isLoadingPunchouts: false,\r\n erpId: '',\r\n productPrice: [],\r\n loadingData: undefined,\r\n productQuantity: 1,\r\n isLoadingAddToBasket: false,\r\n addToBasketState: 'initial',\r\n showSuccess: false,\r\n addedToBasketError: false,\r\n addedToBasket: false,\r\n };\r\n },\r\n watch: {\r\n basketLines() {\r\n this.updateActiveBasketLine();\r\n },\r\n wishlistLines() {\r\n this.updateActiveWishlistLine();\r\n },\r\n },\r\n methods: {\r\n addToBasket(productId, basketPageUrl, productCategory, productName, parentProductId) {\r\n if (this.showButtonLoading) {\r\n return;\r\n }\r\n this.addedToBasket = false;\r\n this.addedToBasketError = false;\r\n if (this.productQuantity > 999) {\r\n this.productQuantity = 999;\r\n }\r\n if (this.productQuantity < 1) {\r\n this.productQuantity = 1;\r\n }\r\n this.showButtonLoading = true;\r\n this.addToBasketState = 'loading';\r\n this.$store.dispatch('basket/addToBasket', {\r\n productId,\r\n quantity: this.productQuantity,\r\n }).then((result) => {\r\n setTimeout(() => {\r\n this.addToBasketState = 'initial';\r\n this.showButtonLoading = false;\r\n if (!result.data.result.operationCompleted) {\r\n this.addedToBasketError = true;\r\n } else {\r\n this.addedToBasket = true;\r\n this.openPowerStep(this.productQuantity, this.productPrice, basketPageUrl);\r\n const trackingData = {\r\n productId,\r\n productName,\r\n productCategory,\r\n productQuantity: this.productQuantity,\r\n parentProductId,\r\n };\r\n this.$store.dispatch('tracking/addToCart', trackingData);\r\n }\r\n }, 2000);\r\n }, () => {\r\n this.addedToBasketError = true;\r\n this.addedToBasket = false;\r\n this.addToBasketState = 'initial';\r\n this.showButtonLoading = false;\r\n }).finally(() => {\r\n setTimeout(() => {\r\n this.addedToBasket = false;\r\n }, 8000);\r\n });\r\n },\r\n openPowerStep(quantity, price, basketPageUrl) {\r\n let powerStepInstance = null;\r\n novicell.overlay.create({\r\n selector: '#js-overlay-power-step',\r\n class: 'power-step-overlay',\r\n onCreate() {\r\n },\r\n onLoaded() {\r\n powerStepInstance = new Vue({\r\n el: '#power-step',\r\n data() {\r\n return {\r\n quantity,\r\n price,\r\n basketPageUrl,\r\n };\r\n },\r\n methods: {\r\n close() {\r\n novicell.overlay.destroy();\r\n },\r\n },\r\n });\r\n },\r\n onDestroy() {\r\n if (powerStepInstance) {\r\n powerStepInstance.$destroy();\r\n }\r\n },\r\n });\r\n },\r\n updateActiveBasketLine() {\r\n if (this.basketLines.length > 0 && this.productId) {\r\n const activeLines = this.basketLines.filter(line => line.productId === this.productId);\r\n this.activeBasketLine = activeLines[0];\r\n }\r\n },\r\n updateActiveWishlistLine() {\r\n if (this.wishlistLines.length > 0 && this.productId) {\r\n const activeLines = this.wishlistLines.filter(line => line.productId === this.productId);\r\n this.activeWishlistLine = activeLines[0];\r\n }\r\n },\r\n addToWishlist(productId, productCategory, productName, parentProductId) {\r\n const trackingData = {\r\n productId,\r\n productCategory,\r\n parentProductId,\r\n productName,\r\n productQuantity: this.productQuantity,\r\n };\r\n if (this.isAddedToFavorites) {\r\n this.$store.dispatch('tracking/removeFromWishList', trackingData);\r\n this.$store.dispatch('wishlist/remove', this.productLine.id);\r\n return;\r\n }\r\n this.$store.dispatch('wishlist/add', {\r\n productId,\r\n });\r\n this.productId = productId;\r\n this.$store.dispatch('tracking/addToWishList', trackingData);\r\n },\r\n increaseQuantity() {\r\n this.$store.dispatch('wishlist/updateQuantity', {\r\n basketLineId: this.activeWishlistLine.id,\r\n quantity: this.activeWishlistLine.quantity + 1,\r\n });\r\n this.updateActiveWishlistLine();\r\n },\r\n decreaseQuantity() {\r\n if (!this.quantityDecreaseDisabled) {\r\n this.$store.dispatch('wishlist/updateQuantity', {\r\n basketLineId: this.activeWishlistLine.id,\r\n quantity: this.activeWishlistLine.quantity - 1,\r\n });\r\n this.updateActiveWishlistLine();\r\n }\r\n },\r\n changeQuantity(e) {\r\n const value = e.target.value;\r\n if (value) {\r\n this.$store.dispatch('wishlist/updateQuantity', {\r\n basketLineId: this.activeWishlistLine.id,\r\n quantity: parseInt(value, 10),\r\n });\r\n this.updateActiveWishlistLine();\r\n }\r\n },\r\n openPunchoutOverlay(selector, productData) {\r\n const loadingTimer = setTimeout(() => {\r\n this.showButtonLoading = true;\r\n }, 300);\r\n if (this.isLoadingPunchouts) {\r\n return;\r\n }\r\n this.isLoadingPunchouts = true;\r\n axios.get(`/api/frontend/webapp/GetPunchoutWebshops?productId=${productData.productId}&catalogId=${productData.catalogId}&ean=${productData.ean}`)\r\n .then((res) => {\r\n let shopsInstance = null;\r\n novicell.overlay.create({\r\n selector,\r\n class: 'selector-overlay',\r\n onLoaded() {\r\n const data = res.data.data;\r\n if (!data.hasPunchoutShops || !data.shops.length) {\r\n return;\r\n }\r\n\r\n shopsInstance = new Vue({\r\n el: '#punchout-shops',\r\n data() {\r\n return {\r\n punchoutShops: data.shops,\r\n showPunchoutShops: productData.channel === 'DIY' && data.hasPunchoutShops,\r\n showFindDealer: (productData.channel !== 'DIY') || (productData.channel === 'DIY' && !data.hasPunchoutShops),\r\n };\r\n },\r\n methods: {\r\n getDataQueryObject(image) {\r\n const query = { mode: 'crop', quality: '70', center: image.focalPoints };\r\n return JSON.stringify(query);\r\n },\r\n handleShopClick(shop, product) {\r\n store.dispatch('tracking/trackEcommerce', {\r\n affiliation: shop.name,\r\n products: [\r\n {\r\n sku: product.sku,\r\n name: product.name,\r\n category: product.category,\r\n price: 100,\r\n quantity: 1,\r\n },\r\n ],\r\n });\r\n\r\n window.open(shop.link, '_blank');\r\n },\r\n getTrackingClassName(shop) {\r\n return `ga-pp-webshop-punchout--${shop.name.toLowerCase().replace(' ', '')}`;\r\n },\r\n },\r\n });\r\n },\r\n onDestroy() {\r\n shopsInstance.$destroy();\r\n },\r\n });\r\n }).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred', error);\r\n }).finally(() => {\r\n this.isLoadingPunchouts = false;\r\n this.showButtonLoading = false;\r\n clearTimeout(loadingTimer);\r\n });\r\n },\r\n openOverlay(selector, openImage, hAglbFile, jsonFile) {\r\n novicell.overlay.create({\r\n selector,\r\n class: 'selector-overlay__product-page',\r\n onLoaded() {\r\n pressalit.productPageSlider.init(openImage, hAglbFile, jsonFile);\r\n },\r\n });\r\n },\r\n getPrice() {\r\n if (!this.isLoggedIn) {\r\n return;\r\n }\r\n this.loadingData = true;\r\n axios.get(`/api/catalog/price/getbyerpid?erpId=${this.erpId}`)\r\n .then(({ data }) => {\r\n if (!data.isSuccess || data.error) {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred');\r\n }\r\n this.productPrice = data.data;\r\n }).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.log('An error ocurred', error);\r\n }).finally(() => {\r\n this.loadingData = false;\r\n });\r\n },\r\n },\r\n computed: {\r\n basketLines() {\r\n return this.$store.getters['basket/getLines'];\r\n },\r\n wishlistLines() {\r\n return this.$store.getters['wishlist/getLines'];\r\n },\r\n isAddedToFavorites() {\r\n const activeLines = this.wishlistLines.filter(line => line.productId === this.productId);\r\n this.productLine = activeLines[0];\r\n return !!activeLines.length;\r\n },\r\n quantityDecreaseDisabled() {\r\n if (this.activeBasketLine && this.activeBasketLine.quantity === 1) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n isLoggedIn() {\r\n return this.$store.getters['auth/isLoggedIn'];\r\n },\r\n },\r\n created() {\r\n this.erpId = JSON.parse(\r\n document.getElementById('js-product-page-json')\r\n .innerHTML,\r\n );\r\n this.$store.dispatch('wishlist/getWishlist');\r\n this.getPrice();\r\n\r\n const nav = JSON.parse(document.getElementById('js-main-navigation-json').innerHTML);\r\n this.wishlistUrl = nav.wishlistUrl;\r\n\r\n const result = document.getElementById('js-product-id');\r\n if (!result) {\r\n return;\r\n }\r\n this.productId = JSON.parse(result.innerHTML);\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Flickity = Flickity; // eslint-disable-line\r\npressalit.productPageSlider = pressalit.productPageSlider || new function () {\r\n this.init = function (imageToOpen, hAglbFile, jsonFile) {\r\n const pageEls = document.querySelectorAll('#js-product-page-overlay');\r\n let a;\r\n if (!pageEls) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n for (a = 0; a < pageEls.length; ++a) {\r\n const el = pageEls[a];\r\n new Vue({\r\n el,\r\n data: {\r\n activeTab: 'images',\r\n sliders: [],\r\n imageToOpen,\r\n controlFunctions: [],\r\n controlMeasurements: [],\r\n activeControlMeasurements: [],\r\n isLoading: true,\r\n },\r\n methods: {\r\n setActiveTab(tabName) {\r\n this.activeTab = tabName;\r\n this.destroySlider();\r\n if (this.activeTab === 'images') {\r\n this.initImageSlider();\r\n } else if (this.activeTab === 'video') {\r\n this.initVideoSlider();\r\n } else if (this.activeTab === '360') {\r\n this.init3603D();\r\n }\r\n },\r\n isCheckboxChecked(item) {\r\n let checked = false;\r\n if (item.invertState && item.state === 0) {\r\n checked = true;\r\n } else if (!item.invertState && item.state === 1) {\r\n checked = true;\r\n }\r\n return checked;\r\n },\r\n init3603D() {\r\n const customScript = document.createElement('script');\r\n customScript.setAttribute('src', '/dist/scripts/3d.min.js');\r\n document.head.appendChild(customScript);\r\n if (!jsonFile) {\r\n return;\r\n }\r\n window.ProductViewerSettings = {\r\n server: '',\r\n staticAssetsServer: '/3DAssets',\r\n units: 'metric',\r\n initialEffect: 'guidex',\r\n initialEffectImageURL: 'assets/images/guidex-icon.png',\r\n enableCameraPresetControls: false,\r\n enableFunctionControls: false,\r\n enableFullscreenControl: false,\r\n enableMeasurementControls: false,\r\n enableLighting: true,\r\n enablePartsControls: false,\r\n enableCameraControl: true,\r\n background: 'fff',\r\n debugMode: false,\r\n hAglbFile,\r\n jsonFile,\r\n };\r\n setTimeout(() => {\r\n document.querySelector('.productviewer-container')\r\n .addEventListener('metadataloaded', () => {\r\n this.controlFunctions = window.PressalitModelViewer.modelData.functions;\r\n this.controlMeasurements = window.PressalitModelViewer.modelData.measurements;\r\n });\r\n document.querySelector('.productviewer-container')\r\n .addEventListener('ready', () => {\r\n this.isLoading = false;\r\n });\r\n document.querySelector('.productviewer-container')\r\n .addEventListener('functionactivated', () => {\r\n this.controlFunctions = window.PressalitModelViewer.modelData.functions;\r\n });\r\n }, 0);\r\n },\r\n activateFunction(item) {\r\n window.PressalitModelViewer.activateFunction(item.name);\r\n },\r\n activateMeasurements(item) {\r\n let localBool = true;\r\n if (!this.activeControlMeasurements.includes(item.name)) {\r\n this.activeControlMeasurements.push(item.name);\r\n } else {\r\n this.activeControlMeasurements = this.activeControlMeasurements.filter(i => i !== item.name);\r\n localBool = false;\r\n }\r\n window.PressalitModelViewer.setMeasurementVisibility(item.name, localBool);\r\n },\r\n initImageSlider(slideIndex) {\r\n setTimeout(() => {\r\n const sliderRef = this.$refs.overlaySlider;\r\n if (!sliderRef) {\r\n return;\r\n }\r\n const slider = new Flickity(sliderRef, {\r\n pageDots: false,\r\n draggable: false,\r\n groupCells: '100%',\r\n contain: 1,\r\n cellAlign: 'left',\r\n imagesLoaded: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 40,\r\n x3: 30,\r\n },\r\n });\r\n this.sliders.push(slider);\r\n const thumbnailRef = this.$refs.overlayThumbnails;\r\n if (!thumbnailRef) {\r\n return;\r\n }\r\n const thumbs = new Flickity(thumbnailRef, {\r\n pageDots: false,\r\n contain: true,\r\n groupCells: '20%',\r\n draggable: true,\r\n cellAlign: 'center',\r\n imagesLoaded: true,\r\n prevNextButtons: false,\r\n asNavFor: sliderRef,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 40,\r\n x3: 30,\r\n },\r\n });\r\n this.sliders.push(thumbs);\r\n if (slideIndex) {\r\n slider.select(slideIndex);\r\n }\r\n }, 0);\r\n },\r\n initVideoSlider() {\r\n setTimeout(() => {\r\n const sliderRef = this.$refs.overlayVideoSlider;\r\n if (!sliderRef) {\r\n return;\r\n }\r\n const slider = new Flickity(sliderRef, {\r\n pageDots: false,\r\n draggable: false,\r\n groupCells: '100%',\r\n contain: 1,\r\n cellAlign: 'left',\r\n imagesLoaded: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 40,\r\n x3: 30,\r\n },\r\n });\r\n this.sliders.push(slider);\r\n const thumbnailRef = this.$refs.overlayVideoThumbnails;\r\n if (!thumbnailRef) {\r\n return;\r\n }\r\n const thumbs = new Flickity(thumbnailRef, {\r\n pageDots: false,\r\n contain: true,\r\n groupCells: '20%',\r\n draggable: true,\r\n cellAlign: 'center',\r\n imagesLoaded: true,\r\n prevNextButtons: false,\r\n asNavFor: sliderRef,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 40,\r\n x3: 30,\r\n },\r\n });\r\n this.sliders.push(thumbs);\r\n }, 0);\r\n },\r\n destroySlider() {\r\n if (!this.sliders.length) {\r\n return;\r\n }\r\n for (let i = 0; i < this.sliders.length; ++i) {\r\n const slider = this.sliders[i];\r\n if (slider) {\r\n slider.destroy();\r\n }\r\n }\r\n },\r\n },\r\n created() {\r\n let indexSlider = '';\r\n if (typeof this.imageToOpen === 'number') {\r\n indexSlider = this.imageToOpen;\r\n }\r\n if (this.imageToOpen === 'video') {\r\n this.activeTab = 'video';\r\n this.initVideoSlider();\r\n } else if (this.imageToOpen === '360') {\r\n this.activeTab = '360';\r\n this.init3603D();\r\n } else {\r\n this.initImageSlider(indexSlider);\r\n }\r\n },\r\n });\r\n }\r\n }, 0);\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Flickity = Flickity; // eslint-disable-line\r\npressalit.productRecommendation = pressalit.productRecommendation\r\n || new function () {\r\n this.init = function () {\r\n const els = document.querySelectorAll(\r\n '.js-product-recommendation-carousel',\r\n );\r\n let i;\r\n if (!els) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n for (i = 0; i < els.length; ++i) {\r\n const count = els[i].getElementsByClassName('product-tile').length;\r\n\r\n new Flickity(els[i], {\r\n pageDots: false,\r\n contain: true,\r\n percentPosition: false,\r\n draggable: true,\r\n groupCells: true,\r\n cellAlign: 'left',\r\n imagesLoaded: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 40,\r\n x3: 30,\r\n },\r\n on: {\r\n ready() {\r\n this.element.classList.remove('flickity-resize');\r\n this.element.classList.add('flickity-resize');\r\n\r\n if (count > 4) {\r\n this.element.classList.add('flickity--show-arrows');\r\n }\r\n },\r\n },\r\n });\r\n }\r\n }, 0);\r\n };\r\n }();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.productTileTemplate = pressalit.productTileTemplate || new function () {\r\n this.init = function () {\r\n Vue.component('product-tile', {\r\n template: '#js-product-tile-template',\r\n props: {\r\n product: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n computed: {\r\n bestFitDictionary() {\r\n return this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.Fits.BestFit');\r\n },\r\n secondBestFitDictionary() {\r\n return this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.Fits.SecondBestFit');\r\n },\r\n thirdBestFitDictionary() {\r\n return this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.Fits.ThirdBestFit');\r\n },\r\n },\r\n methods: {\r\n getTrackingClass(productFitId) {\r\n if (productFitId === '0') {\r\n return 'ga-pl-manufacturer-filters-result-cat0';\r\n }\r\n\r\n if (productFitId === '1') {\r\n return 'ga-pl-manufacturer-filters-result-cat1';\r\n }\r\n\r\n if (productFitId === '3') {\r\n return 'ga-pl-manufacturer-filters-result-cat3';\r\n }\r\n\r\n return '';\r\n },\r\n getProductFitClass(productFitId) {\r\n if (productFitId === '0') {\r\n return 'product-tile__fit product-tile__fit--info';\r\n }\r\n\r\n if (productFitId === '1') {\r\n return 'product-tile__fit';\r\n }\r\n\r\n if (productFitId === '3') {\r\n return 'product-tile__fit product-tile__fit--warning';\r\n }\r\n\r\n return 'product-tile__fit';\r\n },\r\n getFitText(productFitId) {\r\n if (productFitId === '0') {\r\n return this.secondBestFitDictionary;\r\n }\r\n\r\n if (productFitId === '1') {\r\n return this.thirdBestFitDictionary;\r\n }\r\n\r\n if (productFitId === '3') {\r\n return this.bestFitDictionary;\r\n }\r\n\r\n return '';\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\n\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\n\r\npressalit.receiptPage = pressalit.receiptPage || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n const pageEl = document.getElementById('js-page-receipt');\r\n if (!pageEl) {\r\n return;\r\n }\r\n const store = pressalit.vuex.store;\r\n new Vue({\r\n el: pageEl,\r\n store,\r\n router,\r\n data() {\r\n return {\r\n lines: [],\r\n };\r\n },\r\n created() {\r\n this.lines = JSON.parse(\r\n document.getElementById('js-reciept-page-json')\r\n .innerHTML,\r\n );\r\n this.trackPurchase();\r\n },\r\n methods: {\r\n trackPurchase() {\r\n this.$store.dispatch('tracking/trackSubmitPurchase', this.lines);\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.searchPage = pressalit.searchPage || (new function () {\r\n this.init = function () {\r\n const pageEl = document.getElementById('js-search-page');\r\n if (!pageEl) {\r\n return;\r\n }\r\n new Vue({\r\n el: pageEl,\r\n data: {\r\n results: {},\r\n },\r\n methods: {\r\n setResults(results) {\r\n this.results = results;\r\n },\r\n },\r\n created() {\r\n const result = document.getElementById('js-search-page-results');\r\n if (!result) {\r\n return;\r\n }\r\n this.results = JSON.parse(result.innerHTML);\r\n },\r\n });\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Cookiebot = Cookiebot || {}; // eslint-disable-line\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\n\r\npressalit.selfService = pressalit.selfService || (new function () {\r\n this.init = function () {\r\n Vue.use(VueRouter);\r\n const els = document.querySelectorAll('.js-self-service-customer-info');\r\n let i;\r\n if (!els) {\r\n return;\r\n }\r\n for (i = 0; i < els.length; ++i) {\r\n const el = els[i];\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n router,\r\n created() {\r\n this.$store.commit('selfService/setTerm', (this.$route.query.term || ''));\r\n this.$store.commit('selfService/setFilter', (this.$route.query.filter || ''));\r\n this.setQuery();\r\n this.getCustomer();\r\n this.getOrders();\r\n },\r\n\r\n computed: {\r\n term: {\r\n set(value) {\r\n this.$store.commit('selfService/setTerm', value);\r\n },\r\n get() {\r\n return this.$store.state.selfService.term;\r\n },\r\n },\r\n filter: {\r\n set(value) {\r\n this.$store.commit('selfService/setFilter', value);\r\n },\r\n get() {\r\n return this.$store.state.selfService.filter;\r\n },\r\n },\r\n customerInfo() {\r\n return this.$store.state.selfService.customerInfo;\r\n },\r\n customerOrders() {\r\n return this.$store.state.selfService.customerOrders;\r\n },\r\n fetchingData() {\r\n return this.$store.state.selfService.fetchingData;\r\n },\r\n loadMore() {\r\n return this.$store.state.selfService.loadMore;\r\n },\r\n showLoadmore() {\r\n if (this.customerOrders && !this.customerOrders.length) {\r\n return false;\r\n }\r\n return this.$store.state.selfService.showLoadmore;\r\n },\r\n },\r\n methods: {\r\n logout() {\r\n this.$store.dispatch('auth/logout');\r\n },\r\n getCustomer() {\r\n this.$store.dispatch('selfService/getCustomerInfo');\r\n },\r\n getOrders() {\r\n this.setQuery();\r\n this.$store.commit('selfService/setFetchingData', true);\r\n this.$store.dispatch('selfService/getCustomerOrders', true);\r\n this.$store.dispatch('basket/getBasket');\r\n this.$store.commit('selfService/setPage', 1);\r\n },\r\n loadMoreOrder() {\r\n this.$store.commit('selfService/setLoadMore', true);\r\n this.$store.dispatch('selfService/getCustomerOrders', false);\r\n },\r\n setQuery() {\r\n if (this.$route.query.page) {\r\n this.$store.commit('selfService/setPage', Number(this.$route.query.page));\r\n }\r\n },\r\n clearSearch() {\r\n this.$store.commit('selfService/setTerm', '');\r\n this.$store.commit('selfService/setFilter', '');\r\n this.getOrders();\r\n },\r\n },\r\n\r\n });\r\n }\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar axios = axios; // eslint-disable-line\r\nvar VueRouter = VueRouter; // eslint-disable-line\r\npressalit.searchResults = pressalit.searchResults || new function () {\r\n Vue.use(VueRouter);\r\n this.init = function () {\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n Vue.component('search-input', {\r\n template: '#js-search-input',\r\n store: pressalit.vuex.store,\r\n props: {\r\n searchOpen: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n isFixed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n showSearchTerm: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n totalResults: {\r\n type: String,\r\n default: '',\r\n },\r\n searchUrl: {\r\n type: String,\r\n default: '',\r\n },\r\n results: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n page: {\r\n type: Number,\r\n default: 1,\r\n },\r\n },\r\n data: () => ({\r\n searchTerm: '',\r\n searchTimeout: null,\r\n cancelSource: null,\r\n init: true,\r\n totalResultCount: 0,\r\n pageSize: 20,\r\n }),\r\n computed: {\r\n totalResultsString() {\r\n const dictionary = this.$store.getters['dictionaries/getByKey']('ViewElements.Search.TotalResults');\r\n const count = this.getTotalResultsCount();\r\n return dictionary.replace('{0}', this.searchTerm).replace('{1}', count);\r\n },\r\n },\r\n methods: {\r\n goToSearch() {\r\n let url = '';\r\n if (!this.searchTerm) {\r\n return;\r\n }\r\n if (this.page > 1) {\r\n url = `${this.searchUrl}?term=${this.searchTerm}&page=${this.page}&pageSize=20`;\r\n } else {\r\n url = `${this.searchUrl}?term=${this.searchTerm}`;\r\n }\r\n window.location.href = url;\r\n },\r\n getTotalResultsCount() {\r\n let temp = 0;\r\n const results = this.results ? this.results : null;\r\n\r\n if (results) {\r\n Object.keys(results).forEach((r) => {\r\n if (r.includes('Total')) {\r\n temp += this.results[r];\r\n }\r\n });\r\n }\r\n\r\n return temp;\r\n },\r\n getQueryParameterByName(name, url) {\r\n if (!url) {\r\n url = window.location.href;\r\n }\r\n name = name.replace(/[[\\]]/g, '\\\\$&');\r\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\r\n const results = regex.exec(url);\r\n\r\n if (!results) {\r\n return null;\r\n }\r\n if (!results[2]) {\r\n return '';\r\n }\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n },\r\n },\r\n created() {\r\n this.$store.dispatch('dictionaries/getAll');\r\n this.searchTerm = this.getQueryParameterByName('term');\r\n this.page = this.getQueryParameterByName('page');\r\n this.$nextTick().then(() => {\r\n this.init = false;\r\n this.getTotalResultsCount();\r\n });\r\n },\r\n watch: {\r\n searchOpen: {\r\n handler(isOpen) {\r\n if (isOpen) {\r\n const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (iOS) {\r\n setTimeout(() => {\r\n this.$refs.searchInput.focus();\r\n }, 50);\r\n return;\r\n }\r\n if (!iOS) {\r\n this.$nextTick(() => {\r\n const input = this.$refs.searchInput;\r\n // Needs to be wrapped inside a timeout to make the autofocus work\r\n setTimeout(() => {\r\n input.focus();\r\n }, 50);\r\n });\r\n this.$refs.searchInput.focus();\r\n return;\r\n }\r\n }\r\n this.searchTerm = '';\r\n },\r\n },\r\n searchTerm: {\r\n handler(value) {\r\n if (this.init) {\r\n return;\r\n }\r\n if (this.$route) {\r\n const query = Object.assign({}, this.$route.query);\r\n query.term = value;\r\n this.$router.replace({\r\n query,\r\n });\r\n }\r\n clearTimeout(this.searchTimeout);\r\n if (value !== '') {\r\n this.searchTimeout = setTimeout(() => {\r\n if (this.cancelSource) {\r\n this.cancelSource.cancel();\r\n }\r\n this.$emit('search', this.searchTerm);\r\n this.cancelSource = axios.CancelToken.source();\r\n axios\r\n .get(`/api/frontend/search/getAutoComplete?term=${this.searchTerm}`, {\r\n cancelToken: this.cancelSource.token,\r\n })\r\n .then((response) => {\r\n this.cancelSource = null;\r\n this.$emit('results', response.data.data);\r\n });\r\n }, 250);\r\n } else {\r\n this.$emit('results', {});\r\n }\r\n },\r\n },\r\n },\r\n });\r\n Vue.component('search-result-product', {\r\n template: '#js-search-result-product-template',\r\n props: {\r\n product: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n computed: {\r\n productImage() {\r\n return this.product.image ? `${this.product.image.url}?width=70&height=70&quality=70&bgcolor=fff` : null;\r\n },\r\n },\r\n });\r\n Vue.component('search-result-article', {\r\n template: '#js-search-result-article-template',\r\n props: {\r\n article: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n },\r\n computed: {\r\n image() {\r\n return this.article.displayImageUrl ? `${this.article.displayImageUrl}?width=70&height=70¢er=0.5,0.5&mode=crop&quality=70` : null;\r\n },\r\n },\r\n });\r\n Vue.component('search-results', {\r\n router,\r\n template: '#js-search-results-template',\r\n props: {\r\n results: {\r\n type: Object,\r\n default: () => {},\r\n },\r\n show: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n showNormalPage: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n quickLinks: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n searchTerm: {\r\n type: String,\r\n default: '',\r\n },\r\n },\r\n data: () => ({\r\n page: 1,\r\n }),\r\n methods: {\r\n submit() {\r\n this.$emit('submit');\r\n },\r\n getQueryParameterByName(name, url) {\r\n if (!url) {\r\n url = window.location.href;\r\n }\r\n name = name.replace(/[[\\]]/g, '\\\\$&');\r\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\r\n const results = regex.exec(url);\r\n\r\n if (!results) {\r\n return null;\r\n }\r\n if (!results[2]) {\r\n return '';\r\n }\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n },\r\n updateQuery() {\r\n if (this.showNormalPage) {\r\n const query = Object.assign({}, this.$route.query);\r\n query.term = this.searchTerm;\r\n query.page = this.page;\r\n this.$router.replace({\r\n query,\r\n });\r\n }\r\n },\r\n loadMore() {\r\n if (!this.searchTerm || this.searchTerm === '') {\r\n this.searchTerm = this.getQueryParameterByName('term');\r\n }\r\n this.page += 1;\r\n this.$emit('page', this.page);\r\n axios.get(`/api/frontend/search/GetSearchResults?term=${this.searchTerm}&page=${this.page}&pageSize=20`)\r\n .then((response) => {\r\n this.results.products = [\r\n ...this.results.products,\r\n ...response.data.products,\r\n ];\r\n this.results.contents = [\r\n ...this.results.contents,\r\n ...response.data.contents,\r\n ];\r\n });\r\n this.updateQuery();\r\n },\r\n },\r\n computed: {\r\n showResults() {\r\n if (this.showNormalPage) {\r\n return true;\r\n }\r\n if (!this.results || !this.show) {\r\n return false;\r\n }\r\n\r\n const hasResults = Object.keys(this.results).length > 0;\r\n return this.show && hasResults;\r\n },\r\n countProducts() {\r\n if (!this.results.products) {\r\n return 0;\r\n }\r\n\r\n const length = this.results.products.length;\r\n return length;\r\n },\r\n countArticles() {\r\n const contentCount = this.results.contents.length + this.results.categories.length + this.results.references.length;\r\n return contentCount;\r\n },\r\n hideLoadMore() {\r\n if (!this.results || !this.results.products) {\r\n return true;\r\n }\r\n return this.results.products.length >= this.results.productsTotal;\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Flickity = Flickity; // eslint-disable-line\r\npressalit.testimonialList = pressalit.testimonialList || (new function () {\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-testimonial-list-carousel');\r\n if (!els || !els.length) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n for (let i = 0; i < els.length; i++) {\r\n new Flickity(els[i], {\r\n pageDots: false,\r\n freeScroll: false,\r\n draggable: false,\r\n lazyLoad: true,\r\n imagesLoaded: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60,\r\n y1: 50,\r\n x2: 70,\r\n y2: 45,\r\n x3: 25,\r\n },\r\n });\r\n }\r\n }, 0);\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.specificationNavigation = pressalit.specificationNavigation || new function () {\r\n this.init = function () {\r\n const mainNavLinks = document.querySelectorAll('.specification-navigation__link');\r\n if (mainNavLinks.length === 0) {\r\n return;\r\n }\r\n window.addEventListener('scroll', () => {\r\n const productPageHeight = document.querySelector('#js-product-page').offsetHeight;\r\n const fromTop = (window.scrollY - productPageHeight);\r\n\r\n for (let i = 0; i < mainNavLinks.length; i++) {\r\n const link = mainNavLinks[i];\r\n const section = document.querySelector(link.hash);\r\n if (!section) {\r\n return;\r\n }\r\n if (\r\n section.offsetTop <= fromTop\r\n && section.offsetTop + section.offsetHeight > fromTop\r\n ) {\r\n link.classList.add('specification-navigation__link--active');\r\n } else {\r\n link.classList.remove('specification-navigation__link--active');\r\n }\r\n }\r\n });\r\n for (let i = 0; i < mainNavLinks.length; i++) {\r\n const link = mainNavLinks[i];\r\n link.addEventListener('click', (ev) => {\r\n const isIe = document.documentMode || /Edge/.test(navigator.userAgent);\r\n if (!isIe) {\r\n ev.preventDefault();\r\n const linkRect = document.querySelector(link.hash).getBoundingClientRect();\r\n window.scrollTo(0, (linkRect.y + window.scrollY) - 150);\r\n }\r\n });\r\n }\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar VueRouter = VueRouter || {}; // eslint-disable-line\r\npressalit.toiletseatFilters = pressalit.toiletseatFilters\r\n || new function () {\r\n this.init = function () {\r\n const el = document.getElementById('js-toiletseat-filter-actions');\r\n if (!el) {\r\n return;\r\n }\r\n Vue.use(VueRouter);\r\n\r\n const router = new VueRouter({\r\n mode: 'history',\r\n });\r\n\r\n new Vue({\r\n mounted() {\r\n this.$store.dispatch('dictionaries/getAll');\r\n },\r\n el,\r\n data() {\r\n return {\r\n showWebAppButton: false,\r\n };\r\n },\r\n store: pressalit.vuex.store,\r\n router,\r\n props: ['ShowWebappButton'],\r\n methods: {\r\n toggleSidebar(comp, showWebAppButton) {\r\n this.$store.commit('navigation/setNavigationProps', {\r\n showWebAppButton,\r\n });\r\n this.$store.commit('navigation/setIsFullWidth', true);\r\n this.$store.commit('navigation/setComponent', comp);\r\n this.$store.commit('navigation/toggleSidebar');\r\n },\r\n },\r\n });\r\n\r\n Vue.component('toilet-filter-options', {\r\n template: '#js-toilet-filter-options',\r\n router,\r\n store: pressalit.vuex.store,\r\n watch: {\r\n isOpen: {\r\n handler() {\r\n this.levelTwoFilter = '';\r\n },\r\n },\r\n },\r\n methods: {\r\n setLevelTwoFilter(val, className, title) {\r\n if (window.innerWidth <= 768 && val === 'findByApp') {\r\n const protocol = window.location.protocol;\r\n const hostname = window.location.hostname;\r\n\r\n window.location.href = `${protocol}//${hostname}/webapp/`;\r\n } else {\r\n this.levelTwoFilter = val;\r\n }\r\n const eventData = {\r\n overlayChoice: className,\r\n overlayTitle: title,\r\n };\r\n this.$store.dispatch('tracking/trackToiletSeatOverlay', eventData);\r\n },\r\n },\r\n computed: {\r\n isOpen() {\r\n return this.$store.state.isSidebarOpen;\r\n },\r\n navigationProps() {\r\n return this.$store.state.navigation.navigationProps || {};\r\n },\r\n options() {\r\n const options = [\r\n {\r\n title: this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.ToiletFitGuide.Manufacturer'),\r\n subText: this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.ToiletFitGuide.ManufacturerSubtitle'),\r\n iconAlias: 'toilet',\r\n filterName: 'filterManufacturer',\r\n className: 'ga-pl-manufacturer-filters-open',\r\n },\r\n {\r\n title: this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.ToiletFitGuide.Measure'),\r\n subText: this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.ToiletFitGuide.MeasureSubtitle'),\r\n iconAlias: 'toilet-measure',\r\n filterName: 'shapeFilters',\r\n className: 'ga-pl-shape-filters-open',\r\n },\r\n ];\r\n if (this.navigationProps.showWebAppButton) {\r\n options.push({\r\n title: this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.ToiletFitGuide.ScanToilet'),\r\n subText: this.$store.getters['dictionaries/getByKey']('ViewElements.ProductList.ToiletFitGuide.ScanToiletSubtitle'),\r\n iconAlias: 'qr-scan',\r\n filterName: 'findByApp',\r\n className: 'ga-pl-find-by-app-open',\r\n });\r\n }\r\n return options;\r\n },\r\n },\r\n data() {\r\n return {\r\n levelTwoFilter: '',\r\n stepNumber: 1,\r\n };\r\n },\r\n });\r\n\r\n Vue.component('step-options', {\r\n template: '#js-step-options',\r\n props: ['selectedStep'],\r\n });\r\n\r\n Vue.component('shape-filters', {\r\n template: '#js-shape-filters',\r\n router,\r\n data() {\r\n return {\r\n filterImages: [],\r\n filterOptions: [],\r\n shapeFilterEndpoint: '',\r\n };\r\n },\r\n computed: {\r\n filter2Disabled() {\r\n return !this.filterOptions[0].selected || !this.filterOptions[0].selected.length;\r\n },\r\n filter3Disabled() {\r\n return !this.filterOptions[1].selected || !this.filterOptions[1].selected.length;\r\n },\r\n filterMeasurementDisabled() {\r\n return !this.filterOptions[2].toValue || !this.filterOptions[3].toValue || !this.filterOptions[4].toValue;\r\n },\r\n valid() {\r\n return !this.filter3Disabled && !this.filter2Disabled && !this.filterMeasurementDisabled;\r\n },\r\n getMeasurementImage() {\r\n const shapeFilter = this.filterOptions[0];\r\n if (!shapeFilter || !shapeFilter.options) {\r\n return null;\r\n }\r\n\r\n let selectedShape = shapeFilter.options[0];\r\n if (shapeFilter.selected.length) {\r\n selectedShape = shapeFilter.options.find(x => x.selector === shapeFilter.selected[0]);\r\n }\r\n\r\n if (!selectedShape) {\r\n return null;\r\n }\r\n\r\n return this.getImageWithMeasurementsByName(selectedShape.value);\r\n },\r\n filterToiletShape() {\r\n return this.$store.getters['filter/getFilterToiletShape'];\r\n },\r\n filterToiletMounting() {\r\n return this.$store.getters['filter/getFilterToiletMounting'];\r\n },\r\n filterToiletMeasurement1() {\r\n return this.$store.getters['filter/getFilterToiletMeasurement1'];\r\n },\r\n filterToiletMeasurement2() {\r\n return this.$store.getters['filter/getFilterToiletMeasurement2'];\r\n },\r\n filterToiletMeasurement3() {\r\n return this.$store.getters['filter/getFilterToiletMeasurement3'];\r\n },\r\n },\r\n mounted() {\r\n const images = JSON.parse(\r\n document.getElementById(\r\n 'js-toiletseat-image-filters-json',\r\n ).innerHTML,\r\n );\r\n const options = JSON.parse(document.getElementById('js-product-list-json').innerHTML);\r\n this.filterImages = images;\r\n this.filterOptions = pressalit.filterHelpers.mergeFilters(options.shapeFilters, this.$store.state.filter.filters);\r\n this.shapeFilterEndpoint = options.endpoint;\r\n },\r\n methods: {\r\n getImageByName(name) {\r\n let image = null;\r\n if (this.filterImages && this.filterImages.length) {\r\n image = this.filterImages.find(x => (x.names && x.names.length ? x.names.includes(name) : null));\r\n }\r\n\r\n if (image) {\r\n return image.image;\r\n }\r\n return {\r\n image: null,\r\n names: [],\r\n };\r\n },\r\n getImageWithMeasurementsByName(name) {\r\n const image = this.filterImages.find(x => (x.names && x.names.length ? x.names.includes(name) : null));\r\n if (image) {\r\n return image.imageWithMeasurements;\r\n }\r\n return {\r\n image: null,\r\n names: [],\r\n };\r\n },\r\n isFilterSelected(selected, selector) {\r\n if (!selected || !selected.length) {\r\n return false;\r\n }\r\n return selected.indexOf(selector) > -1;\r\n },\r\n getFiltervalue(filterName, filterArray) {\r\n if (!filterArray) {\r\n return null;\r\n }\r\n const filterMatch = filterArray.filter(filterEntry => filterEntry.identifier === filterName);\r\n if (filterName === 'NCPasEMes') {\r\n return filterMatch[0].fromValue;\r\n }\r\n if (filterName === 'NCPasAMes') {\r\n return filterMatch[0].fromValue;\r\n }\r\n if (filterName === 'NCPasBMes') {\r\n return filterMatch[0].fromValue;\r\n }\r\n if (filterMatch.length < 1 || !filterMatch[0].options.length) {\r\n return null;\r\n }\r\n\r\n const selectorMatch = filterMatch[0].options.filter(option => option.selector === filterMatch[0].selected[0]);\r\n if (selectorMatch.length > 0) {\r\n return selectorMatch[0].value;\r\n }\r\n\r\n return null;\r\n },\r\n selectFilter(selector) {\r\n const filterIndex = this.filterOptions.findIndex(\r\n x => x.options.findIndex(\r\n y => y.selector === selector,\r\n ) !== -1,\r\n );\r\n if (filterIndex !== -1) {\r\n this.filterOptions[filterIndex].selected = [];\r\n this.filterOptions[filterIndex].selected.push(\r\n selector,\r\n );\r\n }\r\n this.$store.dispatch('filter/searchInFilters', {\r\n filters: this.filterOptions,\r\n endpoint: this.shapeFilterEndpoint,\r\n }).then((data) => {\r\n this.filterOptions = data.filterOptions.options.filters;\r\n const filterToiletShape = this.getFiltervalue('ProductPasSeatFormDesc', this.filterOptions);\r\n const filterToiletMounting = this.getFiltervalue('ProductHingeModelMountDesc', this.filterOptions);\r\n if (filterToiletShape) {\r\n this.$store.commit('filter/setFilterToiletShape', filterToiletShape.trim());\r\n }\r\n this.$store.commit('filter/setFilterToiletMounting', filterToiletMounting ? filterToiletMounting.trim() : null);\r\n });\r\n },\r\n cancel() {\r\n this.$store.commit('navigation/toggleSidebar', false);\r\n },\r\n search() {\r\n const toiletMeasurement1 = this.getFiltervalue('NCPasEMes', this.filterOptions);\r\n const toiletMeasurement2 = this.getFiltervalue('NCPasBMes', this.filterOptions);\r\n const toiletMeasurement3 = this.getFiltervalue('NCPasAMes', this.filterOptions);\r\n this.$store.commit('filter/setFilterToiletMeasurement1', toiletMeasurement1);\r\n this.$store.commit('filter/setFilterToiletMeasurement2', toiletMeasurement2);\r\n this.$store.commit('filter/setFilterToiletMeasurement3', toiletMeasurement3);\r\n this.$store.commit('filter/setFilters', {\r\n page: 1,\r\n initialCount: 0,\r\n products: [],\r\n });\r\n\r\n // Get the filters from the product list, since its needed for making the correct request\r\n const listFilters = JSON.parse(JSON.stringify(this.$store.state.filter.filters));\r\n\r\n const blacklistedFilters = ['NCPasManufacturer', 'NCPasModel'];\r\n const filters = listFilters.map((x) => {\r\n // Skip the channel filter\r\n if (x.identifier === 'NCChannel') {\r\n return x;\r\n }\r\n const current = this.filterOptions.filter(f => !blacklistedFilters.includes(f.identifier)).find(f => f.filterId === x.filterId);\r\n switch (x.filterType) {\r\n case 2:\r\n x.selected = current ? current.selected : [];\r\n break;\r\n case 3:\r\n x.fromValue = current ? current.fromValue : null;\r\n x.toValue = current ? current.toValue : null;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return x;\r\n });\r\n\r\n this.$store.commit('filter/setIsManufacturerSearch', false);\r\n this.$store.commit('filter/setFilterProductName', null);\r\n this.$store.commit('filter/setFilterManufacturerName', null);\r\n\r\n this.$store\r\n .dispatch('filter/search', {\r\n filters,\r\n endpoint: '/api/catalog/search/SearchProducts',\r\n router: this.$router,\r\n replaceFilters: true,\r\n hideServersideRendered: true,\r\n })\r\n .then(() => {\r\n const eventData = {\r\n toiletShape: this.filterToiletShape,\r\n toiletMounting: this.filterToiletMounting,\r\n toiletMeasurement1: this.filterToiletMeasurement1,\r\n toiletMeasurement2: this.filterToiletMeasurement2,\r\n toiletMeasurement3: this.filterToiletMeasurement3,\r\n };\r\n this.$store.dispatch('tracking/trackToiletSeatShapeSearch', eventData);\r\n this.$store.commit(\r\n 'navigation/toggleSidebar',\r\n false,\r\n );\r\n });\r\n },\r\n },\r\n filters: {\r\n AndReplacer(value) {\r\n let output = value;\r\n if (value.includes(';')) {\r\n output = value.replace(';', ' & ');\r\n }\r\n\r\n return output;\r\n },\r\n },\r\n });\r\n\r\n Vue.component('manufacturer-filters', {\r\n template: '#js-filter-manufacturer',\r\n router,\r\n data() {\r\n return {\r\n filterOptions: [],\r\n };\r\n },\r\n computed: {\r\n filter2Disabled() {\r\n return !this.filterOptions[0].selected.length;\r\n },\r\n filter3Disabled() {\r\n return !this.filterOptions[1].selected.length;\r\n },\r\n valid() {\r\n return !this.filter3Disabled;\r\n },\r\n endpoint() {\r\n return this.$store.getters['filter/getProductEndpoint'];\r\n },\r\n },\r\n mounted() {\r\n const options = JSON.parse(\r\n document.getElementById('js-product-list-json')\r\n .innerHTML,\r\n );\r\n this.filterOptions = options.manufacturerFilters;\r\n this.initialEndpoint = '/api/catalog/search/SearchProducts';\r\n },\r\n methods: {\r\n scrollToProductList() {\r\n const productList = document.querySelector('.js-product-list');\r\n const productListRect = productList.getBoundingClientRect();\r\n window.scrollTo(0, (productListRect.y + window.scrollY) - 50);\r\n },\r\n getFiltervalue(filterName, filterArray) {\r\n if (!filterArray) {\r\n return null;\r\n }\r\n\r\n const filterMatch = filterArray.filter(filterEntry => filterEntry.identifier === filterName);\r\n if (filterMatch.length < 1 || !filterMatch[0].options.length) {\r\n return null;\r\n }\r\n\r\n const selectorMatch = filterMatch[0].options.filter(option => option.selector === filterMatch[0].selected[0]);\r\n if (selectorMatch.length > 0) {\r\n return selectorMatch[0].value;\r\n }\r\n\r\n return null;\r\n },\r\n selectFilter(event) {\r\n const selector = event.target.value;\r\n\r\n const filterIndex = this.filterOptions.findIndex(\r\n x => x.options.findIndex(\r\n y => y.selector === selector,\r\n ) !== -1,\r\n );\r\n if (filterIndex !== -1) {\r\n this.filterOptions[filterIndex].selected = [];\r\n this.filterOptions[filterIndex].selected.push(\r\n selector,\r\n );\r\n }\r\n\r\n // Add the channel filter to the search\r\n const listFilters = JSON.parse(JSON.stringify(this.$store.state.filter.filters));\r\n const channelFilter = listFilters.find(f => f.identifier === 'NCChannel');\r\n\r\n const filters = channelFilter ? [...this.filterOptions, channelFilter] : this.filterOptions;\r\n\r\n this.$store.dispatch('filter/searchInFilters', {\r\n filters,\r\n endpoint: this.initialEndpoint,\r\n }).then((data) => {\r\n this.filterOptions = data.filterOptions.options.filters.filter(f => f.identifier !== 'NCChannel');\r\n });\r\n },\r\n isFilterSelected(filter, name) {\r\n if (this[name]) {\r\n return this[name].value === filter.value;\r\n }\r\n\r\n return false;\r\n },\r\n cancel() {\r\n this.$store.commit('navigation/toggleSidebar', false);\r\n },\r\n search() {\r\n this.$store.commit('filter/setFilters', {\r\n page: 1,\r\n initialCount: 0,\r\n products: [],\r\n });\r\n\r\n // Get the filters from the product list, since its needed for making the correct request\r\n const listFilters = JSON.parse(JSON.stringify(this.$store.state.filter.filters));\r\n const blacklistedFilters = ['NCPasAMes', 'NCPasBMes', 'NCPasEMes', 'ProductPasSeatFormDesc', 'ProductHingeModelMountDesc'];\r\n const filters = listFilters.map((x) => {\r\n // Skip the channel filter\r\n if (x.identifier === 'NCChannel') {\r\n return x;\r\n }\r\n const current = this.filterOptions.find(f => f.filterId === x.filterId);\r\n switch (x.filterType) {\r\n case 2:\r\n x.selected = current && !blacklistedFilters.includes(current.identifier) ? current.selected : [];\r\n break;\r\n case 3:\r\n x.fromValue = current && !blacklistedFilters.includes(current.identifier) ? current.fromValue : null;\r\n x.toValue = current && !blacklistedFilters.includes(current.identifier) ? current.toValue : null;\r\n break;\r\n default:\r\n break;\r\n }\r\n return x;\r\n });\r\n\r\n this.$store\r\n .dispatch('filter/search', {\r\n filters,\r\n endpoint: '/api/catalog/search/SearchProductsByManufacturer',\r\n router: this.$router,\r\n replaceFilters: true,\r\n hideServersideRendered: true,\r\n })\r\n .then(() => {\r\n const filterProductName = this.getFiltervalue('NCPasManufacturer', this.filterOptions);\r\n const filterManufacturerName = this.getFiltervalue('NCPasModel', this.filterOptions);\r\n if (filterProductName && filterManufacturerName) {\r\n this.$store.commit('filter/setFilterProductName', filterProductName.trim());\r\n this.$store.commit('filter/setFilterManufacturerName', filterManufacturerName.trim());\r\n this.$store.commit('filter/setIsManufacturerSearch', true);\r\n }\r\n this.$store.commit(\r\n 'navigation/toggleSidebar',\r\n false,\r\n );\r\n this.scrollToProductList();\r\n });\r\n },\r\n },\r\n filters: {\r\n AndReplacer(value) {\r\n let output = value;\r\n if (value.includes(';')) {\r\n output = value.replace(';', ' & ');\r\n }\r\n\r\n return output;\r\n },\r\n },\r\n });\r\n\r\n Vue.component('find-by-app', {\r\n template: '#js-find-by-app',\r\n });\r\n };\r\n }();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\nvar Cookiebot = Cookiebot || {}; // eslint-disable-line\r\npressalit.videoGrid = pressalit.videoGrid || (new function () {\r\n this.init = function () {\r\n const els = document.querySelectorAll('.js-video-grid');\r\n let i;\r\n if (!els) {\r\n return;\r\n }\r\n for (i = 0; i < els.length; ++i) {\r\n const el = els[i];\r\n new Vue({\r\n el,\r\n props: {\r\n showVideo: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n cookiesAccepted: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: {},\r\n created() {\r\n this.checkCookies();\r\n },\r\n methods: {\r\n playVideo() {\r\n if (this.cookiesAccepted) {\r\n this.toggleVideo();\r\n } else {\r\n Cookiebot.renew();\r\n this.checkCookies(true);\r\n }\r\n },\r\n toggleVideo() {\r\n this.showVideo = !this.showVideo;\r\n },\r\n checkCookies(loadVideo) {\r\n window.addEventListener('CookiebotOnAccept', () => {\r\n if (Cookiebot.consent.marketing && Cookiebot.consent.preferences && Cookiebot.consent.statistics) {\r\n this.cookiesAccepted = true;\r\n if (loadVideo) {\r\n this.toggleVideo();\r\n }\r\n }\r\n }, false);\r\n },\r\n },\r\n });\r\n }\r\n };\r\n}());\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\n\r\npressalit.wishlist = pressalit.wishlist || new function () {\r\n this.init = function () {\r\n this.initComponents();\r\n\r\n\r\n const el = document.getElementById('js-wishlist-page');\r\n if (!el) {\r\n return;\r\n }\r\n new Vue({\r\n el,\r\n store: pressalit.vuex.store,\r\n computed: {\r\n isLoading() {\r\n return this.$store.getters['wishlist/isLoading'];\r\n },\r\n lines() {\r\n const lines = this.$store.getters['wishlist/getLines'];\r\n this.$store.dispatch('tracking/trackViewWishList', lines);\r\n return lines;\r\n },\r\n },\r\n created() {\r\n this.$store.dispatch('wishlist/getWishlist');\r\n const wishlistJson = document.getElementById('js-wishlist-json');\r\n if (wishlistJson) {\r\n const state = JSON.parse(\r\n wishlistJson.innerHTML,\r\n );\r\n this.$store.commit('wishlist/setSiteNodeId', state.siteNodeId);\r\n this.$store.commit('wishlist/setCulture', state.culture);\r\n }\r\n },\r\n methods: {\r\n goToPreviousPage() {\r\n window.history.back();\r\n },\r\n print() {\r\n this.$store.commit('print/printWishlist');\r\n setTimeout(() => {\r\n window.print();\r\n }, 200);\r\n },\r\n sendToRecipient() {\r\n this.$store.commit('navigation/toggleSidebar', true);\r\n this.$store.commit('navigation/setComponent', 'send-wishlist-to-recipient');\r\n },\r\n sendToPressalit() {\r\n this.$store.commit('navigation/toggleSidebar', true);\r\n this.$store.commit('navigation/setComponent', 'send-wishlist-to-pressalit');\r\n },\r\n },\r\n });\r\n };\r\n\r\n // Components only used on the wishlist page\r\n this.initComponents = function () {\r\n Vue.component('send-wishlist-to-pressalit', {\r\n template: '#js-send-wishlist-to-pressalit',\r\n data() {\r\n return {\r\n sender: {\r\n name: '',\r\n postalCode: '',\r\n email: '',\r\n phone: '',\r\n company: '',\r\n },\r\n comment: '',\r\n error: false,\r\n success: false,\r\n sending: false,\r\n };\r\n },\r\n computed: {\r\n culture() {\r\n return this.$store.getters['wishlist/getCulture'];\r\n },\r\n siteNodeId() {\r\n return this.$store.getters['wishlist/getSiteNodeId'];\r\n },\r\n },\r\n methods: {\r\n send() {\r\n this.sending = true;\r\n const req = axios.post('/api/webshop/custombasket/SendBasketToPressalit', {\r\n senderName: this.sender.name,\r\n senderEmail: this.sender.email,\r\n senderPhone: this.sender.phone,\r\n senderCompany: this.sender.company,\r\n senderPostalCode: this.sender.postalCode,\r\n comment: this.comment,\r\n siteNodeId: this.siteNodeId,\r\n culture: this.culture,\r\n });\r\n\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n this.sending = false;\r\n if (data.isSuccess && data.operationCompleted) {\r\n this.success = true;\r\n this.error = false;\r\n return;\r\n }\r\n this.success = false;\r\n this.error = true;\r\n },\r\n () => {\r\n this.success = false;\r\n this.sending = false;\r\n this.error = true;\r\n },\r\n );\r\n },\r\n },\r\n });\r\n\r\n Vue.component('send-wishlist-to-recipient', {\r\n template: '#js-send-wishlist-to-recipient',\r\n data() {\r\n return {\r\n sender: {\r\n name: '',\r\n email: '',\r\n },\r\n recipient: {\r\n name: '',\r\n email: '',\r\n },\r\n comment: '',\r\n error: false,\r\n success: false,\r\n sending: false,\r\n };\r\n },\r\n computed: {\r\n culture() {\r\n return this.$store.getters['wishlist/getCulture'];\r\n },\r\n siteNodeId() {\r\n return this.$store.getters['wishlist/getSiteNodeId'];\r\n },\r\n },\r\n methods: {\r\n send() {\r\n const req = axios.post('/api/webshop/custombasket/SendBasketToFriend', {\r\n senderName: this.sender.name,\r\n senderEmail: this.sender.email,\r\n recipientName: this.recipient.name,\r\n recipientEmail: this.recipient.email,\r\n comment: this.comment,\r\n siteNodeId: this.siteNodeId,\r\n culture: this.culture,\r\n });\r\n // Handle the promise\r\n req.then(\r\n ({\r\n data,\r\n }) => {\r\n this.sending = false;\r\n if (data.isSuccess && data.operationCompleted) {\r\n this.success = true;\r\n this.error = false;\r\n return;\r\n }\r\n this.success = false;\r\n this.error = true;\r\n },\r\n () => {\r\n this.success = false;\r\n this.sending = false;\r\n this.error = true;\r\n },\r\n );\r\n },\r\n },\r\n });\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.cookieService = pressalit.cookieService || new function () {\r\n const getCookie = function (key) {\r\n const name = `${key}=`;\r\n const decodedCookie = decodeURIComponent(document.cookie);\r\n const ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n };\r\n\r\n const setCookie = function (key, value, days = null) {\r\n let expires = null;\r\n if (days) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + (days * 60 * 60 * 1000 * 24));\r\n expires = `; expires=${date.toUTCString()}`;\r\n }\r\n const path = '/';\r\n document.cookie = `${key} = ${value || ''} ${expires}; path=${path}`;\r\n };\r\n\r\n const removeCookie = function (key) {\r\n document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\r\n };\r\n\r\n return {\r\n getCookie,\r\n setCookie,\r\n removeCookie,\r\n };\r\n}();\r\n","var pressalit = pressalit || {}; // eslint-disable-line\r\npressalit.navigationService = pressalit.navigationService || new function () {\r\n let toggleSidebar;\r\n\r\n const toggleBackdrop = function (sidebarId) {\r\n const menuOverlay = document.getElementById('js-menu-overlay');\r\n let toggle;\r\n const _listener = function () {\r\n toggle(sidebarId);\r\n };\r\n\r\n toggle = function () {\r\n toggleSidebar(sidebarId);\r\n if (menuOverlay.classList.contains('active')) {\r\n menuOverlay.classList.remove('active');\r\n menuOverlay.removeEventListener('click', _listener, true);\r\n return;\r\n }\r\n menuOverlay.classList.add('active');\r\n menuOverlay.addEventListener('click', _listener, true);\r\n };\r\n\r\n toggle();\r\n };\r\n\r\n toggleSidebar = function (id) {\r\n const el = document.getElementById(id);\r\n\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.classList && el.classList.contains('active')) {\r\n el.classList.remove('active');\r\n } else if (el.classList) {\r\n el.classList.add('active');\r\n }\r\n };\r\n\r\n return {\r\n toggleBackdrop,\r\n toggleSidebar,\r\n };\r\n}();\r\n","/*\r\n * Novicell master\r\n * Use this file to call functions in other files, on document ready, window.resize etc.\r\n */\r\n\r\nvar novicell = novicell || {}; // eslint-disable-line\r\nvar pressalit = pressalit || {}; // eslint-disable-line\r\nvar lazySizes = lazySizes || {}; // eslint-disable-line\r\n\r\nVue.use(VeeValidate, { classes: true, locale: document.documentElement.lang });\r\n// Init Vuex store\r\npressalit.vuex.init();\r\n// Document ready\r\npressalit.multiFilter.init();\r\npressalit.basketline.init();\r\npressalit.toiletseatFilters.init();\r\npressalit.dealerTile.init();\r\npressalit.measurementInput.init();\r\npressalit.listFilters.init();\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n pressalit.navigationMessage.init();\r\n pressalit.loader.init();\r\n pressalit.videoPlayer.init();\r\n pressalit.googleMapsAutocomplete.init();\r\n pressalit.filterCheckbox.init();\r\n pressalit.dealersList.init();\r\n pressalit.googleMaps.init();\r\n pressalit.dealerListPage.init();\r\n pressalit.dropDownFilter.init();\r\n pressalit.searchResults.init();\r\n pressalit.modal.init();\r\n pressalit.articleSlider.init();\r\n pressalit.testimonialList.init();\r\n pressalit.productRecommendation.init();\r\n pressalit.searchTrigger.init();\r\n pressalit.languageModal.init();\r\n pressalit.specificationNavigation.init();\r\n pressalit.articleTile.init();\r\n pressalit.blogPostTile.init();\r\n pressalit.collectionProduct.init();\r\n pressalit.productList.init();\r\n pressalit.searchPage.init();\r\n pressalit.videoGrid.init();\r\n pressalit.productPage.init();\r\n pressalit.dropdownElement.init();\r\n pressalit.productTileTemplate.init();\r\n pressalit.articleList.init();\r\n pressalit.wishlist.init();\r\n pressalit.productListHighlight.init();\r\n pressalit.navigation.init();\r\n pressalit.cameraPage.init();\r\n pressalit.footer.init();\r\n pressalit.selfService.init();\r\n pressalit.loginPage.init();\r\n pressalit.orderPage.init();\r\n pressalit.basketPage.init();\r\n pressalit.checkoutPage.init();\r\n pressalit.receiptPage.init();\r\n lazySizes.init();\r\n // pressalit.cookieService.init();\r\n\r\n setTimeout(() => {\r\n // SetTimeout to fix latency with loaded elements in e.g. Vue components\r\n svg4everybody(); // Fix SVG spritemap in IE/Edge\r\n }, 100);\r\n\r\n // eslint-disable-next-line no-undef\r\n Vue.use(VTooltip);\r\n});\r\n\r\n\r\n(function () {\r\n const anchors = document.querySelectorAll('[data-anchor]');\r\n\r\n for (let i = 0; i < anchors.length; i += 1) {\r\n const item = anchors[i];\r\n\r\n item.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n const target = item.getAttribute('data-anchor');\r\n const targetNode = document.querySelector(target);\r\n\r\n if (targetNode) {\r\n window.history.pushState({}, '', target);\r\n targetNode.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n });\r\n }\r\n\r\n document.addEventListener('DOMContentLoaded', () => {\r\n const identifier = window.location.hash;\r\n\r\n if (identifier) {\r\n const item = document.querySelector(identifier);\r\n\r\n if (item) {\r\n setTimeout(() => {\r\n item.scrollIntoView({ behavior: 'smooth' });\r\n }, 200);\r\n }\r\n }\r\n });\r\n}());\r\n"]}