{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/navigation/burger-menu/BurgerMenu.vue?1e26","webpack:///class-component-hooks.ts","webpack:///./src/entities/LoadingState.ts","webpack:///./src/helper/isNullOrWhitespace.ts","webpack:///./src/services/api-client.ts","webpack:///./src/services/part-search-service.ts","webpack:///./src/store/removeNamespace.ts","webpack:///./src/services/part-service.ts","webpack:///./src/store/modules/quick-search.ts","webpack:///./src/store/modules/vin-search.ts","webpack:///./src/helper/calculateNumberOfPages.ts","webpack:///./src/store/modules/part-search.ts","webpack:///./src/services/part-catalogue-service.ts","webpack:///./src/store/modules/part-catalogue-search.ts","webpack:///./src/services/country-service.ts","webpack:///./src/store/modules/country-state-select.ts","webpack:///./src/services/shopping-cart.service.ts","webpack:///./src/store/modules/notification.ts","webpack:///./src/entities/RelatedPartType.ts","webpack:///./src/helper/ResHelper.ts","webpack:///./src/constants/l10n.ts","webpack:///./src/entities/CustomerType.ts","webpack:///./src/helper/user.ts","webpack:///./src/analytics/index.ts","webpack:///./src/services/analytics-service.ts","webpack:///./src/store/modules/shopping-cart.ts","webpack:///./src/services/orders-service.ts","webpack:///./src/store/modules/orders-for-user.ts","webpack:///./src/services/related-parts-service.ts","webpack:///./src/store/modules/related-parts.ts","webpack:///./src/entities/shopping-cart-upload/ShoppingCartUploadProcessingState.ts","webpack:///./src/entities/shopping-cart-upload/ShoppingCartUploadResultType.ts","webpack:///./src/services/shopping-cart-upload.service.ts","webpack:///./src/store/modules/shopping-cart-upload.ts","webpack:///./src/store/modules/car-parts.ts","webpack:///./src/store/index.ts","webpack:///./src/filters/localize.ts","webpack:///./src/filters/localizeWithFallback.ts","webpack:///./src/helper/convertCentsToDecimalNumber.ts","webpack:///./src/filters/centsToDecimal.ts","webpack:///./src/filters/localizeWithFallbackKey.ts","webpack:///./src/filters/localizeWithParams.ts","webpack:///./src/filters/index.ts","webpack:///./src/components/slideshow/Slideshow.vue?5143","webpack:///./src/components/slideshow/Slideshow.vue?d96d","webpack:///./src/components/slideshow/Slideshow.vue?c124","webpack:///./src/components/slideshow/Slideshow.vue","webpack:///./src/components/slideshow/SlideshowItem.vue?ab39","webpack:///./src/components/slideshow/SlideshowItem.vue?2f83","webpack:///./src/components/slideshow/SlideshowItem.vue?aa1b","webpack:///./src/components/slideshow/SlideshowItem.vue","webpack:///./src/components/part-teaser/PartTeaser.vue?fe3d","webpack:///./src/components/price/Price.vue?1e42","webpack:///./src/mixins/BaseMixin.ts","webpack:///./src/components/deposit-part-info-tooltip/DepositPartInfoToolTip.vue?3139","webpack:///./src/components/deposit-part-info-tooltip/DepositPartInfoToolTip.vue?6dff","webpack:///./src/components/deposit-part-info-tooltip/DepositPartInfoToolTip.vue?2388","webpack:///./src/components/deposit-part-info-tooltip/DepositPartInfoToolTip.vue","webpack:///./src/components/price/Price.vue?9850","webpack:///./src/components/price/Price.vue?abd6","webpack:///./src/components/price/Price.vue","webpack:///./src/components/shopping-cart/ShoppingCartActions.vue?bdd0","webpack:///./src/components/loading-indicator/LoadingIndicator.tsx","webpack:///AddToShoppingCartIcon.tsx","webpack:///./src/components/shopping-cart/ShoppingCartActions.vue?c61e","webpack:///./src/components/shopping-cart/ShoppingCartActions.vue?cf85","webpack:///./src/components/shopping-cart/ShoppingCartActions.vue","webpack:///./src/components/delivery-time-tooltip/DeliveryTimeToolTip.vue?4574","webpack:///./src/components/delivery-time-tooltip/DeliveryTimeToolTip.vue?baf6","webpack:///./src/components/delivery-time-tooltip/DeliveryTimeToolTip.vue?cdaf","webpack:///./src/components/delivery-time-tooltip/DeliveryTimeToolTip.vue","webpack:///./src/components/part-teaser/PartTeaser.vue?85ef","webpack:///./src/components/part-teaser/PartTeaser.vue?406f","webpack:///./src/components/part-teaser/PartTeaser.vue","webpack:///./src/components/quick-search/QuickSearch.vue?7263","webpack:///./src/components/quick-search/QuickSearch.vue?a267","webpack:///./src/components/quick-search/QuickSearch.vue?c537","webpack:///./src/components/quick-search/QuickSearch.vue","webpack:///./src/components/quick-search/QuickSearchResult.vue?2728","webpack:///./src/components/smooth-reflow/SmoothReflow.vue?8a53","webpack:///./src/components/smooth-reflow/SmoothReflow.vue?c1a0","webpack:///./src/components/smooth-reflow/SmoothReflow.vue?3ece","webpack:///./src/components/smooth-reflow/SmoothReflow.vue","webpack:///./src/components/quick-search/QuickSearchResult.vue?5916","webpack:///./src/components/quick-search/QuickSearchResult.vue?03d2","webpack:///./src/components/quick-search/QuickSearchResult.vue","webpack:///./src/components/vin-search/VinSearchResult.vue?83ab","webpack:///./src/components/vin-search/VinSearchResultItem.vue?2f19","webpack:///./src/components/vin-search/VinSearchResultItem.vue?405b","webpack:///./src/components/vin-search/VinSearchResultItem.vue?1bbf","webpack:///./src/components/vin-search/VinSearchResultItem.vue","webpack:///./src/components/vin-search/VinSearchResult.vue?ff8b","webpack:///./src/components/vin-search/VinSearchResult.vue?bcb4","webpack:///./src/components/vin-search/VinSearchResult.vue","webpack:///./src/components/part-details/RelatedPartsContainer.vue?7627","webpack:///./src/components/related-part/RelatedParts.vue?ba07","webpack:///./src/components/related-part/RelatedPart.vue?0d14","webpack:///./src/components/related-part/RelatedPartImage.vue?0c3d","webpack:///./src/components/related-part/RelatedPartImage.vue?a3f1","webpack:///./src/components/related-part/RelatedPartImage.vue?a5a4","webpack:///./src/components/related-part/RelatedPartImage.vue","webpack:///./src/components/related-part/RelatedPart.vue?2b8f","webpack:///./src/components/related-part/RelatedPart.vue?51a7","webpack:///./src/components/related-part/RelatedPart.vue","webpack:///CloseIcon.tsx","webpack:///./src/components/related-part/RelatedParts.vue?9615","webpack:///./src/components/related-part/RelatedParts.vue?1299","webpack:///./src/components/related-part/RelatedParts.vue","webpack:///./src/components/part-details/RelatedPartsContainer.vue?aa0b","webpack:///./src/components/part-details/RelatedPartsContainer.vue?83de","webpack:///./src/components/part-details/RelatedPartsContainer.vue","webpack:///./src/components/part-details/PartDetailsActions.vue?d0aa","webpack:///./src/components/part-details/PartDetailsActions.vue?7d8b","webpack:///./src/components/part-details/PartDetailsActions.vue?34ff","webpack:///./src/components/part-details/PartDetailsActions.vue","webpack:///./src/components/shopping-cart/ShoppingCartOverview.vue?d29a","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItem.vue?7d39","webpack:///./src/components/shopping-cart/ShoppingCartItemActions.vue?cc82","webpack:///DeleteIcon.tsx","webpack:///SaveIcon.tsx","webpack:///MoveIcon.tsx","webpack:///./src/components/shopping-cart/ShoppingCartItemActions.vue?4565","webpack:///./src/components/shopping-cart/ShoppingCartItemActions.vue?80b7","webpack:///./src/components/shopping-cart/ShoppingCartItemActions.vue","webpack:///./src/components/shopping-cart/ShoppingCartItemUserInfoText.vue?3d6f","webpack:///./src/components/shopping-cart/ShoppingCartItemUserInfoText.vue?37f1","webpack:///./src/components/shopping-cart/ShoppingCartItemUserInfoText.vue?62f7","webpack:///./src/components/shopping-cart/ShoppingCartItemUserInfoText.vue","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItem.vue?52cf","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItem.vue?8369","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItem.vue","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItems.vue?18e7","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItems.vue?2bfe","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItems.vue?19bc","webpack:///./src/components/shopping-cart/ShoppingCartOverviewItems.vue","webpack:///./src/components/shopping-cart/ShoppingCartOverviewMetadata.vue?c298","webpack:///./src/components/shopping-cart/ShoppingCartOverviewMetadata.vue?a61c","webpack:///./src/entities/ShippingMethod.ts","webpack:///./src/components/shopping-cart/ShoppingCartOverviewMetadata.vue?a959","webpack:///./src/components/shopping-cart/ShoppingCartOverviewMetadata.vue","webpack:///./src/components/shopping-cart/ShoppingCartOverview.vue?bd10","webpack:///./src/components/shopping-cart/ShoppingCartOverview.vue?e373","webpack:///./src/components/shopping-cart/ShoppingCartOverview.vue","webpack:///./src/components/shopping-cart/upload/ShoppingCartUpload.vue?80d4","webpack:///./src/components/shopping-cart/upload/ShoppingCartUploadResultTable.vue?fe0c","webpack:///./src/components/shopping-cart/upload/ShoppingCartUploadResultTable.vue?a767","webpack:///./src/components/shopping-cart/upload/ShoppingCartUploadResultTable.vue?3089","webpack:///./src/components/shopping-cart/upload/ShoppingCartUploadResultTable.vue","webpack:///./src/components/shopping-cart/upload/ShoppingCartUpload.vue?6bf4","webpack:///./src/components/shopping-cart/upload/ShoppingCartUpload.vue?fec0","webpack:///./src/components/shopping-cart/upload/ShoppingCartUpload.vue","webpack:///./src/components/shopping-cart/menu/ShoppingCartMenu.vue?f52f","webpack:///EmptyShoppingCartIcon.tsx","webpack:///MoreIcon.tsx","webpack:///LessIcon.tsx","webpack:///UploadIcon.tsx","webpack:///FilledShoppingCartIcon.tsx","webpack:///./src/components/shopping-cart/menu/AddCart.vue?7a58","webpack:///./src/components/shopping-cart/menu/AddCart.vue?d9b1","webpack:///./src/components/shopping-cart/menu/AddCart.vue?0f90","webpack:///./src/components/shopping-cart/menu/AddCart.vue","webpack:///GoToCartEntry.tsx","webpack:///CartSelect.tsx","webpack:///./src/components/shopping-cart/menu/DirectInput.vue?3756","webpack:///./src/components/shopping-cart/menu/DirectInput.vue?94cf","webpack:///./src/components/shopping-cart/menu/DirectInput.vue?232f","webpack:///./src/components/shopping-cart/menu/DirectInput.vue","webpack:///./src/components/shopping-cart/menu/CartItems.vue?754b","webpack:///./src/components/shopping-cart/menu/CartItems.vue?8339","webpack:///./src/components/shopping-cart/menu/CartItems.vue?8722","webpack:///./src/components/shopping-cart/menu/CartItems.vue","webpack:///./src/components/shopping-cart/menu/ShoppingCartMenu.vue?8ede","webpack:///./src/components/shopping-cart/menu/ShoppingCartMenu.vue?1701","webpack:///./src/components/shopping-cart/menu/ShoppingCartMenu.vue","webpack:///./src/components/navigation/Navigation.vue?aa72","webpack:///./src/components/navigation/burger-menu/BurgerMenu.vue?5b66","webpack:///./src/components/navigation/burger-menu/BurgerMenu.vue?f107","webpack:///./src/components/navigation/burger-menu/BurgerMenu.vue?95dc","webpack:///./src/components/navigation/burger-menu/BurgerMenu.vue","webpack:///./src/components/availability-clock/AvailabilityClock.vue?8df3","webpack:///./src/components/availability-clock/AvailabilityClock.vue?6456","webpack:///./src/components/availability-clock/AvailabilityClock.vue?4bf3","webpack:///./src/components/availability-clock/AvailabilityClock.vue","webpack:///./src/components/vin-search/VinSearch.vue?5761","webpack:///./src/components/vin-search/VinSearch.vue?15fd","webpack:///./src/components/vin-search/VinSearch.vue?6766","webpack:///./src/components/vin-search/VinSearch.vue","webpack:///./src/helper/notNullOrUndefined.ts","webpack:///./src/components/navigation/Navigation.vue?473a","webpack:///./src/components/navigation/Navigation.vue?7457","webpack:///./src/components/navigation/Navigation.vue","webpack:///./src/components/navigation/NavigationItem.vue?3215","webpack:///./src/components/navigation/NavigationItem.vue?a322","webpack:///./src/components/navigation/NavigationItem.vue?390d","webpack:///./src/components/navigation/NavigationItem.vue","webpack:///./src/components/country-state-select/CountryStateSelect.vue?4df2","webpack:///./src/components/country-state-select/CountryStateSelect.vue?955d","webpack:///./src/components/country-state-select/CountryStateSelect.vue?859f","webpack:///./src/components/country-state-select/CountryStateSelect.vue","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityContainer.vue?3498","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityContainer.vue?bf7e","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityContainer.vue?8c30","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityContainer.vue","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityForValuesContainer.vue?755d","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityForValuesContainer.vue?ec6c","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityForValuesContainer.vue?1d04","webpack:///./src/components/dynamic-visibility-container/DynamicVisibilityForValuesContainer.vue","webpack:///./src/components/orders/OrderList.vue?1a0b","webpack:///./src/components/order-state-tooltip/OrderStateToolTip.vue?1a12","webpack:///./src/components/order-state-tooltip/OrderStateToolTip.vue?e738","webpack:///./src/components/order-state-tooltip/OrderStateToolTip.vue?b36e","webpack:///./src/components/order-state-tooltip/OrderStateToolTip.vue","webpack:///./src/components/orders/OrderList.vue?8c12","webpack:///./src/components/orders/OrderList.vue?301b","webpack:///./src/components/orders/OrderList.vue","webpack:///./src/components/part-search/PartSearch.vue?fbc6","webpack:///PartSearchPagination.tsx","webpack:///./src/components/part-search/PartSearchCard.vue?46be","webpack:///./src/components/related-part/RelatedPartsAction.vue?8c2f","webpack:///./src/components/related-part/RelatedPartsAction.vue?f25b","webpack:///./src/components/related-part/RelatedPartsAction.vue?ad66","webpack:///./src/components/related-part/RelatedPartsAction.vue","webpack:///./src/components/related-part/ReplacementPartsAction.vue?7f6a","webpack:///./src/components/related-part/ReplacementPartsAction.vue?0dd4","webpack:///./src/components/related-part/ReplacementPartsAction.vue?f1aa","webpack:///./src/components/related-part/ReplacementPartsAction.vue","webpack:///./src/components/part-search/PartSearchCardImage.vue?820d","webpack:///./src/components/part-search/PartSearchCardImage.vue?548a","webpack:///./src/components/part-search/PartSearchCardImage.vue?f80e","webpack:///./src/components/part-search/PartSearchCardImage.vue","webpack:///./src/components/part-search/PartSearchCard.vue?8eb5","webpack:///./src/components/part-search/PartSearchCard.vue?8ca8","webpack:///./src/components/part-search/PartSearchCard.vue","webpack:///./src/components/part-search/PartSearch.vue?70f7","webpack:///./src/components/part-search/PartSearch.vue?d784","webpack:///./src/components/part-search/PartSearch.vue","webpack:///./src/components/catalogue-search/CatalogueSearch.vue?9dfc","webpack:///./src/components/catalogue-search/CatalogueSearchPartCard.vue?b3bc","webpack:///./src/components/catalogue-search/CatalogueSearchCardImage.vue?4112","webpack:///./src/components/catalogue-search/CatalogueSearchCardImage.vue?2819","webpack:///./src/components/catalogue-search/CatalogueSearchCardImage.vue?cfd5","webpack:///./src/components/catalogue-search/CatalogueSearchCardImage.vue","webpack:///./src/components/catalogue-search/CatalogueSearchPartCard.vue?5f77","webpack:///./src/components/catalogue-search/CatalogueSearchPartCard.vue?6250","webpack:///./src/components/catalogue-search/CatalogueSearchPartCard.vue","webpack:///./src/components/catalogue-search/CatalogueSearchCard.vue?2666","webpack:///./src/components/catalogue-search/CatalogueSearchCard.vue?2448","webpack:///./src/components/catalogue-search/CatalogueSearchCard.vue?79f5","webpack:///./src/components/catalogue-search/CatalogueSearchCard.vue","webpack:///./src/components/catalogue-search/CatalogueSearchAssemblyCard.vue?c066","webpack:///./src/components/catalogue-search/CatalogueSearchAssemblyCard.vue?ff87","webpack:///./src/components/catalogue-search/CatalogueSearchAssemblyCard.vue?ed3b","webpack:///./src/components/catalogue-search/CatalogueSearchAssemblyCard.vue","webpack:///./src/components/catalogue-search/CatalogueSearch.vue?6f03","webpack:///./src/components/catalogue-search/CatalogueSearch.vue?d736","webpack:///./src/components/catalogue-search/CatalogueSearch.vue","webpack:///./src/components/cookie-disclaimer/CookieDisclaimer.vue?6705","webpack:///./src/components/cookie-disclaimer/CookieDisclaimer.vue?19ad","webpack:///./src/components/cookie-disclaimer/CookieDisclaimer.vue?7fca","webpack:///./src/components/cookie-disclaimer/CookieDisclaimer.vue","webpack:///./src/components/breadcrumb/Breadcrumb.vue?9dac","webpack:///./src/components/breadcrumb/Breadcrumb.vue?09e2","webpack:///./src/components/breadcrumb/Breadcrumb.vue?ec85","webpack:///./src/components/breadcrumb/Breadcrumb.vue","webpack:///./src/components/breadcrumb/GoogleMarkupData.vue?5876","webpack:///./src/services/google-service.ts","webpack:///./src/components/breadcrumb/GoogleMarkupData.vue?8551","webpack:///./src/components/breadcrumb/GoogleMarkupData.vue?e175","webpack:///./src/components/breadcrumb/GoogleMarkupData.vue","webpack:///./src/components/car/RandomPartsList.vue?1709","webpack:///./src/components/part-search/PartListItem.vue?1b82","webpack:///./src/components/part-search/PartListItem.vue?c893","webpack:///./src/components/part-search/PartListItem.vue?15cd","webpack:///./src/components/part-search/PartListItem.vue","webpack:///./src/components/car/RandomPartsList.vue?f37e","webpack:///./src/components/car/RandomPartsList.vue?a34e","webpack:///./src/components/car/RandomPartsList.vue","webpack:///./src/components/car/AvailablePartsList.vue?c26c","webpack:///./src/components/part-search/SearchablePartsList.vue?9372","webpack:///./src/components/part-search/SearchablePartsList.vue?bb8d","webpack:///./src/components/part-search/SearchablePartsList.vue?0787","webpack:///./src/components/part-search/SearchablePartsList.vue","webpack:///./src/components/car/AvailablePartsList.vue?884c","webpack:///./src/components/car/AvailablePartsList.vue?1d4c","webpack:///./src/components/car/AvailablePartsList.vue","webpack:///./src/components/brand-landing-page/BrandPartsSearchBox.vue?2f54","webpack:///./src/components/brand-landing-page/BrandPartsSearchBox.vue?5603","webpack:///./src/components/brand-landing-page/BrandPartsSearchBox.vue?02d2","webpack:///./src/components/brand-landing-page/BrandPartsSearchBox.vue","webpack:///./src/components/part-catalogue/PartCatalogueAssembly.vue?6efa","webpack:///LoadingIndicator.tsx","webpack:///./src/components/part-catalogue/PartCatalogueDetailsItem.vue?719d","webpack:///PartCatalogueDetailsItemMeta.tsx","webpack:///./src/components/part-catalogue/PartCatalogueDetailsItem.vue?7a2c","webpack:///./src/components/part-catalogue/PartCatalogueDetailsItem.vue?99a3","webpack:///./src/components/part-catalogue/PartCatalogueDetailsItem.vue","webpack:///LeftArrowIcon.tsx","webpack:///RightArrowIcon.tsx","webpack:///./src/components/part-catalogue/PartCatalogueAssembly.vue?c478","webpack:///./src/components/part-catalogue/PartCatalogueAssembly.vue?d4c2","webpack:///./src/components/part-catalogue/PartCatalogueAssembly.vue","webpack:///./src/components/part-catalogue/PartCatalogueLandingPage.vue?c1a2","webpack:///./src/components/breadcrumb/PartCatalogueLandingPageBreadcrumb.vue?a55a","webpack:///./src/components/breadcrumb/PartCatalogueLandingPageBreadcrumb.vue?4645","webpack:///./src/entities/part-catalogue/PartCatalogueTreeNodeType.ts","webpack:///./src/components/breadcrumb/PartCatalogueLandingPageBreadcrumb.vue?bb21","webpack:///./src/components/breadcrumb/PartCatalogueLandingPageBreadcrumb.vue","webpack:///./src/components/part-catalogue/PartCatalogueLandingPage.vue?a0a3","webpack:///./src/components/part-catalogue/PartCatalogueLandingPage.vue?84dc","webpack:///./src/components/part-catalogue/PartCatalogueLandingPage.vue","webpack:///./src/components/multi-currency/CurrencySelectBox.vue?9c66","webpack:///./src/components/multi-currency/CurrencySelectBox.vue?bf22","webpack:///./src/components/multi-currency/CurrencySelectBox.vue?1189","webpack:///./src/components/multi-currency/CurrencySelectBox.vue","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","LoadingState","isNullOrWhitespace","input","trim","apiClient","a","withCredentials","headers","Accept","isAxiosError","error","searchTerm","brand","category","pageNumber","numberOfResultsPerPage","searchParams","undefined","this","searchLink","addQuery","toString","res","segmentCoded","partNumber","partNumbers","post","numberOfResults","segment","removeNamespace","namespace","type","getters","removeNamespaceFromSub","mutations","actions","sub","namespacePrefix","withoutNamespace","keys","forEach","replace","id","quantity","orderMethod","respectPartReplacements","baseUrl","response","status","quickSearchService","partService","QuickSearchModuleTypes","partSearchResults","totalNumberOfParts","searchResultsLoadingState","isVinSearchResult","vinSearchResult","loadSearchResults","loadSearchResultsSuccess","loadSearchResultsFail","closeQuickSearchResults","updatePartAvailability","updatePartAvailabilityLoadingState","reloadPartAvailabilityForPart","types","searchResults","totalNumberOfResults","searchResultLoadingState","Indeterminate","currentState","payload","Loading","results","partSearchResultPage","partSearchResultDetails","filter","isPartAvailabilityLoading","Loaded","Failed","foundPart","find","searchResult","partId","partAvailability","isLoading","context","commit","getQuickSearchResults","then","catch","e","getAvailabilityOfPart","state","namespaced","partSearchService","VinSearchModuleTypes","closeVinSearchResults","getVinSearchResult","calculateNumberOfPages","numberOfResultsPerPageForSearch","PartSearchModuleTypes","numberOfPages","getSearchResults","entryId","entryUri","baseUri","assemblyId","method","selectedFilterId","selectFilterUri","tree","treeId","children","child","getTreeNodeById","partCatalogueService","PartCatalogueSearchModuleTypes","partCatalogueSearchResults","partCatalogueParts","searchResultPartDetails","countryId","countryService","CountryStateSelectModuleTypes","countries","countriesLoadingState","selectedCountry","statesOfSelectedCountry","statesLoadingState","selectedState","registerSelect","loadCountries","loadCountriesSuccess","loadCountriesFail","selectCountry","selectCountryById","loadStatesForSelectedCountry","loadStatesForSelectedCountrySuccess","loadStatesForSelectedCountryFail","selectState","selectStateById","selectCountryAndStateById","countryStateSelectStates","countryStateSelectState","country","foundCountry","states","foundState","stateOfCountry","stateId","getAllCountries","getStatesOfCountry","shoppingCartId","put","cartName","delete","fullPartId","items","orderName","shippingMethod","shoppingCartItemId","userInfoText","targetShoppingCartId","use","NotificationType","NotificationModuleTypes","notify","RelatedPartType","toastOptions","duration","theme","position","Info","Success","Error","toasted","show","message","formula","localization","resourceDictionary","fallback","getString","fallbackKey","params","currentCultureCode","CustomerType","QUICK_SEARCH","SEARCH_TERM_PLACEHOLDER","SEARCH_BUTTON_ALT_TEXT","QUICK_SEARCH_RESULT","TITLE","CLOSE_BUTTON","PART_NUMBER","DESCRIPTION","BRAND","PRICE","AVAILABILITY","NO_RESULTS_FOUND","LINK_TO_DETAIL_SEARCH_TEXT","LINK_TO_PARTS_CATALOGUE_SEARCH_TEXT","VIN_SEARCH","VIN_SEARCH_RESULT","DELIVERY_TIME_TOOLTIP","HEADER_TEXT","EACH_TEXT","DEPOSIT_PART_INFO_TOOLTIP","INFO_TEXT","ORDER_ITEM_STATE_TOOLTIP","READY_FOR_PICKING_TEXT","READY_FOR_SHIPMENT_TEXT","QUANTITY_INVOICED_TEXT","IN_ORDER_TEXT","NET","GROSS","NETTEXTUAL","GROSSTEXTUAL","HIDDEN","PART","ALTERNATIVES_AND_REPLACEMENTS","SHOW_REPLACEMENTS_BUTTON_TEXT","DELIVERY_TEXT","IN_STOCK","UNIT_CODE_TEXT","For","UNKNOWN","ForRelation","relatedPartType","Alternative","Replacement","ChildBrandPart","PART_DETAILS","QUANTITY","ADD_TO_CART","SHOPPING_CART_OVERVIEW","SHOPPING_CART","CART_NAME","ORDER_NAME","SHIPPING","ORDER_METHOD","DELIVERY","USER_INFO_TEXT","GO_TO_SUMMARY","CONTINUE_SHOPPING","SAVE","EMPTY_CART","ERROR_MUST_NOT_BE_EMPTY","MOVE_CART_ITEM_DEFAULT_OPTION","SHIPPING_METHOD_VALUE","COUNTRY","STATE","NOT_IN_STOCK","ADD_SUCCESS","ADD_FAILED","ADD_BULK_SUCCESS","ADD_BULK_FAILED","MOVE_ITEM_SUCCESS","MOVE_ITEM_FAILED","CREATE_NEW_CART_SUCCESS","CREATE_NEW_CART_FAILED","DELETE_CART_SUCCESS","DELETE_CART_FAILED","SHOPPING_CART_UPLOAD","DEMO_FILE_DOWNLOAD_TEXT","DEMO_FILE_DOWNLOAD_TEXT_EXCEL","UPLOAD_FILE","SHOW_USED_PARTS","ADD_TO_NEW_CART","ADD_TO_EXISTING_CART","SELECT_CART","LINES_PARSED","SUM_SELECTED_ITEMS","FOUND_PARTS","FOUND_PARTS_DESCRIPTION","REPLACED_PARTS","REPLACED_PARTS_DESCRIPTION","USED_PARTS","USED_PARTS_DESCRIPTION","NOT_FOUND_PARTS","NOT_FOUND_PARTS_DESCRIPTION","PROGRESS","PROGRESS_UNDEFINED","GENERAL_ERROR","RESULT","REPLACED_BY","SUM","DOWNLOAD","SHOPPING_CART_MENU","GO_TO_CART","NUMBER_OF_SHOPPING_CARTS","DIRECT_INPUT_TITLE","DIRECT_INPUT_PLACEHOLDER","ORDERS_FOR_USER","FILTER_PLACEHOLDER","FILTER_CLEAR","ORDERS_FOR_USER_TABLE","COL_REFERENCE","COL_NUMBER","COL_DATE","COL_STATUS","COL_TOTAL_AMOUNT","COL_ITEMS","COL_SHOW_DETAILS","COL_HIDE_DETAILS","COL_DETAIL_PART_NUMBER","COL_DETAIL_DESCRIPTION","COL_DETAIL_MAKE","COL_DETAIL_ADDITIONAL_INFO","COL_DETAIL_QUANTITY","COL_DETAIL_DELIVERED_QUANTITY","COL_DETAIL_AMOUNT","AVAILABILITY_CLOCK","COUNTDOWN_TEXT","SHIPPING_WITHIN_TEXT","DAYS","HOURS","MINUTES","SECONDS","PART_SEARCH","RESULTS_HEADING","SEARCH_BOX_TITLE","ADDITIONAL_PARTS_LINK_TEXT","CATALOGUE_SEARCH","SUB_HEADLINE_BRAND","SUB_HEADLINE_MODEL_GROUP","SUB_HEADLINE_MODEL","SUB_HEADLINE_DIAGRAM","SUB_HEADLINE_VIN","PART_CATEGORIES","categoryName","COOKIE_DISCLAIMER","BUTTON_TEXT","MESSAGE","MORE_INFO_BUTTON_TEXT","PART_CATALOGUE","TITLE_TEXT","GO_TO_GRAPHIC_TEXT","CHANGE_SELECTION","BREADCRUMB_DESCRIPTION_TEXT","BACK_BUTTON_TEXT","META","ASSEMBLY_NUMBER_FROM","ASSEMBLY_NUMBER_TO","COLOR","ENGINE_NUMBER_FROM","ENGINE_NUMBER_TO","SIDE","VIN_FROM","VIN_TO","CAR","AVAILABLE_PARTS_TITLE","RANDOM_PARTS_TITLE","SEARCH_FOR_PARTS","PARTS","user","isAuthenticated","customerType","NotValidated","ct","PrepaidWithDiscount","NoPrepaidWithDiscount","ensureDataLayer","dataLayer","trackAddItemsToShoppingCart","event","ecommerce","currencyCode","add","products","map","item","price","categories","shoppingCartItemAnalyticsRequests","query","reduce","prev","cur","getMultipleShoppingCartItemAnalytics","shoppingCartService","searchService","analyticsService","ShoppingCartModuleTypes","loadingState","shoppingCarts","activeShoppingCart","itemsThatAreBeingAddded","isItemCurrentlyBeingAdded","hasActiveShoppingCart","isItemLoadingAvailability","partSearchState","foundPartsByDirectInput","orderMethods","loadShoppingCarts","loadShoppingCartsSuccess","loadShoppingCartsFail","setActiveSelectedShoppingCart","addShoppingCart","addShoppingCartSuccess","addShoppingCartFail","deleteActiveShoppingCart","deleteActiveShoppingCartSuccess","deleteActiveShoppingCartFail","addShoppingCartItem","addShoppingCartItemSuccess","addShoppingCartItemsInBulk","updateActiveShoppingCartMetadata","updateActiveShoppingCartMetadataSuccess","updateActiveShoppingCartMetadataFail","updateActiveShoppingCartShippingMethod","updateActiveShoppingCartShippingMethodSuccess","updateActiveShoppingCartShippingMethodFail","updateActiveShoppingCartOrderMethod","updateActiveShoppingCartOrderMethodSuccess","updateActiveShoppingCartOrderMethodFail","updateShoppingCartOrderMethod","updateQuantityOfShoppingCartItem","updateQuantityOfShoppingCartItemSuccess","updateQuantityOfShoppingCartItemFail","updateUserInfoTextOfShoppingCartItem","updateUserInfoTextOfShoppingCartItemSuccess","updateUserInfoTextOfShoppingCartItemFail","deleteItemFromActiveShoppingCart","deleteItemFromActiveShoppingCartSuccess","deleteItemFromActiveShoppingCartFail","moveItemToShoppingCart","moveItemToShoppingCartSuccess","moveItemToShoppingCartFail","reloadAvailabilityOfShoppingCartItem","reloadAvailabilityOfShoppingCartItemSuccess","reloadAvailabilityOfShoppingCartItemFail","searchForPartsByPartNumber","searchForPartsByPartNumberSuccess","searchForPartsByPartNumberFail","clearFoundPartsByDirectInput","setActiveShoppingCart","itemsThatAreBeingAdded","itemsThatAreLoadingAvailability","currentCart","carts","cart","isActiveCart","shoppingCart","foundItem","cartItems","targetCart","cartItem","itemIndex","findIndex","set","availability","parts","getShoppingCarts","getOrderMethods","hasShippingCosts","isOrderMethodValid","firstOrderMethod","cartIdToDelete","cartNameToDelete","deleteShoppingCart","dispatch","getStringWithParameters","root","getShoppingCartItemAnalytics","shoppingCartItemAnalytics","cartId","cartNames","availableCartName","cartNameToTry","includes","foundCart","chunkedCartItems","chunk","promises","addShoppingCartItemsBulk","Promise","all","ci","updateShoppingCartMetadata","updateShoppingCartShippingMethod","deleteShoppingCartItem","searchPartsByPartNumber","partSearchResult","resultInfos","ordersService","OrdersForUserModuleTypes","orderResults","orderResultsLoadingState","loadOrderResults","loadOrderResultsSuccess","loadOrderResultsFail","setFilter","loadOrders","orderResultsFiltered","getAllOrdersForUser","lowerFilterTerm","toLowerCase","number","lines","subItem","dmsPartNumber","ShoppingCartUploadProcessingState","ShoppingCartUploadResultType","relatedPartsService","RelatedPartsModuleTypes","alternativeParts","replacementParts","childBrandParts","relatedParts","relatedPartsLoadingState","loadRelatedParts","unloadRelatedParts","loadRelatedPartsSuccess","loadRelatedPartsFail","getRelatedPartInfo","file","includeUsedParts","formData","FormData","append","url","shoppingCartUploadService","ShoppingCartUploadModuleTypes","uploadInfo","selectedPartIds","updateLoadingState","uploadFileAndStartSearch","uploadFileAndStartSearchFail","setSelectedPartIds","selectPartWithId","deselectPartWithId","updateCurrentUploadInfo","reloadAvailabilityOfShoppingCartUploadItem","reloadAvailabilityOfShoppingCartUploadItemSuccess","reloadAvailabilityOfShoppingCartUploadItemFail","updateQuantityOfShoppingCartUploadItem","partIds","info","Running","Found","foundParts","part","Used","usedParts","processFile","getCurrentUploadState","updateItem","CarPartsModuleTypes","carPartsLoadingState","loadPartsOfCar","loadPartsOfCarSuccess","loadPartsOfCarFail","searchByPartNumbersAndBrand","config","devtools","plugins","quickSearch","vinSearch","partSearch","partCatalogueSearch","countryStateSelect","notification","ordersForUser","shoppingCartUpload","carParts","localize","localizeWithFallback","getStringOrFallback","convertCentsToDecimalNumber","cents","fractionDigits","Number","toLocaleString","getCurrentCultureName","minimumFractionDigits","maximumFractionDigits","centsToDecimal","withFractionDigits","localizeWithFallbackKey","getStringOrUseFallbackKey","localizeWithParams","_vm","_h","$createElement","_c","_self","staticClass","class","hidePagination","totalNumberOfItems","attrs","_t","staticRenderFns","component","backgroundImageUrl","buttonLinkUrl","directives","rawName","expression","_v","_s","title","subTitle","buttonText","String","linkTarget","couldNotLoadImage","imageUrl","on","$event","imageLoadError","description","style","color","visibility","showAvailability","_f","l10n","code","_e","priceNetCents","priceGrossCents","priceDiscountedNetCents","depositPartPriceNetCents","depositPartPriceGrossCents","depositPartPriceDiscountedNetCents","isHidden","currencySymbol","hasSubunit","unitCode","maxAllowedQuantity","onQuantityChanged","onQuantityValid","onQuantityInvalid","rightAligned","showSmallPrice","domProps","smallFontPrice","noWrap","bigFontPrice","path","watermark","width","$mq","toolTipMessage","html","customClass","trigger","placement","staticStyle","ComponentClass","extend","instance","propsData","$mount","priceHtml","$el","outerHTML","hasCustomerDiscounts","hasDiscounts","Boolean","components","DepositPartInfoToolTip","showHorizontal","positionAbsolute","hideUnitCode","isQuantityValid","quantityChanged","quantityFocusStateChanged","target","composing","currentQuantity","isDisabled","stopPropagation","preventDefault","onAddItemToShoppingCart","LoadingIndicator","functional","props","classPostfix","render","createElement","ctx","defaultQuantity","quantityHasFocus","emitQuantityChanged","hasFocus","$store","isValid","lastEmittedQuantityValid","emitQuantityIsValid","emitQuantityIsInvalid","required","default","AddToShoppingCartIcon","modifiers","returnValue","partDeliveryTimeInformations","element","deliveryTimeInformationText","infoText","isLoadingAvailability","reloadAvailabilityDebounced","debounce","reloadAvailability","stockInfos","previousValue","currentValue","isUsedPart","getAvailableItemCount","ShoppingCartActions","Price","DeliveryTimeToolTip","search","loadingFailed","$forceUpdate","isSearchTermValid","searchDebounced","isDesktop","document","location","href","detailSearchLink","encodeURIComponent","transitionEvent","selector","closeResults","_l","partDetailLinkForPart","brandCode","isNotInStockButReplaceable","depositPartPrice","currency","htmlSymbol","showAvailabilityMap","detailSearchLinkForSearchTerm","catalogueSearchLinkForSearchTerm","tag","$smoothReflow","options","mixins","reloadAvailabilityDebouncedMap","Map","partDetailLink","clear","catalogueSearchLink","SmoothReflow","partCatalogueUrl","partCatalogueThumbnailUrl","showGoToCatalogueSearchButton","VinSearchResultItem","partActionLink","close","relatedPart","isReplacement","predecessorPartNumber","isNotInStock","getUrlForImage","src","alt","RelatedPartImage","fullPartIds","store","RelatedPart","CloseIcon","RelatedParts","selectActiveShoppingCart","isUserAuthenticated","isShoppingCartEmpty","saveMetadata","hasCustomerShippingCosts","selectShippingMethodForCart","selectOrderMethodForCart","hideCheckoutButton","checkoutUrlWithShoppingCartId","partDetailLinkForCartItem","saveUserInfoText","deleteItem","saveQuantity","moveItem","editModeForMoveOfItemIsActive","indexOf","_k","keyCode","saveQuantityIfValid","_n","showQuantitySaveButton","moveItemEditMode","targetShoppingCartSelectedForItemMove","selectedShoppingCartId","parseInt","isNaN","allCarts","DeleteIcon","SaveIcon","MoveIcon","save","currentUserInfoText","text","ShoppingCartItemActions","ShoppingCartItemUserInfoText","itemId","Array","ShoppingCartOverviewItem","isCartNameValid","currentCartName","isEmpty","currentOrderName","ShippingMethod","shippingMethods","metadata","selectedShippingMethodValue","selectedShippingMethod","selectedOrderMethodValue","checkoutUrl","ShoppingCartOverviewMetadata","ShoppingCartOverviewItems","LoadingStates","processedInPercent","ref","excelOrCsvFileSelected","openFileDialog","isArray","searchForUsedParts","_i","$$a","$$el","$$c","checked","$$v","$$i","concat","totalLinesParsed","resultFromUpload","ResultTypes","notFoundParts","NotFound","addSelectedPartsToCart","_m","$$selectedVal","selected","val","_value","multiple","resultType","columnSizeForDescription","columnSizeForInfoText","columnSizeForQuantity","itemClicked","replacementPartId","replacementPartNumber","replacementPartName","quantityChangedForPart","$set","updateQuantityAndReloadAvailabilityDebounced","updateQuantityAndReloadAvailability","checkbox","refreshUploadInfoMilliseconds","refreshUploadState","fileInput","$refs","click","files","selectedFile","startTimer","setTimeout","intoNewCart","partsToAdd","sumCents","sumCentsForCurrency","has","ShoppingCartUploadResultTable","itemCount","scopedSlots","_u","fn","proxy","toggleAddCart","showAddCart","addCart","shoppingCartUrl","selectCart","deleteActiveCart","cartInput","focus","partNumberEntered","selectedPartChanged","option","selectedPart","searchForPartsDebounced","searchForParts","clearFoundParts","loadingFunction","EmptyShoppingCartIcon","FilledShoppingCartIcon","GoToCartEntry","CartSelect","MoreIcon","LessIcon","UploadIcon","AddCart","DirectInput","CartItems","homeLink","nextPossibleShippingDateTimeISO8601","resetSelectedItems","hasSelectedNavItemLvl2SubMenuItems","link","selectedSubMenuItemLvl1","selectedSubMenuItemLvl2","toggleBurgerMenu","isOpen","hidden","$options","filters","days","hours","minutes","seconds","totalSecondsLeft","nextPossibleShippingDateTime","parseISO","differenceInSeconds","Date","now","countdown","setInterval","addDays","isSaturday","isSunday","Math","floor","notNullOrUndefined","selectedNavigationItem","subMenuItems","JSON","parse","subMenuItemsJson","flatMap","secondLevelItems","hasSelectedNavItemSubMenuItems","firstLevelItem","activeSubMenuInfo","BurgerMenu","AvailabilityClock","QuickSearch","VinSearch","isFixed","onMouseOver","isActive","getHrefLink","hasSubMenuItemsLevel1","toggleExpandSubItems","expandSubItems","parent","$parent","onMouseOverItem","startsWith","countrySelectName","countrySelectLabel","selectedCountryOption","countryOptions","disabled","countrySelected","stateOptions","stateSelectName","stateSelectLabel","selectedStateOption","stateSelected","countryOption","countryInput","getElementById","countryHiddenInputId","Event","dispatchEvent","stateOption","stateInput","stateHiddenInputId","label","showSlotContent","checkboxElement","idOfCheckbox","addEventListener","onCheckboxStateChanged","toggleSlotContentVisibility","inputElement","idOfInput","removeEventListener","visibleForValues","model","callback","columnHeaders","row","orderedByText","dateLocaleString","dateTime","currencyTotalAmountString","toggleDetails","getDynamicDetailsButtonText","detailsShowing","columnHeadersDetails","line","quantityInfo","currencyAmountString","slot","orderState","readyForPicking","readyForShipment","quantityInvoiced","inOrder","filterDebounced","filterItems","dateTimeISO","date","toLocaleDateString","orderedByFirstName","orderedByLastName","currencyHtmlSymbol","totalAmount","amount","showDetails","OrderStateToolTip","isCategorySearch","refInFor","baseSearchLinkWithoutPage","hasRelatedParts","hasReplacementParts","hasAlternativeParts","showRelatedParts","toggleRelatedParts","openRelatedParts","RelatedPartsAction","ReplacementPartsAction","PartSearchCardImage","relatedPartsComponents","injectRelatedPartsComponent","handleResize","deleteRelatedPartsComponent","elem","remove","$destroy","cards","partIdsWithRelationInRow","card","index","cardElement","nextElementSibling","getBoundingClientRect","top","parentNode","RelatedPartsComponentClass","relatedPartsInstance","insertBefore","nextSibling","PartSearchCard","PartSearchPagination","catalogueSearchPage","vinResult","entries","brandResult","modelGroupResult","modelResult","diagramResult","diagrams","projectName","partResult","basePartCatalogueDetailsLink","thumbnailImageUrl","partDetailsLink","associatedAssemblyPaths","assembly","partCatalogueAssemblyUrl","breadcrumb","lastFilter","partCatalogueEntryId","filterValue","join","thumbnailAssemblyId","CatalogueSearchCardImage","imgSrc","linkTo","page","CatalogueSearchPartCard","CatalogueSearchCard","CatalogueSearchAssemblyCard","moreInfoLink","CookieLaw","displayName","currentPage","content","itemListElements","itemListElement","markupData","service","origin","generateBreadcrumbMarkupData","stringifyBreadcrumbMarkupData","carTitle","randomParts","numberOfItems","partsOfCar","randomIndex","getRandomInt","partToAdd","min","max","random","PartListItem","searchBoxTitle","filteredParts","onSearchTextChanged","partsLength","showPartImages","linkToAdditionalParts","searchTermChangedDebounced","emitSearchTermChangedEvent","showCustomPartLength","customPartLength","allParts","filterParts","lowersearchTerm","SearchablePartsList","hasAdditionalParts","onSearchTermChanged","getSearchResultsShuffled","numberOfParts","newTerm","format","getUrlForPartSearchPage","previousAssemblyId","urlForPartCatalogueAssembly","nextAssemblyId","parentGroupId","urlForPartCatalogue","isDetailsLoading","itemDetail","positionInAssembly","activePosition","hotspotDetails","getHotspotKeyForItemDetail","drawingImagePath","onImageLoaded","onImageLoadedError","linkToItem","getDefaultQuantity","maxQuantityToOrder","hotspotId","representsHotspotIds","isAvailabilityLoading","PartCatalogueDetailsItemMeta","hasLoadedImage","catalogueImageHeight","catalogueImageHeightMonitor","itemDetails","pos","getItemsOfEntry","itemDetailsGrouped","detail","assemblyItemId","loadItemDetails","preSelectItem","$nextTick","monitorCatalogueImageHeight","disconnect","updateCatalogueImageHeight","transformDrawing","htmlObject","contentDocument","svg","querySelectorAll","cursor","opacity","substring","_","onHotspotClicked","MutationObserver","observe","attributes","childList","subtree","clientHeight","catalogueImage","detailItem","itemDetailsRef","representsHotspot","$scrollTo","container","isXlMedia","detailItemList","force","offset","preSelectedPartId","itemDetailToSelect","getDrawingUrl","height","PartCatalogueDetailsItem","LeftArrowIcon","RightArrowIcon","breadCrumb","currentId","pageBaseUrl","onPartCatalogueItemClicked","previousId","showDiagramPage","getThumbnailImageUrl","currentTree","assemblyUrl","diagram","assemblyThumbnailUrl","showNavigationBar","treeNode","currentBreadCrumb","initialBreadCrumb","partCatalougeBreadcrumbItems","parentTreeId","reverse","Breadcrumb","PartCatalogueTreeNodeType","Brand","getGroupThumbnailUrl","ModelGroup","Model","getProjectThumbnailUrl","Diagram","getAssemblyThumbnailInLowQualityUrl","groupId","every","node","PartCatalogueLandingPageBreadcrumb","currentCurrency","currentCode","changeToThisCurrencyUrl","selectionItems","mountIfDOMElementExists","createInstance","querySelector","breakpoints","xs","getComputedStyle","body","getPropertyValue","sm","md","lg","xl","Infinity","productionTip","template","Navigation","NavigationItem","ShoppingCartMenu","CurrencySelectBox","Slideshow","SlideshowItem","VinSearchResult","QuickSearchResult","PartTeaser","RelatedPartsContainer","PartDetailsActions","CountryStateSelect","DynamicVisibilityForValuesContainer","DynamicVisibilityContainer","ShoppingCartOverview","OrderList","CookieDisclaimer","CatalogueSearch","PartSearch","ShoppingCartUpload","GoogleMarkupData","RandomPartsList","AvailablePartsList","BrandPartsSearchBox","PartCatalogueAssembly","PartCatalogueLandingPage"],"mappings":"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BACVre,SACArG,WAAY,CACRslB,mBAAA,GACAC,oCAAA,SAKhB3B,GACI,0BACA,kBACI,IAAI,aAAI,CACJc,SAAU,kCACVre,SACArG,WAAY,CACRslB,mBAAA,GACAE,2BAAA,SAKhB5B,GACI,2BACA,kBACI,IAAI,aAAI,CACJc,SAAU,mCACVre,cAIZud,GACI,2BACA,kBACI,IAAI,aAAI,CACJvd,SACAqe,SAAU,mCACV1kB,WAAY,CACRylB,qBAAA,GACA/c,wBAAA,GACAC,6BAAA,SAKhBib,GACI,6BACA,kBACI,IAAI,aAAI,CACJvd,SACAqe,SAAU,qCACV1kB,WAAY,CACRulB,oCAAA,GACAC,2BAAA,GACAF,mBAAA,SAKhB1B,GACI,gBACA,kBACI,IAAI,aAAI,CACJvd,SACAqe,SAAU,wBACV1kB,WAAY,CACR0lB,UAAA,SAKhB9B,GACI,sBACA,kBACI,IAAI,aAAI,CACJc,SAAU,8BACV1kB,WAAY,CACR2lB,iBAAA,SAKhB/B,GACI,0BACA,kBACI,IAAI,aAAI,CACJc,SAAU,kCACVre,SACArG,WAAY,CACR4lB,gBAAA,SAKhBhC,GACI,gBACA,kBACI,IAAI,aAAI,CACJc,SAAU,wBACVre,SACArG,WAAY,CACR6lB,WAAA,SAKhBjC,GACI,6BACA,kBACI,IAAI,aAAI,CACJc,SAAU,qCACVre,SACArG,WAAY,CACR4O,YACAC,kBAKhB+U,GACI,yBACA,kBACI,IAAI,aAAI,CACJc,SAAU,iCACVre,SACArG,WAAY,CACR8lB,mBAAA,SAKhBlC,GACI,8BACA,kBACI,IAAI,aAAI,CACJc,SAAU,sCACVre,SACArG,WAAY,CACRC,uBAAA,SAKhB2jB,GACI,eACA,kBACI,IAAI,aAAI,CACJvd,SACAqe,SAAU,uBACV1kB,WAAY,CACR2iB,WAAA,SAKhBiB,GACI,kCACA,kBACI,IAAI,aAAI,CACJvd,SACAqe,SAAU,0CACV1kB,WAAY,CACR+lB,iBAAA,SAKhBnC,GACI,sBACA,kBACI,IAAI,aAAI,CACJc,SAAU,8BACVre,SACArG,WAAY,CACRgmB,gBAAA,SAKhBpC,GACI,yBACA,kBACI,IAAI,aAAI,CACJc,SAAU,iCACVre,SACArG,WAAY,CACRimB,mBAAA,SAKhBrC,GACI,2BACA,kBACI,IAAI,aAAI,CACJc,SAAU,mCACVre,SACArG,WAAY,CACRkmB,oBAAA,SAKhBtC,GACI,4BACA,kBACI,IAAI,aAAI,CACJc,SAAU,oCACVre,SACArG,WAAY,CACRmmB,sBAAA,SAKhBvC,GACI,gCACA,kBACI,IAAI,aAAI,CACJc,SAAU,wCACVre,SACArG,WAAY,CACRomB,yBAAA,SAKhB/f,GAAM9S,SAAS9E,GAAwB1V,QAAQqW","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BurgerMenu.vue?vue&type=style&index=0&lang=scss&\"","import Component from 'vue-class-component';\r\n// Register the router hooks with their names\r\nComponent.registerHooks([\r\n 'beforeRouteEnter',\r\n 'beforeRouteLeave',\r\n 'beforeRouteUpdate',\r\n]);\r\n//# sourceMappingURL=class-component-hooks.js.map","export enum LoadingState {\r\n Indeterminate = 'Indeterminate',\r\n Loading = 'Loading',\r\n Loaded = 'Loaded',\r\n Failed = 'Failed',\r\n}\r\n","export function isNullOrWhitespace(input?: string | null): boolean {\r\n return !input || !input.trim();\r\n}\r\n","import axios, { AxiosError } from 'axios';\r\n\r\nexport const apiClient = axios.create({\r\n withCredentials: true,\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n});\r\n\r\nexport function isAxiosError(error: any): error is AxiosError {\r\n return error.isAxiosError;\r\n}\r\n","import { PartSearchResultDetailsPage } from '@/entities/PartSearchResultDetailsPage';\r\nimport { ExactPartSearchResult } from '@/entities/ExactPartSearchResult';\r\nimport URI from 'urijs';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\nimport { apiClient } from './api-client';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport {QuickSearchResult} from '@/entities/quick-search/QuickSearchResult';\r\nimport { VinSearchResult } from '@/entities/vin-search/VinSearchResult';\r\n\r\n/**\r\n * Service to search for parts.\r\n */\r\nexport class PartSearchService {\r\n private get searchLink(): URI {\r\n return new URI('/api/search');\r\n }\r\n\r\n /**\r\n * Search for the given term.\r\n * @param searchTerm term that is searched for\r\n * @param brand an optional filter for a specific brand\r\n * @param category an optional filter for a specific category\r\n * @param pageNumber the page that should be fetched\r\n * @param numberOfResultsPerPage the number of results that should be fetched per page\r\n */\r\n public async getSearchResults(\r\n searchTerm: string,\r\n brand: string,\r\n category: string,\r\n pageNumber: number,\r\n numberOfResultsPerPage: number\r\n ): Promise {\r\n const searchParams = {\r\n searchTerm,\r\n brand: isNullOrWhitespace(brand) ? undefined : brand,\r\n category: isNullOrWhitespace(category) ? undefined : category,\r\n pageNumber: pageNumber < 1 ? 1 : pageNumber,\r\n numberOfResultsPerPage: numberOfResultsPerPage < 1 ? 12 : numberOfResultsPerPage,\r\n };\r\n\r\n const res = await apiClient.get(this.searchLink.addQuery(searchParams).toString());\r\n\r\n return res.data;\r\n }\r\n\r\n /**\r\n * Search for a small set of parts with the given search term.\r\n * @param searchTerm search term that should be used to find parts\r\n */\r\n public async getQuickSearchResults(searchTerm: string): Promise {\r\n const res = await apiClient.get(\r\n this.searchLink\r\n .segmentCoded('quick-search')\r\n .addQuery({\r\n searchTerm,\r\n numberOfResultsPerPage: 10,\r\n })\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n /**\r\n * Search for specific VIN.\r\n * @param searchTerm a specific VIN\r\n */\r\n public async getVinSearchResult(searchTerm: string): Promise {\r\n const res = await apiClient.get(\r\n this.searchLink\r\n .segmentCoded('vin-search')\r\n .addQuery({\r\n searchTerm,\r\n })\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n /**\r\n * Search for exact matches of the given part number.\r\n * @param partNumber is used for the search\r\n */\r\n public async searchPartsByPartNumber(partNumber: string): Promise {\r\n const res = await apiClient.get(\r\n this.searchLink\r\n .segmentCoded('exact')\r\n .segmentCoded(partNumber)\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n /**\r\n * Search for parts by given combinations of part numbers and brand.\r\n * @param partNumbers part numbers\r\n * @param brand brand code\r\n */\r\n public async searchByPartNumbersAndBrand(partNumbers: string[], brand: string): Promise {\r\n const res = await apiClient.post(this.searchLink.segmentCoded('part-number-brand').toString(), {\r\n partNumbers,\r\n brand,\r\n });\r\n\r\n return res.data;\r\n }\r\n\r\n /**\r\n * Search for parts and get a shuffled list of parts\r\n * @param searchTerm term that is searched for\r\n * @param brand an optional filter for a specific brand\r\n * @param category an optional filter for a specific category\r\n * @param numberOfResults the number of results that should be fetched per page\r\n */\r\n public async getSearchResultsShuffled(\r\n searchTerm: string,\r\n brand: string,\r\n category: string,\r\n numberOfResults: number\r\n ): Promise {\r\n const searchParams = {\r\n searchTerm,\r\n brand: isNullOrWhitespace(brand) ? undefined : brand,\r\n category: isNullOrWhitespace(category) ? undefined : category,\r\n numberOfResults: numberOfResults < 1 ? 0 : numberOfResults,\r\n };\r\n\r\n const res = await apiClient.get(\r\n this.searchLink\r\n .segment('parts-shuffled')\r\n .addQuery(searchParams)\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n public getUrlForPartSearchPage(searchTerm: string, brand: string, pageNumber: number, category: string): string {\r\n return `/PartSearch?searchTerm=${searchTerm}&brand=${brand}&pageNumber=${pageNumber}&category=${category}`;\r\n }\r\n}\r\n","import { ModuleTypeConstants } from '../types/ModuleTypeConstants';\r\nimport Dictionary from '@/types/Dictionary';\r\n\r\n/**\r\n * Removes the namespace from the getters, mutations, and actions of a module type constants object.\r\n * @param namespace namespace that should be removed\r\n * @param type the type that should be transformed\r\n */\r\nexport default function removeNamespace(namespace: string, type: T): T {\r\n return {\r\n ...type,\r\n getters: removeNamespaceFromSub(namespace, type.getters),\r\n mutations: removeNamespaceFromSub(namespace, type.mutations),\r\n actions: removeNamespaceFromSub(namespace, type.actions),\r\n };\r\n}\r\n\r\nfunction removeNamespaceFromSub(namespace: string, sub: Dictionary): Dictionary {\r\n const namespacePrefix = `${namespace}/`;\r\n const withoutNamespace: Dictionary = {};\r\n Object.keys(sub).forEach((key) => {\r\n withoutNamespace[key] = sub[key].replace(namespacePrefix, '');\r\n });\r\n return withoutNamespace;\r\n}\r\n","import { PartAvailability } from '@/entities/PartAvailability';\r\nimport URI from 'urijs';\r\nimport { apiClient, isAxiosError } from './api-client';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\n\r\n/**\r\n * Service to retrieve parts.\r\n */\r\nexport class PartService {\r\n private get baseUrl(): URI {\r\n return new URI('/api/parts');\r\n }\r\n\r\n public async getAvailabilityOfPart(\r\n id: string,\r\n quantity: number,\r\n orderMethod?: string,\r\n respectPartReplacements?: boolean\r\n ): Promise {\r\n try {\r\n const res = await apiClient.get(\r\n this.baseUrl\r\n .segmentCoded('availability')\r\n .addQuery('partId', id)\r\n .addQuery('quantity', quantity.toString(10))\r\n .addQuery('orderMethod', orderMethod)\r\n .addQuery('respectPartReplacements', respectPartReplacements)\r\n .toString()\r\n );\r\n return res.data;\r\n } catch (error) {\r\n if (\r\n isAxiosError(error) &&\r\n error.response &&\r\n error.response.status === 404\r\n ) {\r\n return null;\r\n }\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { PartSearchService } from '@/services/part-search-service';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { PartService } from '@/services/part-service';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\nimport { QuickSearchResult } from '@/entities/quick-search/QuickSearchResult';\r\nimport { VinSearchResult } from '@/entities/vin-search/VinSearchResult';\r\n\r\nconst quickSearchService = new PartSearchService();\r\nconst partService = new PartService();\r\n\r\nconst namespace = 'quickSearch';\r\n\r\nexport const QuickSearchModuleTypes = {\r\n getters: {\r\n searchTerm: `${namespace}/searchTerm`,\r\n partSearchResults: `${namespace}/partSearchResults`,\r\n totalNumberOfParts: `${namespace}/totalNumberOfParts`,\r\n searchResultsLoadingState: `${namespace}/searchResultsLoadingState`,\r\n isVinSearchResult: `${namespace}/isVinSearchResult`,\r\n vinSearchResult: `${namespace}/vinSearchResult`,\r\n },\r\n mutations: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n loadSearchResultsSuccess: `${namespace}/loadSearchResultsSuccess`,\r\n loadSearchResultsFail: `${namespace}/loadSearchResultsFail`,\r\n closeQuickSearchResults: `${namespace}/closeQuickSearchResults`,\r\n updatePartAvailability: `${namespace}/updatePartAvailability`,\r\n updatePartAvailabilityLoadingState: `${namespace}/updatePartAvailabilityLoadingState`,\r\n },\r\n actions: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n closeQuickSearchResults: `${namespace}/closeQuickSearchResults`,\r\n reloadPartAvailabilityForPart: `${namespace}/reloadPartAvailabilityForPart`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, QuickSearchModuleTypes);\r\n\r\nexport interface QuickSearchState {\r\n searchTerm: string | null;\r\n searchResults: PartSearchResultDetails[];\r\n totalNumberOfResults: number | null;\r\n searchResultLoadingState: LoadingState;\r\n isVinSearchResult: boolean;\r\n vinSearchResult: VinSearchResult | null;\r\n}\r\n\r\nconst state: QuickSearchState = {\r\n searchTerm: null,\r\n searchResults: [],\r\n totalNumberOfResults: null,\r\n searchResultLoadingState: LoadingState.Indeterminate,\r\n isVinSearchResult: false,\r\n vinSearchResult: null,\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadSearchResults](currentState: QuickSearchState, payload: string): void {\r\n currentState.searchResultLoadingState = LoadingState.Loading;\r\n currentState.searchTerm = payload;\r\n },\r\n [types.mutations.loadSearchResultsSuccess](currentState: QuickSearchState, payload: QuickSearchResult): void {\r\n currentState.isVinSearchResult = false;\r\n const results = payload.partSearchResultPage!.partSearchResultDetails.filter((result) => result != null);\r\n results.forEach((result) => (result.isPartAvailabilityLoading = false));\r\n currentState.searchResults = results;\r\n currentState.vinSearchResult = null;\r\n currentState.totalNumberOfResults = payload.partSearchResultPage!.totalNumberOfResults;\r\n\r\n currentState.searchResultLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadSearchResultsFail](currentState: QuickSearchState): void {\r\n currentState.totalNumberOfResults = null;\r\n currentState.searchTerm = null;\r\n currentState.searchResults = [];\r\n currentState.vinSearchResult = null;\r\n currentState.searchResultLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.closeQuickSearchResults](currentState: QuickSearchState): void {\r\n currentState.searchTerm = null;\r\n currentState.totalNumberOfResults = null;\r\n currentState.searchResults = [];\r\n currentState.vinSearchResult = null;\r\n currentState.searchResultLoadingState = LoadingState.Indeterminate;\r\n },\r\n [types.mutations.updatePartAvailability](\r\n currentState: QuickSearchState,\r\n payload: { partId: string; partAvailability: PartAvailability }\r\n ): void {\r\n const foundPart = currentState.searchResults.find((result) => result.searchResult.id === payload.partId);\r\n if (foundPart) {\r\n foundPart.partAvailability = payload.partAvailability;\r\n }\r\n },\r\n [types.mutations.updatePartAvailabilityLoadingState](\r\n currentState: QuickSearchState,\r\n payload: { partId: string; isLoading: boolean }\r\n ): void {\r\n const foundPart = currentState.searchResults.find((result) => result.searchResult.id === payload.partId);\r\n if (foundPart) {\r\n foundPart.isPartAvailabilityLoading = payload.isLoading;\r\n }\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n [types.actions.loadSearchResults](\r\n context: ActionContext,\r\n payload: { searchTerm: string }\r\n ): void {\r\n context.commit(types.mutations.loadSearchResults, payload.searchTerm);\r\n quickSearchService\r\n .getQuickSearchResults(payload.searchTerm)\r\n .then((response) => {\r\n context.commit(types.mutations.loadSearchResultsSuccess, response);\r\n })\r\n .catch((e) => {\r\n context.commit(types.mutations.loadSearchResultsFail);\r\n });\r\n },\r\n [types.actions.closeQuickSearchResults](context: ActionContext): void {\r\n context.commit(types.mutations.closeQuickSearchResults);\r\n },\r\n async [types.actions.reloadPartAvailabilityForPart](\r\n context: ActionContext,\r\n payload: { partId: string; quantity: number }\r\n ): Promise {\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, { partId: payload.partId, isLoading: true });\r\n const partAvailability = await partService.getAvailabilityOfPart(payload.partId, payload.quantity);\r\n if (partAvailability) {\r\n context.commit(types.mutations.updatePartAvailability, {\r\n partId: payload.partId,\r\n partAvailability,\r\n });\r\n }\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, {\r\n partId: payload.partId,\r\n isLoading: false,\r\n });\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.searchTerm]: (currentState) => {\r\n return currentState.searchTerm;\r\n },\r\n [types.getters.partSearchResults]: (currentState) => {\r\n return currentState.searchResults;\r\n },\r\n [types.getters.totalNumberOfParts]: (currentState) => {\r\n return currentState.totalNumberOfResults;\r\n },\r\n [types.getters.searchResultsLoadingState]: (currentState) => {\r\n return currentState.searchResultLoadingState;\r\n },\r\n [types.getters.isVinSearchResult]: (currentState) => {\r\n return currentState.isVinSearchResult;\r\n },\r\n [types.getters.vinSearchResult]: (currentState) => {\r\n return currentState.vinSearchResult;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { PartSearchService } from '@/services/part-search-service';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { VinSearchResult } from '@/entities/vin-search/VinSearchResult';\r\n\r\nconst partSearchService = new PartSearchService();\r\n\r\nconst namespace = 'vinSearch';\r\n\r\nexport const VinSearchModuleTypes = {\r\n getters: {\r\n searchTerm: `${namespace}/searchTerm`,\r\n searchResultsLoadingState: `${namespace}/searchResultsLoadingState`,\r\n vinSearchResult: `${namespace}/vinSearchResult`,\r\n },\r\n mutations: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n loadSearchResultsSuccess: `${namespace}/loadSearchResultsSuccess`,\r\n loadSearchResultsFail: `${namespace}/loadSearchResultsFail`,\r\n closeVinSearchResults: `${namespace}/closeVinSearchResults`,\r\n },\r\n actions: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n closeVinSearchResults: `${namespace}/closeVinSearchResults`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, VinSearchModuleTypes);\r\n\r\nexport interface VinSearchState {\r\n searchTerm: string | null;\r\n searchResultLoadingState: LoadingState;\r\n vinSearchResult: VinSearchResult | null;\r\n}\r\n\r\nconst state: VinSearchState = {\r\n searchTerm: null,\r\n searchResultLoadingState: LoadingState.Indeterminate,\r\n vinSearchResult: null,\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadSearchResults](currentState: VinSearchState, payload: string): void {\r\n currentState.searchResultLoadingState = LoadingState.Loading;\r\n currentState.searchTerm = payload;\r\n },\r\n [types.mutations.loadSearchResultsSuccess](currentState: VinSearchState, payload: VinSearchResult): void {\r\n currentState.vinSearchResult = payload;\r\n currentState.searchResultLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadSearchResultsFail](currentState: VinSearchState): void {\r\n currentState.searchTerm = null;\r\n currentState.vinSearchResult = null;\r\n currentState.searchResultLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.closeVinSearchResults](currentState: VinSearchState): void {\r\n currentState.searchTerm = null;\r\n currentState.vinSearchResult = null;\r\n currentState.searchResultLoadingState = LoadingState.Indeterminate;\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n [types.actions.loadSearchResults](\r\n context: ActionContext,\r\n payload: { searchTerm: string }\r\n ): void {\r\n context.commit(types.mutations.loadSearchResults, payload.searchTerm);\r\n partSearchService\r\n .getVinSearchResult(payload.searchTerm)\r\n .then((response) => {\r\n context.commit(types.mutations.loadSearchResultsSuccess, response);\r\n })\r\n .catch((e) => {\r\n context.commit(types.mutations.loadSearchResultsFail);\r\n });\r\n },\r\n [types.actions.closeVinSearchResults](context: ActionContext): void {\r\n context.commit(types.mutations.closeVinSearchResults);\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.searchTerm]: (currentState) => {\r\n return currentState.searchTerm;\r\n },\r\n [types.getters.searchResultsLoadingState]: (currentState) => {\r\n return currentState.searchResultLoadingState;\r\n },\r\n [types.getters.vinSearchResult]: (currentState) => {\r\n return currentState.vinSearchResult;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","export function calculateNumberOfPages(totalNumberOfResults: number, numberOfResultsPerPage: number): number {\r\n // tslint:disable-next-line: no-bitwise\r\n return ((totalNumberOfResults + numberOfResultsPerPage - 1) / numberOfResultsPerPage) | 0;\r\n}\r\n","import { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { PartSearchResultDetailsPage } from '@/entities/PartSearchResultDetailsPage';\r\nimport { PartSearchService } from '@/services/part-search-service';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { calculateNumberOfPages } from '@/helper/calculateNumberOfPages';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\nimport { PartService } from '@/services/part-service';\r\n\r\nconst partSearchService = new PartSearchService();\r\nconst partService = new PartService();\r\nconst numberOfResultsPerPageForSearch = 12;\r\nconst numberOfResultsPerPageForCategory = 500;\r\n\r\nconst namespace = 'partSearch';\r\n\r\nexport const PartSearchModuleTypes = {\r\n getters: {\r\n searchTerm: `${namespace}/searchTerm`,\r\n partSearchResults: `${namespace}/partSearchResults`,\r\n totalNumberOfParts: `${namespace}/totalNumberOfParts`,\r\n numberOfPages: `${namespace}/numberOfPages`,\r\n searchResultsLoadingState: `${namespace}/searchResultsLoadingState`,\r\n numberOfResultsPerPageForSearch: `${namespace}/numberOfResultsPerPageForSearch`,\r\n },\r\n mutations: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n loadSearchResultsSuccess: `${namespace}/loadSearchResultsSuccess`,\r\n loadSearchResultsFail: `${namespace}/loadSearchResultsFail`,\r\n updatePartAvailability: `${namespace}/updatePartAvailability`,\r\n updatePartAvailabilityLoadingState: `${namespace}/updatePartAvailabilityLoadingState`,\r\n },\r\n actions: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n reloadPartAvailabilityForPart: `${namespace}/reloadPartAvailabilityForPart`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, PartSearchModuleTypes);\r\n\r\nexport interface PartSearchState {\r\n searchTerm: string | null;\r\n searchResults: PartSearchResultDetails[];\r\n totalNumberOfResults: number | null;\r\n numberOfPages: number | null;\r\n searchResultLoadingState: LoadingState;\r\n numberOfResultsPerPageForSearch: number;\r\n}\r\n\r\nconst state: PartSearchState = {\r\n searchTerm: null,\r\n searchResults: [],\r\n totalNumberOfResults: null,\r\n numberOfPages: null,\r\n searchResultLoadingState: LoadingState.Indeterminate,\r\n numberOfResultsPerPageForSearch,\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadSearchResults](currentState: PartSearchState, payload: string): void {\r\n currentState.searchResultLoadingState = LoadingState.Loading;\r\n currentState.searchTerm = payload;\r\n },\r\n [types.mutations.loadSearchResultsSuccess](\r\n currentState: PartSearchState,\r\n payload: {\r\n result: PartSearchResultDetailsPage;\r\n numberOfResultsPerPage: number;\r\n }\r\n ): void {\r\n const results = payload.result.partSearchResultDetails.filter((result) => result != null);\r\n results.forEach((result) => (result.isPartAvailabilityLoading = false));\r\n currentState.searchResults = results;\r\n currentState.totalNumberOfResults = payload.result.totalNumberOfResults;\r\n currentState.numberOfPages = calculateNumberOfPages(\r\n payload.result.totalNumberOfResults,\r\n payload.numberOfResultsPerPage\r\n );\r\n currentState.searchResultLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadSearchResultsFail](currentState: PartSearchState): void {\r\n currentState.totalNumberOfResults = null;\r\n currentState.numberOfPages = null;\r\n currentState.searchTerm = null;\r\n currentState.searchResults = [];\r\n currentState.searchResultLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updatePartAvailability](\r\n currentState: PartSearchState,\r\n payload: { partId: string; partAvailability: PartAvailability }\r\n ): void {\r\n const foundPart = currentState.searchResults.find((result) => result.searchResult.id === payload.partId);\r\n if (foundPart) {\r\n foundPart.partAvailability = payload.partAvailability;\r\n }\r\n },\r\n [types.mutations.updatePartAvailabilityLoadingState](\r\n currentState: PartSearchState,\r\n payload: { partId: string; isLoading: boolean }\r\n ): void {\r\n const foundPart = currentState.searchResults.find((result) => result.searchResult.id === payload.partId);\r\n if (foundPart) {\r\n foundPart.isPartAvailabilityLoading = payload.isLoading;\r\n }\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n async [types.actions.loadSearchResults](\r\n context: ActionContext,\r\n payload: { searchTerm: string; brand: string; category: string; pageNumber: number }\r\n ): Promise {\r\n context.commit(types.mutations.loadSearchResults, payload.searchTerm);\r\n try {\r\n const result = await partSearchService.getSearchResults(\r\n payload.searchTerm,\r\n payload.brand,\r\n payload.category,\r\n payload.pageNumber,\r\n numberOfResultsPerPageForSearch\r\n );\r\n context.commit(types.mutations.loadSearchResultsSuccess, {\r\n result,\r\n numberOfResultsPerPage: numberOfResultsPerPageForSearch,\r\n });\r\n } catch (e) {\r\n context.commit(types.mutations.loadSearchResultsFail);\r\n }\r\n },\r\n async [types.actions.reloadPartAvailabilityForPart](\r\n context: ActionContext,\r\n payload: { partId: string; quantity: number }\r\n ): Promise {\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, { partId: payload.partId, isLoading: true });\r\n const partAvailability = await partService.getAvailabilityOfPart(payload.partId, payload.quantity);\r\n if (partAvailability) {\r\n context.commit(types.mutations.updatePartAvailability, {\r\n partId: payload.partId,\r\n partAvailability,\r\n });\r\n }\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, {\r\n partId: payload.partId,\r\n isLoading: false,\r\n });\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.searchTerm]: (currentState) => {\r\n return currentState.searchTerm;\r\n },\r\n [types.getters.partSearchResults]: (currentState) => {\r\n return currentState.searchResults;\r\n },\r\n [types.getters.totalNumberOfParts]: (currentState) => {\r\n return currentState.totalNumberOfResults;\r\n },\r\n [types.getters.numberOfPages]: (currentState) => {\r\n return currentState.numberOfPages;\r\n },\r\n [types.getters.searchResultsLoadingState]: (currentState) => {\r\n return currentState.searchResultLoadingState;\r\n },\r\n [types.getters.numberOfResultsPerPageForSearch]: (currentState) => {\r\n return currentState.numberOfResultsPerPageForSearch;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import URI from 'urijs';\r\nimport { PartCatalogueFilterColumn } from '@/entities/part-catalogue/PartCatalogueFilterColumn';\r\nimport { PartCatalogueEntry } from '@/entities/part-catalogue/PartCatalogueEntry';\r\nimport { PartCatalogueAssemblyItemDetail } from '@/entities/part-catalogue/PartCatalogueAssemblyItemDetail';\r\nimport { apiClient } from './api-client';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\nimport { PartCatalogueSearchPage } from '@/entities/part-catalogue/PartCatalogueSearchPage';\r\nimport { PartCatalogueTree } from '@/entities/part-catalogue/PartCatalogueTree';\r\n\r\n/**\r\n * Service to retrieve part catalogue data.\r\n */\r\nexport class PartCatalogueService {\r\n private get baseUri(): URI {\r\n return new URI('/api/part-catalogue');\r\n }\r\n\r\n public async getEntry(entryId: number): Promise {\r\n const entryUri = this.baseUri.segmentCoded('entries').segmentCoded(entryId.toString());\r\n\r\n const res = await apiClient.get(entryUri.toString());\r\n\r\n return res.data;\r\n }\r\n\r\n public async getItemsOfEntry(assemblyId: string): Promise {\r\n const entryUri = this.baseUri.segmentCoded('details').addQuery('id', assemblyId);\r\n\r\n const res = await apiClient.get(entryUri.toString(), {\r\n method: 'GET',\r\n });\r\n\r\n return res.data;\r\n }\r\n\r\n public async getFilters(selectedFilterId: number | null): Promise {\r\n let selectFilterUri = this.baseUri.segmentCoded('filters').segmentCoded('select');\r\n\r\n if (selectedFilterId != null) {\r\n selectFilterUri = selectFilterUri.segmentCoded(selectedFilterId.toString());\r\n }\r\n\r\n const res = await apiClient.get(selectFilterUri.toString());\r\n\r\n return res.data;\r\n }\r\n\r\n /**\r\n * Search for the given term.\r\n * @param searchTerm term that is searched for\r\n * @param brand an optional filter for a specific brand\r\n * @param pageNumber the page that should be fetched\r\n * @param numberOfResultsPerPage the number of results that should be fetched per page\r\n */\r\n public async getSearchResults(\r\n searchTerm: string,\r\n brand: string,\r\n pageNumber: number,\r\n numberOfResultsPerPage: number\r\n ): Promise {\r\n const searchParams = {\r\n searchTerm,\r\n brand: isNullOrWhitespace(brand) ? undefined : brand,\r\n pageNumber: pageNumber < 1 ? 1 : pageNumber,\r\n numberOfResultsPerPage: numberOfResultsPerPage < 1 ? 12 : numberOfResultsPerPage,\r\n };\r\n\r\n const res = await apiClient.get(\r\n this.baseUri\r\n .segmentCoded('search')\r\n .addQuery(searchParams)\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n public getDrawingUrl(id: string): string {\r\n return this.baseUri\r\n .segment('getDrawing')\r\n .addQuery('id', id)\r\n .toString();\r\n }\r\n\r\n public getGroupThumbnailUrl(id: string): string {\r\n return this.baseUri\r\n .segment('getThumbnail')\r\n .segment('group')\r\n .addQuery('id', id)\r\n .toString();\r\n }\r\n\r\n public getProjectThumbnailUrl(id: string): string {\r\n return this.baseUri\r\n .segment('getThumbnail')\r\n .segment('project')\r\n .addQuery('id', id)\r\n .toString();\r\n }\r\n\r\n public getAssemblyThumbnailInLowQualityUrl(id: string): string {\r\n return this.baseUri\r\n .segment('getThumbnail')\r\n .segment('assembly')\r\n .segment('lq')\r\n .addQuery('id', id)\r\n .toString();\r\n }\r\n\r\n public getTreeNodeById(tree: PartCatalogueTree, id: string): PartCatalogueTree | null {\r\n if (tree.treeId === id) {\r\n return tree;\r\n }\r\n\r\n for (const child of tree.children) {\r\n const t = this.getTreeNodeById(child, id);\r\n if (t) {\r\n return t;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { PartCatalogueSearchPage } from '@/entities/part-catalogue/PartCatalogueSearchPage';\r\nimport { PartCatalogueService } from '@/services/part-catalogue-service';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { calculateNumberOfPages } from '@/helper/calculateNumberOfPages';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\nimport { PartService } from '@/services/part-service';\r\n\r\nconst partCatalogueService = new PartCatalogueService();\r\nconst partService = new PartService();\r\nconst numberOfResultsPerPageForSearch = 12;\r\n\r\nconst namespace = 'partCatalogueSearch';\r\n\r\nexport const PartCatalogueSearchModuleTypes = {\r\n getters: {\r\n searchTerm: `${namespace}/searchTerm`,\r\n partCatalogueSearchResults: `${namespace}/partCatalogueSearchResults`,\r\n totalNumberOfParts: `${namespace}/totalNumberOfParts`,\r\n numberOfPages: `${namespace}/numberOfPages`,\r\n searchResultsLoadingState: `${namespace}/searchResultsLoadingState`,\r\n },\r\n mutations: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n loadSearchResultsSuccess: `${namespace}/loadSearchResultsSuccess`,\r\n loadSearchResultsFail: `${namespace}/loadSearchResultsFail`,\r\n updatePartAvailability: `${namespace}/updatePartAvailability`,\r\n updatePartAvailabilityLoadingState: `${namespace}/updatePartAvailabilityLoadingState`,\r\n },\r\n actions: {\r\n loadSearchResults: `${namespace}/loadSearchResults`,\r\n reloadPartAvailabilityForPart: `${namespace}/reloadPartAvailabilityForPart`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, PartCatalogueSearchModuleTypes);\r\n\r\nexport interface PartCatalogueSearchState {\r\n searchTerm: string | null;\r\n searchResult: PartCatalogueSearchPage | null;\r\n totalNumberOfResults: number | null;\r\n numberOfPages: number | null;\r\n searchResultLoadingState: LoadingState;\r\n}\r\n\r\nconst state: PartCatalogueSearchState = {\r\n searchTerm: null,\r\n searchResult: null,\r\n totalNumberOfResults: null,\r\n numberOfPages: null,\r\n searchResultLoadingState: LoadingState.Indeterminate,\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadSearchResults](currentState: PartCatalogueSearchState, payload: string): void {\r\n currentState.searchResultLoadingState = LoadingState.Loading;\r\n currentState.searchTerm = payload;\r\n },\r\n [types.mutations.loadSearchResultsSuccess](\r\n currentState: PartCatalogueSearchState,\r\n payload: {\r\n result: PartCatalogueSearchPage;\r\n numberOfResultsPerPage: number;\r\n }\r\n ): void {\r\n currentState.searchResult = payload.result;\r\n currentState.totalNumberOfResults = payload.result.totalNumberOfResults;\r\n currentState.numberOfPages = calculateNumberOfPages(\r\n payload.result.totalNumberOfResults,\r\n payload.numberOfResultsPerPage\r\n );\r\n currentState.searchResultLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadSearchResultsFail](currentState: PartCatalogueSearchState): void {\r\n currentState.totalNumberOfResults = null;\r\n currentState.numberOfPages = null;\r\n currentState.searchTerm = null;\r\n currentState.searchResult = null;\r\n currentState.searchResultLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updatePartAvailability](\r\n currentState: PartCatalogueSearchState,\r\n payload: { partId: string; partAvailability: PartAvailability }\r\n ): void {\r\n if (currentState.searchResult) {\r\n const foundPart = currentState.searchResult.partCatalogueParts.find(\r\n (result) => result.searchResultPartDetails.id === payload.partId\r\n );\r\n if (foundPart) {\r\n foundPart.partAvailability = payload.partAvailability;\r\n }\r\n }\r\n },\r\n [types.mutations.updatePartAvailabilityLoadingState](\r\n currentState: PartCatalogueSearchState,\r\n payload: { partId: string; isLoading: boolean }\r\n ): void {\r\n if (currentState.searchResult) {\r\n const foundPart = currentState.searchResult.partCatalogueParts.find(\r\n (result) => result.searchResultPartDetails.id === payload.partId\r\n );\r\n if (foundPart) {\r\n foundPart.isPartAvailabilityLoading = payload.isLoading;\r\n }\r\n }\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n async [types.actions.loadSearchResults](\r\n context: ActionContext,\r\n payload: { searchTerm: string; brand: string; pageNumber: number }\r\n ): Promise {\r\n context.commit(types.mutations.loadSearchResults, payload.searchTerm);\r\n try {\r\n const result = await partCatalogueService.getSearchResults(\r\n payload.searchTerm,\r\n payload.brand,\r\n payload.pageNumber,\r\n numberOfResultsPerPageForSearch\r\n );\r\n context.commit(types.mutations.loadSearchResultsSuccess, {\r\n result,\r\n numberOfResultsPerPage: numberOfResultsPerPageForSearch,\r\n });\r\n } catch (e) {\r\n context.commit(types.mutations.loadSearchResultsFail);\r\n }\r\n },\r\n async [types.actions.reloadPartAvailabilityForPart](\r\n context: ActionContext,\r\n payload: { partId: string; quantity: number }\r\n ): Promise {\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, { partId: payload.partId, isLoading: true });\r\n const partAvailability = await partService.getAvailabilityOfPart(payload.partId, payload.quantity);\r\n if (partAvailability) {\r\n context.commit(types.mutations.updatePartAvailability, {\r\n partId: payload.partId,\r\n partAvailability,\r\n });\r\n }\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, {\r\n partId: payload.partId,\r\n isLoading: false,\r\n });\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.searchTerm]: (currentState) => {\r\n return currentState.searchTerm;\r\n },\r\n [types.getters.partCatalogueSearchResults]: (currentState) => {\r\n return currentState.searchResult;\r\n },\r\n [types.getters.totalNumberOfParts]: (currentState) => {\r\n return currentState.totalNumberOfResults;\r\n },\r\n [types.getters.numberOfPages]: (currentState) => {\r\n return currentState.numberOfPages;\r\n },\r\n [types.getters.searchResultsLoadingState]: (currentState) => {\r\n return currentState.searchResultLoadingState;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import { Country } from '@/entities/Country';\r\nimport { State } from '@/entities/State';\r\nimport { apiClient } from './api-client';\r\nimport URI from 'urijs';\r\n\r\n/**\r\n * Service to retrieve countries and their states.\r\n */\r\nexport class CountryService {\r\n private get baseUrl(): URI {\r\n return new URI('/api/countries');\r\n }\r\n\r\n public async getAllCountries(): Promise {\r\n const res = await apiClient.get(this.baseUrl.toString());\r\n return res.data;\r\n }\r\n\r\n public async getStatesOfCountry(countryId: number): Promise {\r\n const res = await apiClient.get(\r\n this.baseUrl\r\n .segmentCoded(countryId.toString(10))\r\n .segmentCoded('states')\r\n .toString()\r\n );\r\n return res.data;\r\n }\r\n}\r\n","import { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { RootState } from '../rootState';\r\nimport { CountryService } from '@/services/country-service';\r\nimport { Country } from '@/entities/Country';\r\nimport { State } from '@/entities/State';\r\nimport removeNamespace from '../removeNamespace';\r\n\r\nconst countryService = new CountryService();\r\n\r\nconst namespace = 'countryStateSelect';\r\n\r\nexport const CountryStateSelectModuleTypes = {\r\n getters: {\r\n countries: `${namespace}/countries`,\r\n countriesLoadingState: `${namespace}/countriesLoadingState`,\r\n selectedCountry: `${namespace}/selectedCountry`,\r\n statesOfSelectedCountry: `${namespace}/statesOfSelectedCountry`,\r\n statesLoadingState: `${namespace}/statesLoadingState`,\r\n selectedState: `${namespace}/selectedState`,\r\n },\r\n mutations: {\r\n registerSelect: `${namespace}/registerSelect`,\r\n loadCountries: `${namespace}/loadCountries`,\r\n loadCountriesSuccess: `${namespace}/loadCountriesSuccess`,\r\n loadCountriesFail: `${namespace}/loadCountriesFail`,\r\n selectCountry: `${namespace}/selectCountry`,\r\n selectCountryById: `${namespace}/selectCountryById`,\r\n loadStatesForSelectedCountry: `${namespace}/loadStatesForSelectedCountry`,\r\n loadStatesForSelectedCountrySuccess: `${namespace}/loadStatesForSelectedCountrySuccess`,\r\n loadStatesForSelectedCountryFail: `${namespace}/loadStatesForSelectedCountryFail`,\r\n selectState: `${namespace}/selectState`,\r\n selectStateById: `${namespace}/selectStateById`,\r\n },\r\n actions: {\r\n registerSelect: `${namespace}/registerSelect`,\r\n selectCountry: `${namespace}/selectCountry`,\r\n selectCountryAndStateById: `${namespace}/selectCountryAndStateById`,\r\n selectState: `${namespace}/selectState`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, CountryStateSelectModuleTypes);\r\n\r\nexport interface CountryStateSelectState {\r\n selectedCountry: Country | null;\r\n selectedState: State | null;\r\n statesOfSelectedCountry: State[];\r\n statesLoadingState: LoadingState;\r\n}\r\n\r\nexport interface CountryStates {\r\n countries: Country[];\r\n countriesLoadingState: LoadingState;\r\n countryStateSelectStates: { [key: string]: CountryStateSelectState };\r\n}\r\n\r\nconst state: CountryStates = {\r\n countries: [],\r\n countriesLoadingState: LoadingState.Indeterminate,\r\n countryStateSelectStates: {},\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.registerSelect](currentState: CountryStates, id: string): void {\r\n if (currentState.countryStateSelectStates[id] == null) {\r\n currentState.countryStateSelectStates[id] = {\r\n selectedCountry: null,\r\n selectedState: null,\r\n statesOfSelectedCountry: [],\r\n statesLoadingState: LoadingState.Indeterminate,\r\n };\r\n }\r\n },\r\n [types.mutations.loadCountries](currentState: CountryStates): void {\r\n currentState.countriesLoadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.loadCountriesSuccess](currentState: CountryStates, payload: Country[]): void {\r\n currentState.countries = payload;\r\n currentState.countriesLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadCountriesFail](currentState: CountryStates): void {\r\n currentState.countries = [];\r\n currentState.countriesLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.selectCountry](currentState: CountryStates, payload: { id: string, country: Country }): void {\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n if (countryStateSelectState) {\r\n countryStateSelectState.selectedCountry = payload.country;\r\n // State has to be reset if a new country is selected\r\n countryStateSelectState.selectedState = null;\r\n // copy array and replace country-state-select-state on given id, otherwise changes are not recognized\r\n currentState.countryStateSelectStates = {\r\n ...currentState.countryStateSelectStates,\r\n [payload.id]: countryStateSelectState,\r\n };\r\n }\r\n },\r\n [types.mutations.selectCountryById](currentState: CountryStates, payload: { id: string, countryId: number }): void {\r\n const foundCountry = currentState.countries.find((country) => country.id === payload.countryId) || null;\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n if (foundCountry && countryStateSelectState) {\r\n countryStateSelectState.selectedCountry = foundCountry;\r\n // State has to be reset if a new country is selected\r\n countryStateSelectState.selectedState = null;\r\n // copy array and replace country-state-select-state on given id, otherwise changes are not recognized\r\n currentState.countryStateSelectStates = {\r\n ...currentState.countryStateSelectStates,\r\n [payload.id]: countryStateSelectState,\r\n };\r\n }\r\n },\r\n [types.mutations.loadStatesForSelectedCountry](currentState: CountryStates, payload: { id: string }): void {\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n if (countryStateSelectState) {\r\n countryStateSelectState.statesLoadingState = LoadingState.Loading;\r\n }\r\n },\r\n [types.mutations.loadStatesForSelectedCountrySuccess](currentState: CountryStates, payload: { id: string, states: State[] }): void {\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n if (countryStateSelectState) {\r\n countryStateSelectState.statesOfSelectedCountry = payload.states;\r\n countryStateSelectState.statesLoadingState = LoadingState.Loaded;\r\n }\r\n },\r\n [types.mutations.loadStatesForSelectedCountryFail](currentState: CountryStates, payload: { id: string }): void {\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n if (countryStateSelectState) {\r\n countryStateSelectState.statesOfSelectedCountry = [];\r\n countryStateSelectState.statesLoadingState = LoadingState.Failed;\r\n }\r\n },\r\n [types.mutations.selectState](currentState: CountryStates, payload: { id: string, state: State }): void {\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n if (countryStateSelectState) {\r\n countryStateSelectState.selectedState = payload.state;\r\n // copy array and replace country-state-select-state on given id, otherwise changes are not recognized\r\n currentState.countryStateSelectStates = {\r\n ...currentState.countryStateSelectStates,\r\n [payload.id]: countryStateSelectState,\r\n };\r\n }\r\n },\r\n [types.mutations.selectStateById](currentState: CountryStates, payload: { id: string, stateId: number }): void {\r\n const countryStateSelectState = currentState.countryStateSelectStates[payload.id];\r\n const foundState = countryStateSelectState.statesOfSelectedCountry.find((stateOfCountry) => stateOfCountry.id === payload.stateId);\r\n if (foundState && countryStateSelectState) {\r\n countryStateSelectState.selectedState = foundState;\r\n // copy array and replace country-state-select-state on given id, otherwise changes are not recognized\r\n currentState.countryStateSelectStates = {\r\n ...currentState.countryStateSelectStates,\r\n [payload.id]: countryStateSelectState,\r\n };\r\n }\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n [types.actions.registerSelect](context: ActionContext, payload: { id: number }): void {\r\n context.commit(types.mutations.registerSelect, payload.id);\r\n if (context.state.countries.length === 0 && context.state.countriesLoadingState !== LoadingState.Loading) {\r\n context.commit(types.mutations.loadCountries);\r\n countryService.getAllCountries()\r\n .then((countries) => context.commit(types.mutations.loadCountriesSuccess, countries))\r\n .catch((e) => context.commit(types.mutations.loadCountriesFail));\r\n }\r\n },\r\n [types.actions.selectCountry](context: ActionContext, payload: { id: string, country: Country }): void {\r\n context.commit(types.mutations.selectCountry, payload);\r\n context.commit(types.mutations.loadStatesForSelectedCountry, { id: payload.id });\r\n countryService.getStatesOfCountry(payload.country.id)\r\n .then((states) => context.commit(types.mutations.loadStatesForSelectedCountrySuccess, { id: payload.id, states }))\r\n .catch((e) => context.commit(types.mutations.loadStatesForSelectedCountryFail, { id: payload.id }));\r\n },\r\n [types.actions.selectCountryAndStateById](\r\n context: ActionContext,\r\n payload: { id: string, countryId: number, stateId: number }): void {\r\n context.commit(types.mutations.selectCountryById, { id: payload.id, countryId: payload.countryId });\r\n context.commit(types.mutations.loadStatesForSelectedCountry, { id: payload.id });\r\n countryService.getStatesOfCountry(payload.countryId)\r\n .then((states) => {\r\n context.commit(types.mutations.loadStatesForSelectedCountrySuccess, { id: payload.id, states });\r\n context.commit(types.mutations.selectStateById, { id: payload.id, stateId: payload.stateId });\r\n })\r\n .catch((e) => context.commit(types.mutations.loadStatesForSelectedCountryFail, { id: payload.id }));\r\n },\r\n [types.actions.selectState](context: ActionContext, payload: { id: string, state: State }): void {\r\n context.commit(types.mutations.selectState, payload);\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.countries](currentState: CountryStates): Country[] {\r\n return currentState.countries;\r\n },\r\n [types.getters.countriesLoadingState](currentState: CountryStates): LoadingState {\r\n return currentState.countriesLoadingState;\r\n },\r\n [types.getters.selectedCountry](currentState: CountryStates): (id: string) => Country | null {\r\n return (id: string) => currentState.countryStateSelectStates[id] && currentState.countryStateSelectStates[id].selectedCountry;\r\n },\r\n [types.getters.statesOfSelectedCountry](currentState: CountryStates): (id: string) => State[] | null {\r\n return (id: string) => currentState.countryStateSelectStates[id] && currentState.countryStateSelectStates[id].statesOfSelectedCountry;\r\n },\r\n [types.getters.statesLoadingState](currentState: CountryStates): (id: string) => LoadingState {\r\n return (id: string) => currentState.countryStateSelectStates[id] && currentState.countryStateSelectStates[id].statesLoadingState;\r\n },\r\n [types.getters.selectedState](currentState: CountryStates): (id: string) => State | null {\r\n return (id: string) => currentState.countryStateSelectStates[id] && currentState.countryStateSelectStates[id].selectedState;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport { ShippingMethod } from '@/entities/ShippingMethod';\r\nimport { OrderMethod } from '@/entities/OrderMethod';\r\nimport URI from 'urijs';\r\nimport { apiClient } from './api-client';\r\nimport { AxiosResponse } from 'axios';\r\n\r\n/**\r\n * Service for shopping cart operations.\r\n */\r\nexport class ShoppingCartService {\r\n private get baseUrl(): URI {\r\n return new URI('/api/shopping-carts');\r\n }\r\n\r\n public async getShoppingCarts(): Promise {\r\n const res = await apiClient.get(this.baseUrl.toString());\r\n return res.data;\r\n }\r\n\r\n public async getOrderMethods(): Promise {\r\n const res = await apiClient.get(this.baseUrl.segmentCoded('order-methods').toString());\r\n return res.data;\r\n }\r\n\r\n public async setActiveShoppingCart(shoppingCartId: number): Promise {\r\n await apiClient.put(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('active')\r\n .toString()\r\n );\r\n }\r\n\r\n public async addShoppingCart(cartName: string): Promise {\r\n const res = await apiClient.put(\r\n this.baseUrl\r\n .segmentCoded('new')\r\n .segmentCoded(cartName)\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n public async deleteShoppingCart(shoppingCartId: number): Promise {\r\n await apiClient.delete(this.baseUrl.segmentCoded(shoppingCartId.toString(10)).toString());\r\n }\r\n\r\n public async addShoppingCartItem(shoppingCartId: number, fullPartId: string, quantity: number): Promise {\r\n await apiClient.put(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('item')\r\n .toString(),\r\n { fullPartId, quantity }\r\n );\r\n }\r\n\r\n public async addShoppingCartItemsBulk(\r\n shoppingCartId: number,\r\n items: Array<{ fullPartId: string; quantity: number }>\r\n ): Promise {\r\n await apiClient.put(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('item')\r\n .segmentCoded('bulk')\r\n .toString(),\r\n { items }\r\n );\r\n }\r\n\r\n public async updateShoppingCartMetadata(\r\n shoppingCartId: number,\r\n cartName: string,\r\n orderName: string\r\n ): Promise {\r\n await apiClient.post(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('metadata')\r\n .toString(),\r\n { cartName, orderName }\r\n );\r\n }\r\n\r\n public async updateShoppingCartShippingMethod(\r\n shoppingCartId: number,\r\n shippingMethod: ShippingMethod\r\n ): Promise {\r\n await apiClient.post(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('shipping')\r\n .segmentCoded(shippingMethod)\r\n .toString()\r\n );\r\n }\r\n\r\n public async updateShoppingCartOrderMethod(shoppingCartId: number, orderMethod: string): Promise {\r\n await apiClient.post(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('order-method')\r\n .segmentCoded(orderMethod)\r\n .toString()\r\n );\r\n }\r\n\r\n public async updateQuantityOfShoppingCartItem(\r\n shoppingCartId: number,\r\n shoppingCartItemId: number,\r\n quantity: number\r\n ): Promise {\r\n await apiClient.post(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('item')\r\n .segmentCoded(shoppingCartItemId.toString(10))\r\n .segmentCoded('quantity')\r\n .segmentCoded(quantity.toString(10))\r\n .toString()\r\n );\r\n }\r\n\r\n public async updateUserInfoTextOfShoppingCartItem(\r\n shoppingCartId: number,\r\n shoppingCartItemId: number,\r\n userInfoText: string\r\n ): Promise {\r\n await apiClient.post(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('item')\r\n .segmentCoded(shoppingCartItemId.toString(10))\r\n .segmentCoded('user-info-text')\r\n .toString(),\r\n { userInfoText }\r\n );\r\n }\r\n\r\n public async deleteShoppingCartItem(shoppingCartId: number, shoppingCartItemId: number): Promise {\r\n await apiClient.delete(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('item')\r\n .segmentCoded(shoppingCartItemId.toString(10))\r\n .toString()\r\n );\r\n }\r\n\r\n public async moveItemToShoppingCart(\r\n shoppingCartId: number,\r\n shoppingCartItemId: number,\r\n targetShoppingCartId: number\r\n ): Promise {\r\n await apiClient.post(\r\n this.baseUrl\r\n .segmentCoded(shoppingCartId.toString(10))\r\n .segmentCoded('item')\r\n .segmentCoded(shoppingCartItemId.toString(10))\r\n .segmentCoded('move-to-cart')\r\n .segmentCoded(targetShoppingCartId.toString(10))\r\n .toString()\r\n );\r\n }\r\n}\r\n","import Vue from 'vue';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { RootState } from '../rootState';\r\nimport Toasted, { ToastOptions } from 'vue-toasted';\r\nimport removeNamespace from '../removeNamespace';\r\n\r\nVue.use(Toasted);\r\n\r\nconst namespace = 'notification';\r\n\r\nexport const NotificationModuleTypes = {\r\n getters: {},\r\n mutations: {},\r\n actions: {\r\n notify: `${namespace}/notify`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, NotificationModuleTypes);\r\n\r\nexport enum NotificationType {\r\n Info = 'Info',\r\n Success = 'Success',\r\n Error = 'Error',\r\n}\r\n\r\nexport interface NotificationPayload {\r\n message: string;\r\n type: NotificationType;\r\n}\r\n\r\n// tslint:disable-next-line: no-empty-interface\r\nexport interface NotificationState { }\r\n\r\nconst state: NotificationState = {};\r\n\r\nconst mutations: MutationTree = {};\r\n\r\nconst actions: ActionTree = {\r\n [types.actions.notify](context: ActionContext, payload: NotificationPayload): void {\r\n const toastOptions: ToastOptions = {\r\n duration: 5000,\r\n theme: 'toasted-primary',\r\n position: 'bottom-center',\r\n };\r\n\r\n switch (payload.type) {\r\n case NotificationType.Info:\r\n toastOptions.type = 'info';\r\n break;\r\n case NotificationType.Success:\r\n toastOptions.type = 'success';\r\n break;\r\n case NotificationType.Error:\r\n toastOptions.type = 'error';\r\n break;\r\n }\r\n Vue.toasted.show(payload.message, toastOptions);\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","export enum RelatedPartType {\r\n Alternative = 'Alternative',\r\n Replacement = 'Replacement',\r\n ChildBrandPart = 'ChildBrandPart',\r\n}\r\n","/**\r\n * Various methods to retrieve localized values and similar information.\r\n */\r\nexport class ResHelper {\r\n /**\r\n * Get the localized value for the given key or null/undefined if it does not exist.\r\n * @param key localization key\r\n */\r\n public static getString(key: string): string | undefined {\r\n if (!key) {\r\n return undefined;\r\n }\r\n\r\n // resourceDictionary is defined in _Layout.cshtml\r\n return (window as any).formula.localization.resourceDictionary[key];\r\n }\r\n\r\n /**\r\n * Get a localized string for the key or when not available return the fallback.\r\n * @param key localization key\r\n * @param fallback value to return as fallback\r\n */\r\n public static getStringOrFallback(key: string, fallback: string): string {\r\n const value = this.getString(key);\r\n return value == null ? fallback : value;\r\n }\r\n\r\n /**\r\n * Get a localized string for the key or when not available use the fallback key to get a value.\r\n * @param key localization key\r\n * @param fallbackKey fallback localization key\r\n */\r\n public static getStringOrUseFallbackKey(key: string, fallbackKey: string): string | undefined {\r\n const value = this.getString(key);\r\n return value == null ? this.getString(fallbackKey) : value;\r\n }\r\n\r\n /**\r\n * Retrieves a localized string for the key and replaces the placeholders with the given parameters.\r\n * @param key localization key\r\n * @param params parameters that should be used instead of the placeholders\r\n */\r\n public static getStringWithParameters(key: string, ...params: string[]): string | undefined {\r\n let value = this.getString(key);\r\n if (!value) {\r\n return undefined;\r\n }\r\n\r\n params.forEach((p, i) => value = value && value.replace(`{${i + 1}}`, p));\r\n return value;\r\n }\r\n\r\n /**\r\n * Get the name of the current culture.\r\n */\r\n public static getCurrentCultureName(): string {\r\n // currentCultureName is defined in _Layout.cshtml\r\n return (window as any).formula.localization.currentCultureCode;\r\n }\r\n}\r\n","import { RelatedPartType } from '@/entities/RelatedPartType';\r\n\r\n// Quick search\r\nexport const QUICK_SEARCH = {\r\n SEARCH_TERM_PLACEHOLDER: 'Formula.QuickSearch.SearchTermPlaceholder',\r\n SEARCH_BUTTON_ALT_TEXT: 'Formula.QuickSearch.SearchButtonAltText',\r\n};\r\n\r\n// Quick search result\r\nexport const QUICK_SEARCH_RESULT = {\r\n TITLE: 'Formula.QuickSearchResult.Title',\r\n CLOSE_BUTTON: 'Formula.QuickSearchResult.CloseButton',\r\n PART_NUMBER: 'Formula.QuickSearchResult.PartNumber',\r\n DESCRIPTION: 'Formula.QuickSearchResult.Description',\r\n BRAND: 'Formula.QuickSearchResult.Brand',\r\n PRICE: 'Formula.QuickSearchResult.Price',\r\n AVAILABILITY: 'Formula.QuickSearchResult.Availability',\r\n NO_RESULTS_FOUND: 'Formula.QuickSearchResult.NoResultsFound',\r\n LINK_TO_DETAIL_SEARCH_TEXT: 'Formula.QuickSearchResult.LinkToDetailSearchText',\r\n LINK_TO_PARTS_CATALOGUE_SEARCH_TEXT: 'Formula.QuickSearchResult.LinkToPartsCatalogueSearchText',\r\n};\r\n\r\n// VIN search\r\nexport const VIN_SEARCH = {\r\n SEARCH_TERM_PLACEHOLDER: 'Formula.VinSearch.SearchTermPlaceholder',\r\n SEARCH_BUTTON_ALT_TEXT: 'Formula.VinSearch.SearchButtonAltText',\r\n};\r\n\r\n// VIN search result\r\nexport const VIN_SEARCH_RESULT = {\r\n TITLE: 'Formula.VinSearchResult.Title',\r\n CLOSE_BUTTON: 'Formula.VinSearchResult.CloseButton',\r\n NO_RESULTS_FOUND: 'Formula.VinSearchResult.NoResultsFound',\r\n LINK_TO_PARTS_CATALOGUE_SEARCH_TEXT: QUICK_SEARCH_RESULT.LINK_TO_PARTS_CATALOGUE_SEARCH_TEXT,\r\n};\r\n\r\nexport const DELIVERY_TIME_TOOLTIP = {\r\n HEADER_TEXT: 'Formula.DeliveryTimeTooltip.HeaderText',\r\n EACH_TEXT: 'Formula.DeliveryTimeTooltip.EachText',\r\n};\r\n\r\nexport const DEPOSIT_PART_INFO_TOOLTIP = {\r\n INFO_TEXT: 'Formula.DepositPartInfoTooltip.InfoText',\r\n};\r\n\r\n// Orders\r\nexport const ORDER_ITEM_STATE_TOOLTIP = {\r\n HEADER_TEXT: 'Formula.OrderItemStateTooltip.HeaderText',\r\n READY_FOR_PICKING_TEXT: 'Formula.OrderItemStateTooltip.ReadyForPickingTextText',\r\n READY_FOR_SHIPMENT_TEXT: 'Formula.OrderItemStateTooltip.ReadyForShipmentText',\r\n QUANTITY_INVOICED_TEXT: 'Formula.OrderItemStateTooltip.QuantityInvoicedText',\r\n IN_ORDER_TEXT: 'Formula.OrderItemStateTooltip.InOrderText',\r\n};\r\n\r\n// Price\r\nexport const PRICE = {\r\n NET: 'Formula.Price.Net',\r\n GROSS: 'Formula.Price.Gross',\r\n NETTEXTUAL: 'Formula.Price.NetTextual',\r\n GROSSTEXTUAL: 'Formula.Price.GrossTextual',\r\n HIDDEN: 'Formula.Price.Hidden',\r\n};\r\n\r\n// Part\r\nexport const PART = {\r\n ALTERNATIVES_AND_REPLACEMENTS: 'Formula.Part.AlternativesAndReplacements',\r\n SHOW_REPLACEMENTS_BUTTON_TEXT: 'Formula.Part.ShowReplacementsButtonText',\r\n DELIVERY_TEXT: {\r\n IN_STOCK: 'Formula.Part.DeliveryText.InStock',\r\n },\r\n UNIT_CODE_TEXT: {\r\n For(key: string): string {\r\n return `Formula.Part.UnitCode.${key}`;\r\n },\r\n UNKNOWN: 'Formula.Part.UnitCode.Unknown',\r\n },\r\n ForRelation(relatedPartType: RelatedPartType): string {\r\n switch (relatedPartType) {\r\n case RelatedPartType.Alternative:\r\n return 'Formula.Part.Alternative';\r\n case RelatedPartType.Replacement:\r\n return 'Formula.Part.Replacement';\r\n case RelatedPartType.ChildBrandPart:\r\n return 'Formula.Part.ChildBrand';\r\n default:\r\n return '';\r\n }\r\n },\r\n};\r\n\r\n// Part details\r\nexport const PART_DETAILS = {\r\n QUANTITY: 'Formula.PartDetails.Quantity',\r\n ADD_TO_CART: 'Formula.PartDetails.AddToCart',\r\n};\r\n\r\n// Shopping cart overview\r\nexport const SHOPPING_CART_OVERVIEW = {\r\n SHOPPING_CART: 'Formula.ShoppingCartOverview.ShoppingCart',\r\n CART_NAME: 'Formula.ShoppingCartOverview.CartName',\r\n ORDER_NAME: 'Formula.ShoppingCartOverview.OrderName',\r\n PART_NUMBER: 'Formula.ShoppingCartOverview.PartNumber',\r\n DESCRIPTION: 'Formula.ShoppingCartOverview.Description',\r\n BRAND: 'Formula.ShoppingCartOverview.Brand',\r\n SHIPPING: 'Formula.ShoppingCartOverview.Shipping',\r\n ORDER_METHOD: 'Formula.ShoppingCartOverview.OrderMethod',\r\n DELIVERY: 'Formula.ShoppingCartOverview.Delivery',\r\n USER_INFO_TEXT: 'Formula.ShoppingCartOverview.UserInfoText',\r\n PRICE: 'Formula.ShoppingCartOverview.Price',\r\n QUANTITY: 'Formula.ShoppingCartOverview.Quantity',\r\n GO_TO_SUMMARY: 'Formula.ShoppingCartOverview.Button.GoToSummary',\r\n CONTINUE_SHOPPING: 'Formula.ShoppingCartOverview.Button.ContinueShopping',\r\n SAVE: 'Formula.ShoppingCartOverview.Button.Save',\r\n EMPTY_CART: 'Formula.ShoppingCartOverview.EmptyCart',\r\n ERROR_MUST_NOT_BE_EMPTY: 'Formula.ShoppingCartOverview.Error.MustNotBeEmpty',\r\n MOVE_CART_ITEM_DEFAULT_OPTION: 'Formula.ShoppingCartOverview.MoveCartItemDefaultOption',\r\n};\r\n\r\n// Shipping methods\r\nexport const SHIPPING = {\r\n SHIPPING_METHOD_VALUE: {\r\n For(key: string): string {\r\n return `Formula.ShippingMethod.${key}`;\r\n },\r\n },\r\n};\r\n\r\n// Order methods\r\nexport const ORDER_METHOD = {\r\n For(key: string): string {\r\n return `Formula.OrderMethod.${key}`;\r\n },\r\n};\r\n\r\n// Country\r\nexport const COUNTRY = {\r\n For(key: string): string {\r\n return `Formula.Country.${key}`;\r\n },\r\n};\r\n\r\n// State\r\nexport const STATE = {\r\n For(key: string): string {\r\n return `Formula.State.${key}`;\r\n },\r\n};\r\n\r\n// Availability\r\nexport const AVAILABILITY = {\r\n UNKNOWN: 'Formula.Availability.Unknown',\r\n NOT_IN_STOCK: 'Formula.Availability.NotInStock',\r\n For(key: string): string {\r\n return `Formula.Availability.${key}`;\r\n },\r\n};\r\n\r\n// Shopping cart\r\nexport const SHOPPING_CART = {\r\n ADD_SUCCESS: 'Formula.ShoppingCart.AddSuccess',\r\n ADD_FAILED: 'Formula.ShoppingCart.AddFailed',\r\n ADD_BULK_SUCCESS: 'Formula.ShoppingCart.AddBulkSuccess',\r\n ADD_BULK_FAILED: 'Formula.ShoppingCart.AddBulkFailed',\r\n MOVE_ITEM_SUCCESS: 'Formula.ShoppingCart.MoveItemSuccess',\r\n MOVE_ITEM_FAILED: 'Formula.ShoppingCart.MoveItemFailed',\r\n CREATE_NEW_CART_SUCCESS: 'Formula.ShoppingCart.CreateNewCartSuccess',\r\n CREATE_NEW_CART_FAILED: 'Formula.ShoppingCart.CreateNewCartFailed',\r\n DELETE_CART_SUCCESS: 'Formula.ShoppingCart.DeleteCartSuccess',\r\n DELETE_CART_FAILED: 'Formula.ShoppingCart.DeleteCartFailed',\r\n};\r\n\r\n// Shopping cart upload\r\nexport const SHOPPING_CART_UPLOAD = {\r\n TITLE: 'Formula.Titles.ShoppingCartUpload',\r\n DESCRIPTION: 'Formula.ShoppingCartUpload.Description',\r\n DEMO_FILE_DOWNLOAD_TEXT: 'Formula.ShoppingCartUpload.DemoFileDownloadText',\r\n DEMO_FILE_DOWNLOAD_TEXT_EXCEL: 'Formula.ShoppingCartUpload.DemoFileDownloadTextExcel',\r\n UPLOAD_FILE: 'Formula.ShoppingCartUpload.UploadFileButton',\r\n SHOW_USED_PARTS: 'Formula.ShoppingCartUpload.ShowUsedParts',\r\n ADD_TO_NEW_CART: 'Formula.ShoppingCartUpload.AddToNewCartButton',\r\n ADD_TO_EXISTING_CART: 'Formula.ShoppingCartUpload.AddToExistingCartButton',\r\n SELECT_CART: 'Formula.ShoppingCartUpload.SelectCartText',\r\n LINES_PARSED: 'Formula.ShoppingCartUpload.LinesParsed',\r\n SUM_SELECTED_ITEMS: 'Formula.ShoppingCartUpload.SumSelectedItems',\r\n FOUND_PARTS: 'Formula.ShoppingCartUpload.FoundParts',\r\n FOUND_PARTS_DESCRIPTION: 'Formula.ShoppingCartUpload.FoundPartsDescription',\r\n REPLACED_PARTS: 'Formula.ShoppingCartUpload.ReplacedParts',\r\n REPLACED_PARTS_DESCRIPTION: 'Formula.ShoppingCartUpload.ReplacedPartsDescription',\r\n USED_PARTS: 'Formula.ShoppingCartUpload.UsedParts',\r\n USED_PARTS_DESCRIPTION: 'Formula.ShoppingCartUpload.UsedPartsDescription',\r\n NOT_FOUND_PARTS: 'Formula.ShoppingCartUpload.NotFoundParts',\r\n NOT_FOUND_PARTS_DESCRIPTION: 'Formula.ShoppingCartUpload.NotFoundPartsDescription',\r\n PROGRESS: 'Formula.ShoppingCartUpload.Progress',\r\n PROGRESS_UNDEFINED: 'Formula.ShoppingCartUpload.ProgressUndefined',\r\n GENERAL_ERROR: 'Formula.ShoppingCartUpload.GeneralError',\r\n\r\n RESULT: {\r\n PART_NUMBER: SHOPPING_CART_OVERVIEW.PART_NUMBER,\r\n DESCRIPTION: SHOPPING_CART_OVERVIEW.DESCRIPTION,\r\n BRAND: SHOPPING_CART_OVERVIEW.BRAND,\r\n QUANTITY: SHOPPING_CART_OVERVIEW.QUANTITY,\r\n INFO_TEXT: SHOPPING_CART_OVERVIEW.USER_INFO_TEXT,\r\n REPLACED_BY: 'Formula.ShoppingCartUpload.Result.ReplacedBy',\r\n DELIVERY: SHOPPING_CART_OVERVIEW.DELIVERY,\r\n PRICE: SHOPPING_CART_OVERVIEW.PRICE,\r\n SUM: 'Formula.ShoppingCartUpload.Result.Sum',\r\n DOWNLOAD: 'Formula.ShoppingCartUpload.Result.Download',\r\n },\r\n};\r\n\r\n// Shopping cart menu\r\nexport const SHOPPING_CART_MENU = {\r\n TITLE: 'Formula.ShoppingCartMenu.Title',\r\n GO_TO_CART: 'Formula.ShoppingCartMenu.GoToCart',\r\n NUMBER_OF_SHOPPING_CARTS: 'Formula.ShoppingCartMenu.NumberOfShoppingCarts',\r\n DIRECT_INPUT_TITLE: 'Formula.ShoppingCartMenu.DirectInputTitle',\r\n DIRECT_INPUT_PLACEHOLDER: 'Formula.ShoppingCartMenu.DirectInputPlaceholder',\r\n};\r\n\r\nexport const ORDERS_FOR_USER = {\r\n TITLE: 'Formula.OrdersForUser.Title',\r\n FILTER_PLACEHOLDER: 'Formula.OrdersForUser.Filter_Placeholder',\r\n FILTER_CLEAR: 'Formula.OrdersForUser.Filter_Clear',\r\n};\r\n\r\nexport const ORDERS_FOR_USER_TABLE = {\r\n COL_REFERENCE: 'Formula.OrdersForUserTable.Col_Reference',\r\n COL_NUMBER: 'Formula.OrdersForUserTable.Col_Number',\r\n COL_DATE: 'Formula.OrdersForUserTable.Col_Date',\r\n COL_STATUS: 'Formula.OrdersForUserTable.Col_Status',\r\n COL_TOTAL_AMOUNT: 'Formula.OrdersForUserTable.Col_Total_Amount',\r\n COL_ITEMS: 'Formula.OrdersForUserTable.Col_Items',\r\n COL_SHOW_DETAILS: 'Formula.OrdersForUserTable.Col_Show_Details',\r\n COL_HIDE_DETAILS: 'Formula.OrdersForUserTable.Col_Hide_Details',\r\n COL_DETAIL_PART_NUMBER: 'Formula.OrdersForUserTable.Col_Detail_Part_Number',\r\n COL_DETAIL_DESCRIPTION: 'Formula.OrdersForUserTable.Col_Detail_Description',\r\n COL_DETAIL_MAKE: 'Formula.OrdersForUserTable.Col_Detail_Make',\r\n COL_DETAIL_ADDITIONAL_INFO: 'Formula.OrdersForUserTable.Col_Detail_Additional_Info',\r\n COL_DETAIL_QUANTITY: 'Formula.OrdersForUserTable.Col_Detail_Quantity',\r\n COL_DETAIL_DELIVERED_QUANTITY: 'Formula.OrdersForUserTable.Col_Detail_Delivered_Quantity',\r\n COL_DETAIL_AMOUNT: 'Formula.OrdersForUserTable.Col_Detail_Amount',\r\n};\r\n\r\n// Availability clock\r\nexport const AVAILABILITY_CLOCK = {\r\n COUNTDOWN_TEXT: 'Formula.AvailabilityClock.CountdownText',\r\n SHIPPING_WITHIN_TEXT: 'Formula.AvailabilityClock.ShippingWithinText',\r\n DAYS: 'Formula.AvailabilityClock.Days',\r\n HOURS: 'Formula.AvailabilityClock.Hours',\r\n MINUTES: 'Formula.AvailabilityClock.Minutes',\r\n SECONDS: 'Formula.AvailabilityClock.Seconds',\r\n};\r\n\r\nexport const PART_SEARCH = {\r\n RESULTS_HEADING: 'Formula.PartSearch.ResultsHeading',\r\n SEARCH_BOX_TITLE: 'Formula.PartSearch.SearchBoxTitle',\r\n ADDITIONAL_PARTS_LINK_TEXT: 'Formula.PartSearch.AdditionalPartsLink',\r\n};\r\n\r\nexport const CATALOGUE_SEARCH = {\r\n RESULTS_HEADING: 'Formula.CatalogueSearch.ResultsHeading',\r\n SUB_HEADLINE_BRAND: 'Formula.CatalogueSearch.SubHeadline.Brand',\r\n SUB_HEADLINE_MODEL_GROUP: 'Formula.CatalogueSearch.SubHeadline.ModelGroup',\r\n SUB_HEADLINE_MODEL: 'Formula.CatalogueSearch.SubHeadline.Model',\r\n SUB_HEADLINE_DIAGRAM: 'Formula.CatalogueSearch.SubHeadline.Diagram',\r\n SUB_HEADLINE_VIN: 'Formula.CatalogueSearch.SubHeadline.Vin',\r\n};\r\n\r\nexport const PART_CATEGORIES = {\r\n For(categoryName: string): string {\r\n return `Formula.PartCategories.${categoryName}`;\r\n },\r\n};\r\n\r\n// Cookie disclaimer\r\nexport const COOKIE_DISCLAIMER = {\r\n BUTTON_TEXT: 'Formula.CookieDisclaimer.ButtonText',\r\n MESSAGE: 'Formula.CookieDisclaimer.Message',\r\n MORE_INFO_BUTTON_TEXT: 'Formula.CookieDisclaimer.MoreInfoButtonText',\r\n};\r\n\r\nexport const PART_CATALOGUE = {\r\n TITLE_TEXT: 'Formula.PartCatalogue.TitleText',\r\n GO_TO_GRAPHIC_TEXT: 'Formula.PartCatalogue.GoToGraphicText',\r\n CHANGE_SELECTION: 'Formula.PartCatalogue.ChangeSelection',\r\n BREADCRUMB_DESCRIPTION_TEXT: 'Formula.PartCatalogue.BreadcrumbDescriptionText',\r\n BACK_BUTTON_TEXT: 'Formula.PartCatalogue.BackButtonText',\r\n\r\n META: {\r\n ASSEMBLY_NUMBER_FROM: 'Formula.PartCatalogue.Meta.AssemblyNumberFrom',\r\n ASSEMBLY_NUMBER_TO: 'Formula.PartCatalogue.Meta.AssemblyNumberTo',\r\n COLOR: 'Formula.PartCatalogue.Meta.Color',\r\n ENGINE_NUMBER_FROM: 'Formula.PartCatalogue.Meta.EngineNumberFrom',\r\n ENGINE_NUMBER_TO: 'Formula.PartCatalogue.Meta.EngineNumberTo',\r\n SIDE: 'Formula.PartCatalogue.Meta.Side',\r\n VIN_FROM: 'Formula.PartCatalogue.Meta.VinFrom',\r\n VIN_TO: 'Formula.PartCatalogue.Meta.VinTo',\r\n },\r\n};\r\n\r\nexport const CAR = {\r\n AVAILABLE_PARTS_TITLE: 'Formula.Car.AvailablePartsTitle',\r\n RANDOM_PARTS_TITLE: 'Formula.Car.RandomPartsTitle',\r\n SEARCH_FOR_PARTS: 'Formula.Car.SearchForParts',\r\n PARTS: 'Formula.Car.Parts',\r\n};\r\n","export enum CustomerType {\r\n NotValidated = 'NotValidated',\r\n PrepaidNoDiscount = 'PrepaidNoDiscount',\r\n PrepaidWithDiscount = 'PrepaidWithDiscount',\r\n NoPrepaidWithDiscount = 'NoPrepaidWithDiscount',\r\n}\r\n","import { CustomerType } from '@/entities/CustomerType';\r\n\r\nexport class UserHelper {\r\n // user is defined in _Layout.cshtml\r\n public static isAuthenticated(): boolean {\r\n return (window as any).formula.user.isAuthenticated;\r\n }\r\n\r\n public static isValidated(): boolean {\r\n const customerType: string = (window as any).formula.user.customerType;\r\n if (customerType) {\r\n return CustomerType[customerType as keyof typeof CustomerType] !== CustomerType.NotValidated;\r\n }\r\n return false;\r\n }\r\n\r\n public static hasDiscounts(): boolean {\r\n const customerType: string = (window as any).formula.user.customerType;\r\n if (customerType) {\r\n const ct = CustomerType[customerType as keyof typeof CustomerType];\r\n return ct === CustomerType.PrepaidWithDiscount || ct === CustomerType.NoPrepaidWithDiscount;\r\n }\r\n return false;\r\n }\r\n\r\n public static hasShippingCosts(): boolean {\r\n const customerType: string = (window as any).formula.user.customerType;\r\n if (customerType) {\r\n return CustomerType[customerType as keyof typeof CustomerType] !== CustomerType.NoPrepaidWithDiscount;\r\n }\r\n return false;\r\n }\r\n\r\n public static getCustomerType(): CustomerType {\r\n const customerType: string = (window as any).formula.user.customerType;\r\n return CustomerType[customerType as keyof typeof CustomerType];\r\n }\r\n}\r\n","import { AnalyticsEvent, AddToCartAnalyticsEvent } from '@/entities/analytics/AnalyticsEvents';\r\nimport { ShoppingCartItemAnalytics } from '@/entities/analytics/ShoppingCartItemAnalytics';\r\n\r\nfunction ensureDataLayer(): Window & typeof globalThis & { dataLayer: AnalyticsEvent[] } {\r\n (window as any).dataLayer = (window as any).dataLayer || [];\r\n return window as Window & typeof globalThis & { dataLayer: AnalyticsEvent[] };\r\n}\r\n\r\nexport function trackAddItemsToShoppingCart(items: ShoppingCartItemAnalytics[]): void {\r\n if (items == null || items.length === 0) {\r\n return;\r\n }\r\n\r\n const event: AddToCartAnalyticsEvent = {\r\n event: 'addToCart',\r\n ecommerce: {\r\n currencyCode: items[0].currencyCode,\r\n add: {\r\n products: items.map((item) => ({\r\n name: item.name,\r\n id: item.id,\r\n price: item.price,\r\n brand: item.brand,\r\n category: item.categories,\r\n quantity: item.quantity,\r\n currencyCode: item.currencyCode,\r\n })),\r\n },\r\n },\r\n };\r\n ensureDataLayer().dataLayer.push(event);\r\n}\r\n","import { apiClient } from './api-client';\r\nimport URI from 'urijs';\r\nimport { ShoppingCartItemAnalytics } from '@/entities/analytics/ShoppingCartItemAnalytics';\r\n\r\n/**\r\n * Service to retrieve analytics data.\r\n */\r\nexport class AnalyticsService {\r\n private get baseUrl(): URI {\r\n return new URI('/api/analytics');\r\n }\r\n\r\n public async getMultipleShoppingCartItemAnalytics(\r\n shoppingCartItemAnalyticsRequests: Array<{ partId: string; quantity: number }>\r\n ): Promise {\r\n const query = shoppingCartItemAnalyticsRequests.reduce(\r\n (prev, cur, i) => ({\r\n ...prev,\r\n [`requests[${i}].partId`]: cur.partId,\r\n [`requests[${i}].quantity`]: cur.quantity,\r\n }),\r\n {}\r\n );\r\n\r\n const res = await apiClient.get(\r\n this.baseUrl\r\n .segmentCoded('shopping-cart-items')\r\n .addQuery(query)\r\n .toString()\r\n );\r\n\r\n return res.data;\r\n }\r\n\r\n public async getShoppingCartItemAnalytics(\r\n partId: string,\r\n quantity: number\r\n ): Promise {\r\n const res = await this.getMultipleShoppingCartItemAnalytics([{ partId, quantity }]);\r\n\r\n if (res.length !== 1) {\r\n return null;\r\n }\r\n\r\n return res[0];\r\n }\r\n}\r\n","import { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { RootState } from '../rootState';\r\nimport { ShoppingCartService } from '../../services/shopping-cart.service';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport { NotificationModuleTypes, NotificationType } from './notification';\r\nimport { ResHelper } from '@/helper/ResHelper';\r\nimport * as l10n from '@/constants/l10n';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\nimport { PartService } from '@/services/part-service';\r\nimport Vue from 'vue';\r\nimport { UserHelper } from '@/helper/user';\r\nimport { ExactPartSearchResultInfo } from '@/entities/ExactPartSearchResultInfo';\r\nimport { PartSearchService } from '@/services/part-search-service';\r\nimport { ShippingMethod } from '@/entities/ShippingMethod';\r\nimport { OrderMethod } from '@/entities/OrderMethod';\r\nimport { PartAnalytics } from '@/entities/analytics/PartAnalytics';\r\nimport { trackAddItemsToShoppingCart } from '@/analytics';\r\nimport { AnalyticsService } from '@/services/analytics-service';\r\nimport _ from 'lodash';\r\n\r\nconst shoppingCartService = new ShoppingCartService();\r\nconst partService = new PartService();\r\nconst searchService = new PartSearchService();\r\nconst analyticsService = new AnalyticsService();\r\n\r\nconst namespace = 'shoppingCart';\r\n\r\nexport const ShoppingCartModuleTypes = {\r\n getters: {\r\n loadingState: `${namespace}/loadingState`,\r\n shoppingCarts: `${namespace}/shoppingCarts`,\r\n activeShoppingCart: `${namespace}/activeShoppingCart`,\r\n itemsThatAreBeingAddded: `${namespace}/itemsThatAreBeingAddded`,\r\n isItemCurrentlyBeingAdded: `${namespace}/isItemCurrentlyBeingAdded`,\r\n hasActiveShoppingCart: `${namespace}/hasActiveShoppingCart`,\r\n isItemLoadingAvailability: `${namespace}/isItemLoadingAvailability`,\r\n partSearchState: `${namespace}/partSearchState`,\r\n foundPartsByDirectInput: `${namespace}/foundPartsByDirectInput`,\r\n orderMethods: `${namespace}/orderMethods`,\r\n },\r\n mutations: {\r\n loadShoppingCarts: `${namespace}/loadShoppingCarts`,\r\n loadShoppingCartsSuccess: `${namespace}/loadShoppingCartsSuccess`,\r\n loadShoppingCartsFail: `${namespace}/loadShoppingCartsFail`,\r\n setActiveSelectedShoppingCart: `${namespace}/setActiveSelectedShoppingCart`,\r\n addShoppingCart: `${namespace}/addShoppingCart`,\r\n addShoppingCartSuccess: `${namespace}/addShoppingCartSuccess`,\r\n addShoppingCartFail: `${namespace}/addShoppingCartFail`,\r\n deleteActiveShoppingCart: `${namespace}/deleteActiveShoppingCart`,\r\n deleteActiveShoppingCartSuccess: `${namespace}/deleteActiveShoppingCartSuccess`,\r\n deleteActiveShoppingCartFail: `${namespace}/deleteActiveShoppingCartFail`,\r\n addShoppingCartItem: `${namespace}/addShoppingCartItem`,\r\n addShoppingCartItemSuccess: `${namespace}/addShoppingCartItemSuccess`,\r\n addShoppingCartItemsInBulk: `${namespace}/addShoppingCartItemsInBulk`,\r\n updateActiveShoppingCartMetadata: `${namespace}/updateActiveShoppingCartMetadata`,\r\n updateActiveShoppingCartMetadataSuccess: `${namespace}/updateActiveShoppingCartMetadataSuccess`,\r\n updateActiveShoppingCartMetadataFail: `${namespace}/updateActiveShoppingCartMetadataFail`,\r\n updateActiveShoppingCartShippingMethod: `${namespace}/updateActiveShoppingCartShippingMethod`,\r\n updateActiveShoppingCartShippingMethodSuccess: `${namespace}/updateActiveShoppingCartShippingMethodSuccess`,\r\n updateActiveShoppingCartShippingMethodFail: `${namespace}/updateActiveShoppingCartShippingMethodFail`,\r\n updateActiveShoppingCartOrderMethod: `${namespace}/updateActiveShoppingCartOrderMethod`,\r\n updateActiveShoppingCartOrderMethodSuccess: `${namespace}/updateActiveShoppingCartOrderMethodSuccess`,\r\n updateActiveShoppingCartOrderMethodFail: `${namespace}/updateActiveShoppingCartOrderMethodFail`,\r\n updateShoppingCartOrderMethod: `${namespace}/updateShoppingCartOrderMethod`,\r\n updateQuantityOfShoppingCartItem: `${namespace}/updateQuantityOfShoppingCartItem`,\r\n updateQuantityOfShoppingCartItemSuccess: `${namespace}/updateQuantityOfShoppingCartItemSuccess`,\r\n updateQuantityOfShoppingCartItemFail: `${namespace}/updateQuantityOfShoppingCartItemFail`,\r\n updateUserInfoTextOfShoppingCartItem: `${namespace}/updateUserInfoTextOfShoppingCartItem`,\r\n updateUserInfoTextOfShoppingCartItemSuccess: `${namespace}/updateUserInfoTextOfShoppingCartItemSuccess`,\r\n updateUserInfoTextOfShoppingCartItemFail: `${namespace}/updateUserInfoTextOfShoppingCartItemFail`,\r\n deleteItemFromActiveShoppingCart: `${namespace}/deleteItemFromActiveShoppingCart`,\r\n deleteItemFromActiveShoppingCartSuccess: `${namespace}/deleteItemFromActiveShoppingCartSuccess`,\r\n deleteItemFromActiveShoppingCartFail: `${namespace}/deleteItemFromActiveShoppingCartFail`,\r\n moveItemToShoppingCart: `${namespace}/moveItemToShoppingCart`,\r\n moveItemToShoppingCartSuccess: `${namespace}/moveItemToShoppingCartSuccess`,\r\n moveItemToShoppingCartFail: `${namespace}/moveItemToShoppingCartFail`,\r\n reloadAvailabilityOfShoppingCartItem: `${namespace}/reloadAvailabilityOfShoppingCartItem`,\r\n reloadAvailabilityOfShoppingCartItemSuccess: `${namespace}/reloadAvailabilityOfShoppingCartItemSuccess`,\r\n reloadAvailabilityOfShoppingCartItemFail: `${namespace}/reloadAvailabilityOfShoppingCartItemFail`,\r\n searchForPartsByPartNumber: `${namespace}/searchForPartsByPartNumber`,\r\n searchForPartsByPartNumberSuccess: `${namespace}/searchForPartsByPartNumberSuccess`,\r\n searchForPartsByPartNumberFail: `${namespace}/searchForPartsByPartNumberFail`,\r\n clearFoundPartsByDirectInput: `${namespace}/clearFoundPartsByDirectInput`,\r\n },\r\n actions: {\r\n loadShoppingCarts: `${namespace}/loadShoppingCarts`,\r\n setActiveShoppingCart: `${namespace}/setActiveShoppingCart`,\r\n addShoppingCart: `${namespace}/addShoppingCart`,\r\n deleteActiveShoppingCart: `${namespace}/deleteActiveShoppingCart`,\r\n addShoppingCartItem: `${namespace}/addShoppingCartItem`,\r\n addShoppingCartItemsInBulk: `${namespace}/addShoppingCartItemsInBulk`,\r\n updateActiveShoppingCartMetadata: `${namespace}/updateActiveShoppingCartMetadata`,\r\n updateActiveShoppingCartShippingMethod: `${namespace}/updateActiveShoppingCartShippingMethod`,\r\n updateActiveShoppingCartOrderMethod: `${namespace}/updateActiveShoppingCartOrderMethod`,\r\n updateQuantityOfShoppingCartItem: `${namespace}/updateQuantityOfShoppingCartItem`,\r\n reloadAvailabilityOfShoppingCartItem: `${namespace}/reloadAvailabilityOfShoppingCartItem`,\r\n updateUserInfoTextOfShoppingCartItem: `${namespace}/updateUserInfoTextOfShoppingCartItem`,\r\n deleteItemFromActiveShoppingCart: `${namespace}/deleteItemFromActiveShoppingCart`,\r\n moveItemToShoppingCart: `${namespace}/moveItemToShoppingCart`,\r\n searchForPartsByPartNumber: `${namespace}/searchForPartsByPartNumber`,\r\n clearFoundPartsByDirectInput: `${namespace}/clearFoundPartsByDirectInput`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, ShoppingCartModuleTypes);\r\nexport interface ShoppingCartState {\r\n activeShoppingCart?: ShoppingCart;\r\n shoppingCarts: ShoppingCart[];\r\n loadingState: LoadingState;\r\n itemsThatAreBeingAdded: { [key: string]: boolean };\r\n itemsThatAreLoadingAvailability: { [key: string]: boolean };\r\n partSearchState: LoadingState;\r\n foundPartsByDirectInput: ExactPartSearchResultInfo[];\r\n orderMethods: OrderMethod[];\r\n}\r\n\r\nconst state: ShoppingCartState = {\r\n activeShoppingCart: undefined,\r\n shoppingCarts: [],\r\n loadingState: LoadingState.Indeterminate,\r\n itemsThatAreBeingAdded: {},\r\n itemsThatAreLoadingAvailability: {},\r\n partSearchState: LoadingState.Indeterminate,\r\n foundPartsByDirectInput: [],\r\n orderMethods: [],\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadShoppingCarts](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n currentState.shoppingCarts = [];\r\n currentState.orderMethods = [];\r\n currentState.activeShoppingCart = undefined;\r\n },\r\n [types.mutations.loadShoppingCartsSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { carts: ShoppingCart[]; orderMethods: OrderMethod[] }\r\n ): void {\r\n let currentCart = payload.carts.find(\r\n (cart) => currentState.activeShoppingCart != null && cart.id === currentState.activeShoppingCart.id\r\n );\r\n if (!currentCart) {\r\n currentCart = payload.carts.find((cart) => cart.isActiveCart);\r\n }\r\n currentState.activeShoppingCart = currentCart!;\r\n currentState.shoppingCarts = payload.carts;\r\n currentState.orderMethods = payload.orderMethods;\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadShoppingCartsFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.setActiveSelectedShoppingCart](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartId: number }\r\n ): void {\r\n const shoppingCart = currentState.shoppingCarts.find((cart) => cart.id === payload.shoppingCartId);\r\n if (shoppingCart) {\r\n currentState.activeShoppingCart = shoppingCart;\r\n }\r\n },\r\n [types.mutations.deleteActiveShoppingCart](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.deleteActiveShoppingCartSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartId: number }\r\n ): void {\r\n if (currentState.shoppingCarts) {\r\n currentState.shoppingCarts = currentState.shoppingCarts.filter(\r\n (cart) => cart.id !== payload.shoppingCartId\r\n );\r\n currentState.activeShoppingCart = currentState.shoppingCarts[0];\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.deleteActiveShoppingCartFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.moveItemToShoppingCart](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.moveItemToShoppingCartSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartItemId: number; targetShoppingCartId: number }\r\n ): void {\r\n if (!currentState.shoppingCarts || !currentState.activeShoppingCart) {\r\n return;\r\n }\r\n const foundItem = currentState.activeShoppingCart.cartItems.find(\r\n (item) => item.id === payload.shoppingCartItemId\r\n );\r\n const targetCart = currentState.shoppingCarts.find((cart) => cart.id === payload.targetShoppingCartId);\r\n if (!foundItem || !targetCart) {\r\n return;\r\n }\r\n targetCart.cartItems.push(foundItem);\r\n currentState.activeShoppingCart.cartItems = currentState.activeShoppingCart.cartItems.filter(\r\n (item) => item.id !== payload.shoppingCartItemId\r\n );\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.moveItemToShoppingCartFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.addShoppingCart](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.addShoppingCartSuccess](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.addShoppingCartFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.addShoppingCartItem](\r\n currentState: ShoppingCartState,\r\n payload: { fullPartId: string; quantity: number }\r\n ): void {\r\n currentState.itemsThatAreBeingAdded = {\r\n ...currentState.itemsThatAreBeingAdded,\r\n [payload.fullPartId]: true,\r\n };\r\n },\r\n [types.mutations.addShoppingCartItemSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { fullPartId: string; quantity: number }\r\n ): void {\r\n currentState.itemsThatAreBeingAdded = {\r\n ...currentState.itemsThatAreBeingAdded,\r\n [payload.fullPartId]: false,\r\n };\r\n },\r\n [types.mutations.updateActiveShoppingCartMetadata](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.updateActiveShoppingCartMetadataSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { userId: string; cartName: string; orderName: string }\r\n ): void {\r\n if (currentState.activeShoppingCart) {\r\n currentState.activeShoppingCart.cartName = payload.cartName;\r\n currentState.activeShoppingCart.orderName = payload.orderName;\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.updateActiveShoppingCartMetadataFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updateActiveShoppingCartShippingMethod](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.updateActiveShoppingCartShippingMethodSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { shippingMethod: ShippingMethod }\r\n ): void {\r\n if (currentState.activeShoppingCart) {\r\n currentState.activeShoppingCart.shippingMethod = payload.shippingMethod;\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.updateActiveShoppingCartShippingMethodFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updateActiveShoppingCartOrderMethod](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.updateActiveShoppingCartOrderMethodSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { orderMethod: string }\r\n ): void {\r\n if (currentState.activeShoppingCart) {\r\n currentState.activeShoppingCart.orderMethod = payload.orderMethod;\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.updateShoppingCartOrderMethod](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartId: number; orderMethod: string }\r\n ): void {\r\n const shoppingCart = currentState.shoppingCarts.find((cart) => cart.id === payload.shoppingCartId);\r\n if (shoppingCart) {\r\n shoppingCart.orderMethod = payload.orderMethod;\r\n }\r\n },\r\n [types.mutations.updateActiveShoppingCartOrderMethodFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updateQuantityOfShoppingCartItem](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.updateQuantityOfShoppingCartItemSuccess](\r\n currentState: ShoppingCartState,\r\n payload: {\r\n userId: string;\r\n shoppingCartItemId: number;\r\n quantity: number;\r\n }\r\n ): void {\r\n if (currentState.activeShoppingCart) {\r\n const cartItem = currentState.activeShoppingCart.cartItems.find(\r\n (item) => item.id === payload.shoppingCartItemId\r\n );\r\n if (cartItem) {\r\n cartItem.quantity = payload.quantity;\r\n }\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.updateQuantityOfShoppingCartItemFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updateUserInfoTextOfShoppingCartItem](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.updateUserInfoTextOfShoppingCartItemSuccess](\r\n currentState: ShoppingCartState,\r\n payload: {\r\n userId: string;\r\n shoppingCartItemId: number;\r\n userInfoText: string;\r\n }\r\n ): void {\r\n if (currentState.activeShoppingCart) {\r\n const cartItem = currentState.activeShoppingCart.cartItems.find(\r\n (item) => item.id === payload.shoppingCartItemId\r\n );\r\n if (cartItem) {\r\n cartItem.userInfoText = payload.userInfoText;\r\n }\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.updateUserInfoTextOfShoppingCartItemFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n\r\n [types.mutations.deleteItemFromActiveShoppingCart](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.deleteItemFromActiveShoppingCartSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { userId: string; shoppingCartItemId: number }\r\n ): void {\r\n if (currentState.activeShoppingCart) {\r\n currentState.activeShoppingCart.cartItems = currentState.activeShoppingCart.cartItems.filter(\r\n (item) => item.id !== payload.shoppingCartItemId\r\n );\r\n }\r\n currentState.loadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.deleteItemFromActiveShoppingCartFail](currentState: ShoppingCartState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.reloadAvailabilityOfShoppingCartItem](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartItemId: number }\r\n ): void {\r\n currentState.itemsThatAreLoadingAvailability = {\r\n ...currentState.itemsThatAreLoadingAvailability,\r\n [payload.shoppingCartItemId]: true,\r\n };\r\n },\r\n [types.mutations.reloadAvailabilityOfShoppingCartItemSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartItemId: number; availability: PartAvailability }\r\n ): void {\r\n currentState.itemsThatAreLoadingAvailability = {\r\n ...currentState.itemsThatAreLoadingAvailability,\r\n [payload.shoppingCartItemId]: false,\r\n };\r\n if (!currentState.activeShoppingCart) {\r\n return;\r\n }\r\n const itemIndex = currentState.activeShoppingCart.cartItems.findIndex(\r\n (item) => item.id === payload.shoppingCartItemId\r\n );\r\n Vue.set(currentState.activeShoppingCart.cartItems, itemIndex, {\r\n ...currentState.activeShoppingCart.cartItems[itemIndex],\r\n partAvailability: payload.availability,\r\n });\r\n },\r\n [types.mutations.reloadAvailabilityOfShoppingCartItemFail](\r\n currentState: ShoppingCartState,\r\n payload: { shoppingCartItemId: number }\r\n ): void {\r\n currentState.itemsThatAreLoadingAvailability = {\r\n ...currentState.itemsThatAreLoadingAvailability,\r\n [payload.shoppingCartItemId]: false,\r\n };\r\n },\r\n [types.mutations.searchForPartsByPartNumber](currentState: ShoppingCartState): void {\r\n currentState.partSearchState = LoadingState.Loading;\r\n },\r\n [types.mutations.searchForPartsByPartNumberSuccess](\r\n currentState: ShoppingCartState,\r\n payload: { parts: ExactPartSearchResultInfo[] }\r\n ): void {\r\n currentState.foundPartsByDirectInput = payload.parts;\r\n currentState.partSearchState = LoadingState.Loaded;\r\n },\r\n [types.mutations.searchForPartsByPartNumberFail](currentState: ShoppingCartState): void {\r\n currentState.foundPartsByDirectInput = [];\r\n currentState.partSearchState = LoadingState.Failed;\r\n },\r\n [types.mutations.clearFoundPartsByDirectInput](currentState: ShoppingCartState): void {\r\n currentState.foundPartsByDirectInput = [];\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n async [types.actions.loadShoppingCarts](context: ActionContext): Promise {\r\n context.commit(types.mutations.loadShoppingCarts);\r\n try {\r\n const carts = await shoppingCartService.getShoppingCarts();\r\n const orderMethods = await shoppingCartService.getOrderMethods();\r\n if (!UserHelper.hasShippingCosts()) {\r\n // For customers who don't have shipping costs, we have to check if order methods are set and valid.\r\n // Otherwise initialize with first value of order methods.\r\n for (const cart of carts) {\r\n const isOrderMethodValid =\r\n orderMethods.find((method) => method.value === cart.orderMethod) !== undefined;\r\n if (!isOrderMethodValid) {\r\n const firstOrderMethod = orderMethods[0].value;\r\n await shoppingCartService.updateShoppingCartOrderMethod(cart.id, firstOrderMethod);\r\n context.commit(types.mutations.updateShoppingCartOrderMethod, {\r\n shoppingCartId: cart.id,\r\n orderMethod: firstOrderMethod,\r\n });\r\n }\r\n }\r\n }\r\n context.commit(types.mutations.loadShoppingCartsSuccess, {\r\n carts,\r\n orderMethods,\r\n });\r\n } catch (error) {\r\n context.commit(types.mutations.loadShoppingCartsFail);\r\n }\r\n },\r\n async [types.actions.setActiveShoppingCart](\r\n context: ActionContext,\r\n payload: { shoppingCartId: number }\r\n ): Promise {\r\n if (context.state.shoppingCarts.length > 0) {\r\n context.commit(types.mutations.setActiveSelectedShoppingCart, payload);\r\n if (UserHelper.isAuthenticated()) {\r\n await shoppingCartService.setActiveShoppingCart(payload.shoppingCartId);\r\n }\r\n }\r\n },\r\n async [types.actions.deleteActiveShoppingCart](\r\n context: ActionContext\r\n ): Promise {\r\n if (!context.state.activeShoppingCart || context.state.shoppingCarts.length <= 1) {\r\n return;\r\n }\r\n const cartIdToDelete = context.state.activeShoppingCart.id;\r\n const cartNameToDelete = context.state.activeShoppingCart.cartName;\r\n try {\r\n context.commit(types.mutations.deleteActiveShoppingCart);\r\n await shoppingCartService.deleteShoppingCart(cartIdToDelete);\r\n context.commit(types.mutations.deleteActiveShoppingCartSuccess, {\r\n shoppingCartId: cartIdToDelete,\r\n });\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getStringWithParameters(\r\n l10n.SHOPPING_CART.DELETE_CART_SUCCESS,\r\n cartNameToDelete\r\n ),\r\n type: NotificationType.Success,\r\n },\r\n { root: true }\r\n );\r\n } catch (error) {\r\n context.commit(types.mutations.deleteActiveShoppingCartFail);\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getStringWithParameters(l10n.SHOPPING_CART.DELETE_CART_FAILED, cartNameToDelete),\r\n type: NotificationType.Error,\r\n },\r\n { root: true }\r\n );\r\n }\r\n },\r\n async [types.actions.addShoppingCart](\r\n context: ActionContext,\r\n payload: { cartName: string }\r\n ): Promise {\r\n context.commit(types.mutations.addShoppingCart);\r\n let shoppingCartId;\r\n try {\r\n shoppingCartId = await shoppingCartService.addShoppingCart(payload.cartName);\r\n context.commit(types.mutations.addShoppingCartSuccess);\r\n } catch (error) {\r\n context.commit(types.mutations.addShoppingCartFail);\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getString(l10n.SHOPPING_CART.CREATE_NEW_CART_FAILED),\r\n type: NotificationType.Error,\r\n },\r\n { root: true }\r\n );\r\n return;\r\n }\r\n await context.dispatch(types.actions.loadShoppingCarts);\r\n await context.dispatch(types.actions.setActiveShoppingCart, {\r\n shoppingCartId,\r\n });\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getString(l10n.SHOPPING_CART.CREATE_NEW_CART_SUCCESS),\r\n type: NotificationType.Success,\r\n },\r\n { root: true }\r\n );\r\n },\r\n async [types.actions.addShoppingCartItem](\r\n context: ActionContext,\r\n payload: {\r\n fullPartId: string;\r\n partNumber: string;\r\n quantity: number;\r\n }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.addShoppingCartItem, payload);\r\n try {\r\n await shoppingCartService.addShoppingCartItem(\r\n context.state.activeShoppingCart.id,\r\n payload.fullPartId,\r\n payload.quantity\r\n );\r\n context.commit(types.mutations.addShoppingCartItemSuccess, payload);\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getStringWithParameters(l10n.SHOPPING_CART.ADD_SUCCESS, payload.partNumber),\r\n type: NotificationType.Success,\r\n },\r\n { root: true }\r\n );\r\n context.dispatch(types.actions.loadShoppingCarts);\r\n analyticsService\r\n .getShoppingCartItemAnalytics(payload.fullPartId, payload.quantity)\r\n .then((shoppingCartItemAnalytics) => {\r\n if (shoppingCartItemAnalytics == null) {\r\n return;\r\n }\r\n trackAddItemsToShoppingCart([shoppingCartItemAnalytics]);\r\n });\r\n } catch (error) {\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getStringWithParameters(l10n.SHOPPING_CART.ADD_FAILED, payload.partNumber),\r\n type: NotificationType.Error,\r\n },\r\n { root: true }\r\n );\r\n context.dispatch(types.actions.loadShoppingCarts);\r\n }\r\n },\r\n async [types.actions.addShoppingCartItemsInBulk](\r\n context: ActionContext,\r\n payload: { items: Array<{ partId: string; quantity: number; userInfoText: string }>; cartId?: number }\r\n ): Promise {\r\n try {\r\n if (payload.cartId === undefined) {\r\n // create new cart first\r\n let i = 1;\r\n let availableCartName;\r\n const cartNames = context.state.shoppingCarts.map((cart) => cart.cartName);\r\n while (availableCartName === undefined) {\r\n const cartNameToTry = `Cart ${i}`;\r\n if (!cartNames.includes(cartNameToTry)) {\r\n availableCartName = cartNameToTry;\r\n break;\r\n }\r\n i++;\r\n }\r\n\r\n await context.dispatch(types.actions.addShoppingCart, { cartName: availableCartName });\r\n payload.cartId = context.state.activeShoppingCart!.id;\r\n }\r\n\r\n const foundCart = context.state.shoppingCarts.find((cart) => cart.id === payload.cartId);\r\n if (!foundCart) {\r\n return;\r\n }\r\n\r\n const cartItems = payload.items.map((item) => {\r\n return { fullPartId: item.partId, quantity: item.quantity };\r\n });\r\n const chunkedCartItems = _.chunk(cartItems, 100);\r\n const promises = chunkedCartItems.map((items) =>\r\n shoppingCartService.addShoppingCartItemsBulk(foundCart.id, items)\r\n );\r\n await Promise.all(promises);\r\n\r\n await context.dispatch(types.actions.loadShoppingCarts);\r\n\r\n payload.items.map((item) => {\r\n const cartItem = context.state.activeShoppingCart!.cartItems.find(\r\n (ci) => ci.fullPartId === item.partId\r\n );\r\n if (cartItem && item.userInfoText) {\r\n shoppingCartService.updateUserInfoTextOfShoppingCartItem(\r\n foundCart.id,\r\n cartItem.id,\r\n item.userInfoText\r\n );\r\n }\r\n });\r\n\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getString(l10n.SHOPPING_CART.ADD_BULK_SUCCESS),\r\n type: NotificationType.Success,\r\n },\r\n { root: true }\r\n );\r\n\r\n analyticsService.getMultipleShoppingCartItemAnalytics(payload.items).then(trackAddItemsToShoppingCart);\r\n } catch (error) {\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getString(l10n.SHOPPING_CART.ADD_BULK_FAILED),\r\n type: NotificationType.Error,\r\n },\r\n { root: true }\r\n );\r\n }\r\n },\r\n async [types.actions.updateActiveShoppingCartMetadata](\r\n context: ActionContext,\r\n payload: { cartName: string; orderName: string }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.updateActiveShoppingCartMetadata);\r\n try {\r\n await shoppingCartService.updateShoppingCartMetadata(\r\n context.state.activeShoppingCart.id,\r\n payload.cartName,\r\n payload.orderName\r\n );\r\n context.commit(types.mutations.updateActiveShoppingCartMetadataSuccess, payload);\r\n } catch (error) {\r\n context.commit(types.mutations.updateActiveShoppingCartMetadataFail);\r\n }\r\n },\r\n async [types.actions.updateActiveShoppingCartShippingMethod](\r\n context: ActionContext,\r\n payload: { shippingMethod: ShippingMethod }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.updateActiveShoppingCartShippingMethod);\r\n try {\r\n await shoppingCartService.updateShoppingCartShippingMethod(\r\n context.state.activeShoppingCart.id,\r\n payload.shippingMethod\r\n );\r\n context.commit(types.mutations.updateActiveShoppingCartShippingMethodSuccess, payload);\r\n } catch (error) {\r\n context.commit(types.mutations.updateActiveShoppingCartShippingMethodFail);\r\n }\r\n },\r\n async [types.actions.updateActiveShoppingCartOrderMethod](\r\n context: ActionContext,\r\n payload: { orderMethod: string }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.updateActiveShoppingCartOrderMethod);\r\n try {\r\n await shoppingCartService.updateShoppingCartOrderMethod(\r\n context.state.activeShoppingCart.id,\r\n payload.orderMethod\r\n );\r\n context.commit(types.mutations.updateActiveShoppingCartOrderMethodSuccess, payload);\r\n // change of order method can change item prices, therefore reload shopping carts\r\n context.dispatch(types.actions.loadShoppingCarts);\r\n } catch (error) {\r\n context.commit(types.mutations.updateActiveShoppingCartOrderMethodFail);\r\n }\r\n },\r\n async [types.actions.updateQuantityOfShoppingCartItem](\r\n context: ActionContext,\r\n payload: { shoppingCartItemId: number; quantity: number }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.updateQuantityOfShoppingCartItem);\r\n try {\r\n await shoppingCartService.updateQuantityOfShoppingCartItem(\r\n context.state.activeShoppingCart.id,\r\n payload.shoppingCartItemId,\r\n payload.quantity\r\n );\r\n context.commit(types.mutations.updateQuantityOfShoppingCartItemSuccess, payload);\r\n context.dispatch(types.actions.reloadAvailabilityOfShoppingCartItem, {\r\n shoppingCartItemId: payload.shoppingCartItemId,\r\n });\r\n } catch (e) {\r\n context.commit(types.mutations.updateQuantityOfShoppingCartItemFail);\r\n }\r\n },\r\n async [types.actions.updateUserInfoTextOfShoppingCartItem](\r\n context: ActionContext,\r\n payload: { shoppingCartItemId: number; userInfoText: string }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.updateUserInfoTextOfShoppingCartItem);\r\n try {\r\n await shoppingCartService.updateUserInfoTextOfShoppingCartItem(\r\n context.state.activeShoppingCart.id,\r\n payload.shoppingCartItemId,\r\n payload.userInfoText\r\n );\r\n context.commit(types.mutations.updateUserInfoTextOfShoppingCartItemSuccess, payload);\r\n } catch (e) {\r\n context.commit(types.mutations.updateUserInfoTextOfShoppingCartItemFail);\r\n }\r\n },\r\n async [types.actions.deleteItemFromActiveShoppingCart](\r\n context: ActionContext,\r\n payload: { shoppingCartItemId: number }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n context.commit(types.mutations.deleteItemFromActiveShoppingCart);\r\n try {\r\n await shoppingCartService.deleteShoppingCartItem(\r\n context.state.activeShoppingCart.id,\r\n payload.shoppingCartItemId\r\n );\r\n context.commit(types.mutations.deleteItemFromActiveShoppingCartSuccess, payload);\r\n } catch (e) {\r\n context.commit(types.mutations.deleteItemFromActiveShoppingCartFail);\r\n }\r\n },\r\n async [types.actions.moveItemToShoppingCart](\r\n context: ActionContext,\r\n payload: { shoppingCartItemId: number; targetShoppingCartId: number }\r\n ): Promise {\r\n const targetCart = context.state.shoppingCarts.find((cart) => cart.id === payload.targetShoppingCartId);\r\n if (!context.state.activeShoppingCart || !targetCart) {\r\n return;\r\n }\r\n\r\n context.commit(types.mutations.moveItemToShoppingCart);\r\n try {\r\n await shoppingCartService.moveItemToShoppingCart(\r\n context.state.activeShoppingCart.id,\r\n payload.shoppingCartItemId,\r\n payload.targetShoppingCartId\r\n );\r\n context.commit(types.mutations.moveItemToShoppingCartSuccess, payload);\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getStringWithParameters(\r\n l10n.SHOPPING_CART.MOVE_ITEM_SUCCESS,\r\n targetCart.cartName\r\n ),\r\n type: NotificationType.Success,\r\n },\r\n { root: true }\r\n );\r\n } catch (error) {\r\n context.commit(types.mutations.moveItemToShoppingCartFail);\r\n context.dispatch(\r\n NotificationModuleTypes.actions.notify,\r\n {\r\n message: ResHelper.getStringWithParameters(\r\n l10n.SHOPPING_CART.MOVE_ITEM_FAILED,\r\n targetCart.cartName\r\n ),\r\n type: NotificationType.Error,\r\n },\r\n { root: true }\r\n );\r\n }\r\n },\r\n async [types.actions.reloadAvailabilityOfShoppingCartItem](\r\n context: ActionContext,\r\n payload: { shoppingCartItemId: number }\r\n ): Promise {\r\n if (!context.state.activeShoppingCart) {\r\n return;\r\n }\r\n\r\n const cartItem = context.state.activeShoppingCart.cartItems.find(\r\n (item) => item.id === payload.shoppingCartItemId\r\n );\r\n if (!cartItem) {\r\n return;\r\n }\r\n let orderMethod;\r\n if (!UserHelper.hasShippingCosts()) {\r\n orderMethod = context.state.activeShoppingCart.orderMethod;\r\n }\r\n\r\n context.commit(types.mutations.reloadAvailabilityOfShoppingCartItem, {\r\n shoppingCartItemId: payload.shoppingCartItemId,\r\n });\r\n try {\r\n const availability = await partService.getAvailabilityOfPart(\r\n cartItem.fullPartId,\r\n cartItem.quantity,\r\n orderMethod\r\n );\r\n context.commit(types.mutations.reloadAvailabilityOfShoppingCartItemSuccess, {\r\n shoppingCartItemId: payload.shoppingCartItemId,\r\n availability,\r\n });\r\n } catch (error) {\r\n context.commit(types.mutations.reloadAvailabilityOfShoppingCartItemFail, {\r\n shoppingCartItemId: payload.shoppingCartItemId,\r\n });\r\n }\r\n return;\r\n },\r\n async [types.actions.searchForPartsByPartNumber](\r\n context: ActionContext,\r\n payload: { partNumber: string }\r\n ): Promise {\r\n context.commit(types.mutations.searchForPartsByPartNumber);\r\n try {\r\n const partSearchResult = await searchService.searchPartsByPartNumber(payload.partNumber);\r\n context.commit(types.mutations.searchForPartsByPartNumberSuccess, {\r\n parts: partSearchResult.resultInfos,\r\n });\r\n } catch (error) {\r\n context.commit(types.mutations.searchForPartsByPartNumberFail);\r\n }\r\n },\r\n [types.actions.clearFoundPartsByDirectInput](context: ActionContext): void {\r\n context.commit(types.mutations.clearFoundPartsByDirectInput);\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.loadingState]: (currentState) => currentState.loadingState,\r\n [types.getters.shoppingCarts]: (currentState) => currentState.shoppingCarts,\r\n [types.getters.activeShoppingCart]: (currentState) => currentState.activeShoppingCart,\r\n [types.getters.itemsThatAreBeingAddded](currentState: ShoppingCartState): { [key: string]: boolean } {\r\n return currentState.itemsThatAreBeingAdded;\r\n },\r\n [types.getters.isItemCurrentlyBeingAdded](currentState: ShoppingCartState): (fullPartId: string) => boolean {\r\n return (fullPartId: string) => currentState.itemsThatAreBeingAdded[fullPartId];\r\n },\r\n [types.getters.hasActiveShoppingCart](currentState: ShoppingCartState): boolean {\r\n return currentState.activeShoppingCart != null;\r\n },\r\n [types.getters.isItemLoadingAvailability](\r\n currentState: ShoppingCartState\r\n ): (shoppingCartItemId: number) => boolean {\r\n return (shoppingCartItemId: number) => currentState.itemsThatAreLoadingAvailability[shoppingCartItemId];\r\n },\r\n [types.getters.partSearchState]: (currentState) => currentState.partSearchState,\r\n [types.getters.foundPartsByDirectInput]: (currentState) => currentState.foundPartsByDirectInput,\r\n [types.getters.orderMethods]: (currentState) => currentState.orderMethods,\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import {OrderInfo} from '@/entities/OrderInfo';\r\nimport {ResHelper} from '@/helper/ResHelper';\r\nimport {apiClient} from './api-client';\r\nimport URI from 'urijs';\r\n\r\n/**\r\n * Service to retrieve orders.\r\n */\r\nexport class OrdersService {\r\n private get baseUrl(): URI {\r\n return new URI('/api/orders');\r\n }\r\n\r\n public async getAllOrdersForUser(): Promise {\r\n const res = await apiClient.get(\r\n this.baseUrl.toString()\r\n );\r\n return res.data;\r\n }\r\n}\r\n","import { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { OrdersService } from '@/services/orders-service';\r\nimport { OrderInfo } from '@/entities/OrderInfo';\r\n\r\nconst ordersService = new OrdersService();\r\n\r\n// name must match import name in rootState\r\nconst namespace = 'ordersForUser';\r\n\r\nexport const OrdersForUserModuleTypes = {\r\n getters: {\r\n orderResults: `${namespace}/orderResults`,\r\n orderResultsLoadingState: `${namespace}/orderResultsLoadingState`,\r\n },\r\n mutations: {\r\n loadOrderResults: `${namespace}/loadOrderResults`,\r\n loadOrderResultsSuccess: `${namespace}/loadOrderResultsSuccess`,\r\n loadOrderResultsFail: `${namespace}/loadOrderResultsFail`,\r\n setFilter: `${namespace}/setFilter`,\r\n },\r\n actions: {\r\n loadOrders: `${namespace}/loadOrders`,\r\n setFilter: `${namespace}/setFilter`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, OrdersForUserModuleTypes);\r\n\r\nexport interface OrdersForUserState {\r\n orderResults: OrderInfo[];\r\n orderResultsLoadingState: LoadingState;\r\n orderResultsFiltered: OrderInfo[];\r\n}\r\n\r\nconst state: OrdersForUserState = {\r\n orderResults: [],\r\n orderResultsLoadingState: LoadingState.Indeterminate,\r\n orderResultsFiltered: [],\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadOrderResults](currentState: OrdersForUserState): void {\r\n currentState.orderResultsLoadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.loadOrderResultsSuccess](currentState: OrdersForUserState, payload: OrderInfo[]): void {\r\n currentState.orderResults = payload;\r\n currentState.orderResultsFiltered = payload;\r\n currentState.orderResultsLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadOrderResultsFail](currentState: OrdersForUserState): void {\r\n currentState.orderResults = [];\r\n currentState.orderResultsFiltered = [];\r\n currentState.orderResultsLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.setFilter](currentState: OrdersForUserState, payload: OrderInfo[]): void {\r\n currentState.orderResultsFiltered = payload;\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n [types.actions.loadOrders](context: ActionContext, payload: string): void {\r\n context.commit(types.mutations.loadOrderResults);\r\n ordersService.getAllOrdersForUser()\r\n .then((response) => {\r\n context.commit(types.mutations.loadOrderResultsSuccess, response);\r\n })\r\n .catch((e) => {\r\n context.commit(types.mutations.loadOrderResultsFail);\r\n });\r\n },\r\n [types.actions.setFilter](context: ActionContext, payload: string ): void {\r\n const lowerFilterTerm = payload.toLowerCase();\r\n if (payload.length > 0) {\r\n const result = context.state.orderResults.filter((item) =>\r\n item.number.toLowerCase().includes(lowerFilterTerm) ||\r\n item.name.toLowerCase().includes(lowerFilterTerm) ||\r\n item.lines.find((subItem) => subItem.dmsPartNumber.toLowerCase().includes(lowerFilterTerm)) !== undefined);\r\n context.commit(types.mutations.setFilter, result);\r\n } else {\r\n context.commit(types.mutations.setFilter, context.state.orderResults);\r\n }\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.orderResults]: (currentState) => {\r\n return currentState.orderResultsFiltered;\r\n },\r\n [types.getters.orderResultsLoadingState]: (currentState) => {\r\n return currentState.orderResultsLoadingState;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import { RelatedPartsInfo } from '../entities/RelatedPartsInfo';\r\nimport URI from 'urijs';\r\nimport { apiClient, isAxiosError } from './api-client';\r\n/**\r\n * Service to retrieve related parts for a given part.\r\n */\r\nexport class RelatedPartsService {\r\n private get baseUrl(): URI {\r\n return new URI('/api/related-parts');\r\n }\r\n\r\n public async getRelatedPartInfo(\r\n id: string\r\n ): Promise {\r\n try {\r\n const res = await apiClient.get(\r\n this.baseUrl.segmentCoded(id).toString()\r\n );\r\n return res.data;\r\n } catch (error) {\r\n if (\r\n isAxiosError(error) &&\r\n error.response &&\r\n error.response.status === 404\r\n ) {\r\n return null;\r\n }\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { RelatedPartsService } from '../../services/related-parts-service';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { RelatedPartsInfo } from '@/entities/RelatedPartsInfo';\r\nimport { RelatedPart } from '@/entities/RelatedPart';\r\nimport { MutationTree, ActionTree, ActionContext, GetterTree, Module } from 'vuex';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { RootState } from '../rootState';\r\n\r\nconst relatedPartsService = new RelatedPartsService();\r\n\r\nconst namespace = 'relatedParts';\r\n\r\nexport const RelatedPartsModuleTypes = {\r\n getters: {\r\n partId: `${namespace}/partId`,\r\n alternativeParts: `${namespace}/alternativeParts`,\r\n replacementParts: `${namespace}/replacementParts`,\r\n childBrandParts: `${namespace}/childBrandParts`,\r\n relatedParts: `${namespace}/relatedParts`,\r\n relatedPartsLoadingState: `${namespace}/relatedPartsLoadingState`,\r\n },\r\n mutations: {\r\n loadRelatedParts: `${namespace}/loadRelatedParts`,\r\n unloadRelatedParts: `${namespace}/unloadRelatedParts`,\r\n loadRelatedPartsSuccess: `${namespace}/loadRelatedPartsSuccess`,\r\n loadRelatedPartsFail: `${namespace}/loadRelatedPartsFail`,\r\n },\r\n actions: {\r\n loadRelatedParts: `${namespace}/loadRelatedParts`,\r\n unloadRelatedParts: `${namespace}/unloadRelatedParts`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, RelatedPartsModuleTypes);\r\n\r\nexport interface RelatedPartsState {\r\n relatedPartsLoadingState: LoadingState | null;\r\n relatedParts: { [id: string]: RelatedPartsInfo; };\r\n partId: string | null;\r\n}\r\n\r\nconst state: RelatedPartsState = {\r\n relatedPartsLoadingState: LoadingState.Indeterminate,\r\n relatedParts: {},\r\n partId: null,\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadRelatedParts](currentState: RelatedPartsState, payload: string): void {\r\n currentState.relatedPartsLoadingState = LoadingState.Loading;\r\n currentState.partId = payload;\r\n },\r\n [types.mutations.loadRelatedPartsSuccess](currentState: RelatedPartsState, payload: RelatedPartsInfo): void {\r\n currentState.relatedPartsLoadingState = LoadingState.Loaded;\r\n currentState.relatedParts = {\r\n ...currentState.relatedParts,\r\n [payload.partId]: payload,\r\n };\r\n },\r\n [types.mutations.loadRelatedPartsFail](currentState: RelatedPartsState): void {\r\n currentState.relatedPartsLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.unloadRelatedParts](currentState: RelatedPartsState, payload: string): void {\r\n currentState.relatedPartsLoadingState = LoadingState.Indeterminate;\r\n currentState.partId = null;\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n [types.actions.loadRelatedParts](context: ActionContext, payload: { id: string }): void {\r\n context.commit(types.mutations.loadRelatedParts, payload.id);\r\n if (!context.state.relatedParts[payload.id]) {\r\n relatedPartsService.getRelatedPartInfo(payload.id)\r\n .then((response) => {\r\n context.commit(types.mutations.loadRelatedPartsSuccess, response);\r\n })\r\n .catch((e) => {\r\n context.commit(types.mutations.loadRelatedPartsFail);\r\n });\r\n } else {\r\n context.commit(types.mutations.loadRelatedPartsSuccess, context.state.relatedParts[payload.id]);\r\n }\r\n },\r\n [types.actions.unloadRelatedParts](context: ActionContext): void {\r\n context.commit(types.mutations.unloadRelatedParts);\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.partId]: (currentState) => {\r\n return currentState.partId;\r\n },\r\n [types.getters.alternativeParts]: (currentState) => {\r\n return currentState.partId && currentState.relatedParts[currentState.partId] && currentState.relatedParts[currentState.partId].alternativeParts;\r\n },\r\n [types.getters.replacementParts]: (currentState) => {\r\n return currentState.partId && currentState.relatedParts[currentState.partId] && currentState.relatedParts[currentState.partId].replacementParts;\r\n },\r\n [types.getters.childBrandParts]: (currentState) => {\r\n return currentState.partId && currentState.relatedParts[currentState.partId] && currentState.relatedParts[currentState.partId].childBrandParts;\r\n },\r\n [types.getters.relatedParts]: (currentState) => {\r\n return currentState.partId &&\r\n currentState.relatedParts[currentState.partId] &&\r\n [...currentState.relatedParts[currentState.partId].replacementParts, ...currentState.relatedParts[currentState.partId].alternativeParts];\r\n },\r\n [types.getters.relatedPartsLoadingState]: (currentState) => {\r\n return currentState.relatedPartsLoadingState;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","export enum ShoppingCartUploadProcessingState {\r\n Idle,\r\n Running,\r\n Finished,\r\n Error,\r\n}\r\n","export enum ShoppingCartUploadResultType {\r\n Found = 'Found',\r\n Replacement = 'Replacement',\r\n Used = 'Used',\r\n NotFound = 'NotFound',\r\n}\r\n","import { apiClient } from './api-client';\r\nimport { ShoppingCartUploadResult } from '@/entities/shopping-cart-upload/ShoppingCartUploadResult';\r\nimport { ShoppingCartUploadInfo } from '@/entities/shopping-cart-upload/ShoppingCartUploadInfo';\r\nimport URI from 'urijs';\r\n\r\n/**\r\n * Service for shopping cart upload operations.\r\n */\r\nexport class ShoppingCartUploadService {\r\n private get baseUrl(): string {\r\n return '/api/shopping-cart-upload';\r\n }\r\n\r\n public async getCurrentUploadState(): Promise {\r\n const res = await apiClient.get(`${this.baseUrl}/state`);\r\n return res.data;\r\n }\r\n\r\n public async processFile(file: File, includeUsedParts: boolean): Promise {\r\n const formData = new FormData();\r\n formData.append('fileInput', file);\r\n const url = includeUsedParts\r\n ? `${this.baseUrl}/search/includeUsedParts`\r\n : `${this.baseUrl}/search/excludeUsedParts`;\r\n const res = await apiClient.post(url, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n });\r\n return res.data;\r\n }\r\n\r\n public async updateItem(partId: string, quantity: number): Promise {\r\n const url = new URI(`${this.baseUrl}/update`)\r\n .addQuery('partId', partId)\r\n .addQuery('quantity', quantity)\r\n .toString();\r\n return await apiClient.post(url);\r\n }\r\n}\r\n","import { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { ShoppingCartUploadService } from '@/services/shopping-cart-upload.service';\r\nimport { ShoppingCartUploadInfo } from '@/entities/shopping-cart-upload/ShoppingCartUploadInfo';\r\nimport { ShoppingCartUploadProcessingState } from '@/entities/shopping-cart-upload/ShoppingCartUploadProcessingState';\r\nimport { PartService } from '@/services/part-service';\r\nimport { ShoppingCartUploadResultType } from '@/entities/shopping-cart-upload/ShoppingCartUploadResultType';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\n\r\nconst shoppingCartUploadService = new ShoppingCartUploadService();\r\nconst partService = new PartService();\r\n\r\nconst namespace = 'shoppingCartUpload';\r\n\r\nexport const ShoppingCartUploadModuleTypes = {\r\n getters: {\r\n loadingState: `${namespace}/loadingState`,\r\n uploadInfo: `${namespace}/uploadInfo`,\r\n selectedPartIds: `${namespace}/selectedPartIds`,\r\n itemsThatAreLoadingAvailability: `${namespace}/itemsThatAreLoadingAvailability`,\r\n },\r\n mutations: {\r\n updateLoadingState: `${namespace}/updateLoadingState`,\r\n uploadFileAndStartSearch: `${namespace}/uploadFileAndStartSearch`,\r\n uploadFileAndStartSearchFail: `${namespace}/uploadFileAndStartSearchFail`,\r\n setSelectedPartIds: `${namespace}/setSelectedPartIds`,\r\n selectPartWithId: `${namespace}/selectPartWithId`,\r\n deselectPartWithId: `${namespace}/deselectPartWithId`,\r\n updateCurrentUploadInfo: `${namespace}/updateCurrentUploadInfo`,\r\n reloadAvailabilityOfShoppingCartUploadItem: `${namespace}/reloadAvailabilityOfShoppingCartUploadItem`,\r\n reloadAvailabilityOfShoppingCartUploadItemSuccess: `${namespace}/reloadAvailabilityOfShoppingCartUploadItemSuccess`,\r\n reloadAvailabilityOfShoppingCartUploadItemFail: `${namespace}/reloadAvailabilityOfShoppingCartUploadItemFail`,\r\n },\r\n actions: {\r\n uploadFileAndStartSearch: `${namespace}/uploadFileAndStartSearch`,\r\n updateCurrentUploadInfo: `${namespace}/updateCurrentUploadInfo`,\r\n reloadAvailabilityOfShoppingCartUploadItem: `${namespace}/reloadAvailabilityOfShoppingCartUploadItem`,\r\n updateQuantityOfShoppingCartUploadItem: `${namespace}/updateQuantityOfShoppingCartUploadItem`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, ShoppingCartUploadModuleTypes);\r\nexport interface ShoppingCartUploadState {\r\n loadingState: LoadingState;\r\n uploadInfo?: ShoppingCartUploadInfo;\r\n selectedPartIds: string[];\r\n itemsThatAreLoadingAvailability: string[];\r\n}\r\n\r\nconst state: ShoppingCartUploadState = {\r\n loadingState: LoadingState.Loading,\r\n uploadInfo: undefined,\r\n selectedPartIds: [],\r\n itemsThatAreLoadingAvailability: [],\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.updateLoadingState](\r\n currentState: ShoppingCartUploadState,\r\n payload: { loadingState: LoadingState }\r\n ): void {\r\n currentState.loadingState = payload.loadingState;\r\n },\r\n [types.mutations.uploadFileAndStartSearch](currentState: ShoppingCartUploadState): void {\r\n currentState.loadingState = LoadingState.Loading;\r\n currentState.uploadInfo = undefined;\r\n },\r\n [types.mutations.uploadFileAndStartSearchFail](currentState: ShoppingCartUploadState): void {\r\n currentState.loadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.setSelectedPartIds](currentState: ShoppingCartUploadState, payload: { partIds: string[] }): void {\r\n currentState.selectedPartIds = payload.partIds;\r\n },\r\n [types.mutations.selectPartWithId](currentState: ShoppingCartUploadState, payload: { partId: string }): void {\r\n currentState.selectedPartIds = [...currentState.selectedPartIds, payload.partId];\r\n },\r\n [types.mutations.deselectPartWithId](currentState: ShoppingCartUploadState, payload: { partId: string }): void {\r\n currentState.selectedPartIds = currentState.selectedPartIds.filter((id) => id !== payload.partId);\r\n },\r\n [types.mutations.updateCurrentUploadInfo](\r\n currentState: ShoppingCartUploadState,\r\n payload: { info: ShoppingCartUploadInfo }\r\n ): void {\r\n currentState.uploadInfo = payload.info;\r\n if (payload.info.state !== ShoppingCartUploadProcessingState.Running) {\r\n currentState.loadingState = LoadingState.Loaded;\r\n }\r\n },\r\n [types.mutations.reloadAvailabilityOfShoppingCartUploadItem](\r\n currentState: ShoppingCartUploadState,\r\n payload: { partId: string }\r\n ): void {\r\n currentState.itemsThatAreLoadingAvailability.push(payload.partId);\r\n },\r\n [types.mutations.reloadAvailabilityOfShoppingCartUploadItemSuccess](\r\n currentState: ShoppingCartUploadState,\r\n payload: { partId: string; type: ShoppingCartUploadResultType; availability: PartAvailability }\r\n ): void {\r\n currentState.itemsThatAreLoadingAvailability = currentState.itemsThatAreLoadingAvailability.filter(\r\n (id) => id !== payload.partId\r\n );\r\n\r\n if (!currentState.uploadInfo || !currentState.uploadInfo.result) {\r\n return;\r\n }\r\n\r\n let item = null;\r\n switch (payload.type) {\r\n case ShoppingCartUploadResultType.Found:\r\n item = currentState.uploadInfo.result.foundParts.find((part) => part.partId === payload.partId);\r\n break;\r\n case ShoppingCartUploadResultType.Replacement:\r\n item = currentState.uploadInfo.result.replacementParts.find((part) => part.partId === payload.partId);\r\n break;\r\n case ShoppingCartUploadResultType.Used:\r\n item = currentState.uploadInfo.result.usedParts.find((part) => part.partId === payload.partId);\r\n break;\r\n }\r\n\r\n if (!item) {\r\n return;\r\n }\r\n\r\n item.partAvailability = payload.availability;\r\n },\r\n [types.mutations.reloadAvailabilityOfShoppingCartUploadItemFail](\r\n currentState: ShoppingCartUploadState,\r\n payload: { partId: string }\r\n ): void {\r\n currentState.itemsThatAreLoadingAvailability = currentState.itemsThatAreLoadingAvailability.filter(\r\n (id) => id !== payload.partId\r\n );\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n async [types.actions.uploadFileAndStartSearch](\r\n context: ActionContext,\r\n payload: { file: File; includeUsedParts: boolean }\r\n ): Promise {\r\n context.commit(types.mutations.uploadFileAndStartSearch);\r\n try {\r\n await shoppingCartUploadService.processFile(payload.file, payload.includeUsedParts);\r\n } catch (error) {\r\n context.commit(types.mutations.uploadFileAndStartSearchFail);\r\n }\r\n },\r\n async [types.actions.updateCurrentUploadInfo](\r\n context: ActionContext\r\n ): Promise {\r\n const info = await shoppingCartUploadService.getCurrentUploadState();\r\n context.commit(types.mutations.updateCurrentUploadInfo, { info });\r\n if (info.result) {\r\n const partIds = info.result.foundParts.map((foundPart) => foundPart.partId);\r\n context.commit(types.mutations.setSelectedPartIds, { partIds });\r\n }\r\n },\r\n async [types.actions.reloadAvailabilityOfShoppingCartUploadItem](\r\n context: ActionContext,\r\n payload: { partId: string; quantity: number; type: ShoppingCartUploadResultType }\r\n ): Promise {\r\n context.commit(types.mutations.reloadAvailabilityOfShoppingCartUploadItem, {\r\n partId: payload.partId,\r\n });\r\n try {\r\n const availability = await partService.getAvailabilityOfPart(payload.partId, payload.quantity);\r\n context.commit(types.mutations.reloadAvailabilityOfShoppingCartUploadItemSuccess, {\r\n partId: payload.partId,\r\n type: payload.type,\r\n availability,\r\n });\r\n } catch (error) {\r\n context.commit(types.mutations.reloadAvailabilityOfShoppingCartUploadItemFail, {\r\n partId: payload.partId,\r\n });\r\n }\r\n return;\r\n },\r\n async [types.actions.updateQuantityOfShoppingCartUploadItem](\r\n context: ActionContext,\r\n payload: { partId: string; quantity: number }\r\n ): Promise {\r\n await shoppingCartUploadService.updateItem(payload.partId, payload.quantity);\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.loadingState]: (currentState) => currentState.loadingState,\r\n [types.getters.selectedPartIds]: (currentState) => currentState.selectedPartIds,\r\n [types.getters.uploadInfo]: (currentState) => currentState.uploadInfo,\r\n [types.getters.itemsThatAreLoadingAvailability]: (currentState) => currentState.itemsThatAreLoadingAvailability,\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { MutationTree, ActionTree, GetterTree, Module, ActionContext } from 'vuex';\r\nimport { PartSearchService } from '@/services/part-search-service';\r\nimport { RootState } from '../rootState';\r\nimport removeNamespace from '../removeNamespace';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\nimport { PartService } from '@/services/part-service';\r\n\r\nconst partSearchService = new PartSearchService();\r\nconst partService = new PartService();\r\n\r\nconst namespace = 'carParts';\r\n\r\nexport const CarPartsModuleTypes = {\r\n getters: {\r\n parts: `${namespace}/parts`,\r\n totalNumberOfParts: `${namespace}/totalNumberOfParts`,\r\n carPartsLoadingState: `${namespace}/carPartsLoadingState`,\r\n },\r\n mutations: {\r\n loadPartsOfCar: `${namespace}/loadPartsOfCar`,\r\n loadPartsOfCarSuccess: `${namespace}/loadPartsOfCarSuccess`,\r\n loadPartsOfCarFail: `${namespace}/loadPartsOfCarFail`,\r\n updatePartAvailability: `${namespace}/updatePartAvailability`,\r\n updatePartAvailabilityLoadingState: `${namespace}/updatePartAvailabilityLoadingState`,\r\n },\r\n actions: {\r\n loadPartsOfCar: `${namespace}/loadPartsOfCar`,\r\n reloadPartAvailabilityForPart: `${namespace}/reloadPartAvailabilityForPart`,\r\n },\r\n};\r\n\r\nconst types = removeNamespace(namespace, CarPartsModuleTypes);\r\n\r\nexport interface CarPartsState {\r\n parts: PartSearchResultDetails[];\r\n totalNumberOfResults: number | null;\r\n carPartsLoadingState: LoadingState;\r\n}\r\n\r\nconst state: CarPartsState = {\r\n parts: [],\r\n totalNumberOfResults: null,\r\n carPartsLoadingState: LoadingState.Indeterminate,\r\n};\r\n\r\nconst mutations: MutationTree = {\r\n [types.mutations.loadPartsOfCar](currentState: CarPartsState): void {\r\n currentState.carPartsLoadingState = LoadingState.Loading;\r\n },\r\n [types.mutations.loadPartsOfCarSuccess](\r\n currentState: CarPartsState,\r\n payload: {\r\n results: PartSearchResultDetails[];\r\n }\r\n ): void {\r\n const results = payload.results.filter((result) => result != null);\r\n results.forEach((result) => (result.isPartAvailabilityLoading = false));\r\n currentState.parts = results;\r\n currentState.totalNumberOfResults = payload.results.length;\r\n currentState.carPartsLoadingState = LoadingState.Loaded;\r\n },\r\n [types.mutations.loadPartsOfCarFail](currentState: CarPartsState): void {\r\n currentState.totalNumberOfResults = null;\r\n currentState.parts = [];\r\n currentState.carPartsLoadingState = LoadingState.Failed;\r\n },\r\n [types.mutations.updatePartAvailability](\r\n currentState: CarPartsState,\r\n payload: { partId: string; partAvailability: PartAvailability }\r\n ): void {\r\n const foundPart = currentState.parts.find((result) => result.searchResult.id === payload.partId);\r\n if (foundPart) {\r\n foundPart.partAvailability = payload.partAvailability;\r\n }\r\n },\r\n [types.mutations.updatePartAvailabilityLoadingState](\r\n currentState: CarPartsState,\r\n payload: { partId: string; isLoading: boolean }\r\n ): void {\r\n const foundPart = currentState.parts.find((result) => result.searchResult.id === payload.partId);\r\n if (foundPart) {\r\n foundPart.isPartAvailabilityLoading = payload.isLoading;\r\n }\r\n },\r\n};\r\n\r\nconst actions: ActionTree = {\r\n async [types.actions.loadPartsOfCar](\r\n context: ActionContext,\r\n payload: { partNumbers: string[]; brand: string }\r\n ): Promise {\r\n context.commit(types.mutations.loadPartsOfCar);\r\n try {\r\n const results = await partSearchService.searchByPartNumbersAndBrand(payload.partNumbers, payload.brand);\r\n context.commit(types.mutations.loadPartsOfCarSuccess, {\r\n results,\r\n });\r\n } catch (e) {\r\n context.commit(types.mutations.loadPartsOfCarFail);\r\n }\r\n },\r\n async [types.actions.reloadPartAvailabilityForPart](\r\n context: ActionContext,\r\n payload: { partId: string; quantity: number }\r\n ): Promise {\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, { partId: payload.partId, isLoading: true });\r\n const partAvailability = await partService.getAvailabilityOfPart(payload.partId, payload.quantity);\r\n if (partAvailability) {\r\n context.commit(types.mutations.updatePartAvailability, {\r\n partId: payload.partId,\r\n partAvailability,\r\n });\r\n }\r\n context.commit(types.mutations.updatePartAvailabilityLoadingState, {\r\n partId: payload.partId,\r\n isLoading: false,\r\n });\r\n },\r\n};\r\n\r\nconst getters: GetterTree = {\r\n [types.getters.parts]: (currentState) => {\r\n return currentState.parts;\r\n },\r\n [types.getters.totalNumberOfParts]: (currentState) => {\r\n return currentState.totalNumberOfResults;\r\n },\r\n [types.getters.carPartsLoadingState]: (currentState) => {\r\n return currentState.carPartsLoadingState;\r\n },\r\n};\r\n\r\nconst module: Module = {\r\n state,\r\n mutations,\r\n actions,\r\n getters,\r\n namespaced: true,\r\n};\r\n\r\nexport default module;\r\n","import Vue from 'vue';\r\nimport Vuex, { Store, Plugin } from 'vuex';\r\nimport createLogger from 'vuex/dist/logger';\r\nimport quickSearch from './modules/quick-search';\r\nimport vinSearch from './modules/vin-search';\r\nimport partSearch from './modules/part-search';\r\nimport partCatalogueSearch from './modules/part-catalogue-search';\r\nimport countryStateSelect from './modules/country-state-select';\r\nimport shoppingCart from './modules/shopping-cart';\r\nimport notification from './modules/notification';\r\nimport ordersForUser from './modules/orders-for-user';\r\nimport relatedParts from './modules/related-parts';\r\nimport { RootState } from './rootState';\r\nimport shoppingCartUpload from './modules/shopping-cart-upload';\r\nimport carParts from './modules/car-parts';\r\n\r\nVue.config.devtools = process.env.VUE_APP_MODE === 'dev';\r\n\r\nVue.use(Vuex);\r\n\r\nconst plugins: Array> = [];\r\n\r\nif (process.env.VUE_APP_MODE === 'dev') {\r\n plugins.push(createLogger());\r\n}\r\n\r\n// module name must match name of the namespace\r\nexport default new Store({\r\n modules: {\r\n quickSearch,\r\n vinSearch,\r\n partSearch,\r\n partCatalogueSearch,\r\n countryStateSelect,\r\n shoppingCart,\r\n notification,\r\n ordersForUser,\r\n relatedParts,\r\n shoppingCartUpload,\r\n carParts,\r\n },\r\n plugins,\r\n});\r\n","import { ResHelper } from '@/helper/ResHelper';\r\n\r\nexport function localize(key: string): string | undefined {\r\n return ResHelper.getString(key);\r\n}\r\n","import { ResHelper } from '@/helper/ResHelper';\r\n\r\nexport function localizeWithFallback(key: string, fallback: string): string {\r\n if (!key) {\r\n return '';\r\n }\r\n\r\n return ResHelper.getStringOrFallback(key, fallback);\r\n}\r\n","import { ResHelper } from '@/helper/ResHelper';\r\n\r\nexport default function convertCentsToDecimalNumber(cents: number, fractionDigits: number): string {\r\n return Number(cents / 100).toLocaleString(ResHelper.getCurrentCultureName(), {\r\n minimumFractionDigits: fractionDigits,\r\n maximumFractionDigits: fractionDigits,\r\n });\r\n}\r\n","import convertCentsToDecimalNumber from '@/helper/convertCentsToDecimalNumber';\r\n\r\nexport function centsToDecimal(cents: number, withFractionDigits: boolean): string {\r\n return convertCentsToDecimalNumber(cents, withFractionDigits ? 2 : 0);\r\n}\r\n","import { ResHelper } from '@/helper/ResHelper';\r\n\r\nexport function localizeWithFallbackKey(key: string, fallbackKey: string): string | undefined {\r\n return ResHelper.getStringOrUseFallbackKey(key, fallbackKey);\r\n}\r\n","import { ResHelper } from '@/helper/ResHelper';\r\n\r\nexport function localizeWithParams(key: string, ...params: string[]): string | undefined {\r\n if (!key) {\r\n return '';\r\n }\r\n\r\n return ResHelper.getStringWithParameters(key, ...params);\r\n}\r\n","import Vue from 'vue';\r\n\r\nimport { localize } from './localize';\r\nimport { localizeWithFallback } from './localizeWithFallback';\r\nimport { centsToDecimal } from './centsToDecimal';\r\nimport { localizeWithFallbackKey } from './localizeWithFallbackKey';\r\nimport { localizeWithParams } from './localizeWithParams';\r\n\r\nVue.filter('centsToDecimal', centsToDecimal);\r\nVue.filter('localize', localize);\r\nVue.filter('localizeWithFallback', localizeWithFallback);\r\nVue.filter('localizeWithFallbackKey', localizeWithFallbackKey);\r\nVue.filter('localizeWithParams', localizeWithParams);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"slideshow__container\",class:{ hidePagination: _vm.totalNumberOfItems <= 1 }},[_c('b-carousel',{attrs:{\"id\":\"carousel-fade\",\"interval\":5000,\"controls\":\"\"}},[_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\n@Component({ })\nexport default class Slideshow extends Vue {\n @Prop(Number)\n private totalNumberOfItems!: number;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Slideshow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Slideshow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Slideshow.vue?vue&type=template&id=7b2c4964&\"\nimport script from \"./Slideshow.vue?vue&type=script&lang=ts&\"\nexport * from \"./Slideshow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-carousel-slide',{staticClass:\"slideshow__item\",attrs:{\"img-src\":_vm.backgroundImageUrl}},[_c('a',{attrs:{\"href\":_vm.buttonLinkUrl}},[_c('div',{staticClass:\"slideshow__item-content-container\"},[_c('div',{staticClass:\"slideshow__item-background\"}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.totalNumberOfItems > 1),expression:\"totalNumberOfItems > 1\"}],staticClass:\"slideshow__item-page\"},[_c('span',{staticClass:\"bold\"},[_vm._v(_vm._s(_vm.itemIndex))]),_vm._v(\"\\n /\"+_vm._s(_vm.totalNumberOfItems)+\"\\n \")]),_c('div',{staticClass:\"slideshow__item-title\"},[_vm._v(_vm._s(_vm.title))]),_c('div',{staticClass:\"slideshow__item-sub-title\"},[_vm._v(_vm._s(_vm.subTitle))]),_c('div',{staticClass:\"slideshow__item-button\"},[_vm._v(_vm._s(_vm.buttonText))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n@Component({})\r\nexport default class SlideshowItem extends Vue {\r\n @Prop(String)\r\n private backgroundImageUrl!: string;\r\n @Prop(String)\r\n private title!: string;\r\n @Prop(String)\r\n private subTitle!: string;\r\n @Prop(String)\r\n private buttonText!: string;\r\n @Prop(String)\r\n private buttonLinkUrl!: string;\r\n @Prop(Number)\r\n private itemIndex!: number;\r\n @Prop(Number)\r\n private totalNumberOfItems!: number;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SlideshowItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SlideshowItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SlideshowItem.vue?vue&type=template&id=6e7d56fc&\"\nimport script from \"./SlideshowItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./SlideshowItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"teaser col-xl-3 col-lg-4 col-md-6 col-sm-12\"},[_c('div',{staticClass:\"teaser__wrapper\"},[_c('a',{staticClass:\"teaser__image-link\",attrs:{\"href\":_vm.linkTarget}},[_c('img',{staticClass:\"teaser__image teaser__image--part\",class:{ 'teaser__image--not-found': _vm.couldNotLoadImage },attrs:{\"src\":_vm.couldNotLoadImage ? '/images/broken-image.svg' : _vm.imageUrl,\"alt\":_vm.title},on:{\"~error\":function($event){return _vm.imageLoadError($event)}}})]),_c('div',{staticClass:\"teaser--type-part\"},[_c('div',{staticClass:\"teaser__small-title\"},[_vm._v(_vm._s(_vm.partNumber))]),_c('a',{attrs:{\"href\":_vm.linkTarget}},[_c('div',{staticClass:\"teaser__big-title\"},[_vm._v(_vm._s(_vm.title))])]),_c('div',{staticClass:\"teaser__description\"},[_vm._v(_vm._s(_vm.description))]),_c('div',{staticClass:\"teaser__part-info\"},[(_vm.isLoadingAvailability)?_c('div',{staticClass:\"w-100 d-flex justify-content-center align-items-center teaser__delivery-loading-indicator\"},[_c('LoadingIndicator')],1):[(_vm.partAvailability)?_c('DeliveryTimeToolTip',{staticClass:\"teaser__delivery-text\",style:({ \n color: _vm.partAvailability && _vm.partAvailability.color,\n visibility: _vm.showAvailability ? 'visible' : 'hidden'\n }),attrs:{\"partAvailability\":_vm.partAvailability}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.partAvailability && _vm.partAvailability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")]):_vm._e()],_c('Price',{attrs:{\"priceNetCents\":_vm.priceNetCents,\"priceGrossCents\":_vm.priceGrossCents,\"priceDiscountedNetCents\":_vm.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.depositPartPriceNetCents,\"depositPartPriceGrossCents\":_vm.depositPartPriceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.depositPartPriceDiscountedNetCents,\"isHidden\":_vm.isHidden,\"currencySymbol\":_vm.currencySymbol,\"hasSubunit\":_vm.hasSubunit,\"noWrap\":true}})],2),(!_vm.isHidden)?_c('ShoppingCartActions',{attrs:{\"fullPartId\":_vm.partId,\"partNumber\":_vm.partNumber,\"unitCode\":_vm.unitCode,\"maxAllowedQuantity\":_vm.maxAllowedQuantity},on:{\"quantity-changed\":_vm.onQuantityChanged,\"quantity-valid\":_vm.onQuantityValid,\"quantity-invalid\":_vm.onQuantityInvalid}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"price w-100 d-flex flex-column justify-content-around\",class:{ 'right-aligned': _vm.rightAligned }},[(_vm.showSmallPrice && !_vm.isHidden)?_c('div',{staticClass:\"w-100 price__net\"},[(_vm.showNetGrossPrefix)?_c('span',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PRICE.NET))+\" \")]):_vm._e(),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.currencySymbol)}}),_vm._v(\" \"+_vm._s(_vm._f(\"centsToDecimal\")(_vm.smallFontPrice,_vm.hasSubunit))+\"\\n \")]):_vm._e(),(!_vm.isHidden)?_c('div',{staticClass:\"price__gross d-flex\",class:{ 'price__gross--no-wrap': _vm.noWrap }},[(_vm.showNetGrossPrefix)?_c('span',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PRICE.GROSS)))]):_vm._e(),_c('span',[_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.currencySymbol)}}),_vm._v(\" \"+_vm._s(_vm._f(\"centsToDecimal\")(_vm.bigFontPrice,_vm.hasSubunit)))]),(_vm.hasDepositPart)?_c('DepositPartInfoToolTip',{attrs:{\"priceNetCents\":_vm.depositPartPriceNetCents,\"priceGrossCents\":_vm.depositPartPriceGrossCents,\"priceDiscountedNetCents\":_vm.depositPartPriceDiscountedNetCents}},[_c('img',{staticClass:\"deposit-part__info-icon\",attrs:{\"src\":\"/images/spares_icon_info.svg\"}})]):_vm._e()],1):_vm._e(),(_vm.isHidden)?_c('div',{staticClass:\"price__gross\",class:{ 'price__gross--no-wrap': _vm.noWrap }},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PRICE.HIDDEN)))]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// mixin.js\r\nimport Vue from 'vue';\r\nimport { Component } from 'vue-property-decorator';\r\nimport URI from 'urijs';\r\n\r\nimport * as l10n from '@/constants/l10n';\r\n\r\n@Component({})\r\nexport default class BaseMixin extends Vue {\r\n public readonly l10n: typeof l10n = l10n;\r\n\r\n public getUrlForImage(\r\n path: string,\r\n watermark: boolean = false,\r\n width: number = 0\r\n ): string {\r\n return new URI('/api/file/image')\r\n .addQuery({\r\n path,\r\n watermark: watermark ? 'true' : undefined,\r\n width: width > 0 ? width : undefined,\r\n })\r\n .toString();\r\n }\r\n\r\n protected get isXlMedia(): boolean {\r\n // (this as any) necassary because of the missing types for vue-mq\r\n return (this as any).$mq === 'xl';\r\n }\r\n\r\n public get isDesktop(): boolean {\r\n // (this as any) necassary because of the missing types for vue-mq\r\n return (this as any).$mq === 'lg' || (this as any).$mq === 'xl';\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\",value:({\n title: _vm.toolTipMessage,\n html: true,\n customClass: 'deposit-part-tooltip',\n trigger: 'hover',\n placement: 'top',\n }),expression:\"{\\n title: toolTipMessage,\\n html: true,\\n customClass: 'deposit-part-tooltip',\\n trigger: 'hover',\\n placement: 'top',\\n }\"}],staticStyle:{\"z-index\":\"10\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { localize } from '../../filters/localize';\r\nimport { UserHelper } from '@/helper/user';\r\nimport Vue from 'vue';\r\nimport Price from '../price/Price.vue';\r\n\r\n@Component\r\nexport default class DepositPartInfoToolTip extends Mixins(BaseMixin) {\r\n @Prop(Number)\r\n private priceNetCents!: number;\r\n @Prop(Number)\r\n private priceGrossCents!: number;\r\n @Prop(Number)\r\n private priceDiscountedNetCents!: number;\r\n\r\n private priceHtml?: string;\r\n\r\n // called by vue\r\n public created(): void {\r\n const ComponentClass = Vue.extend(Price);\r\n const instance = new ComponentClass({\r\n propsData: {\r\n priceNetCents: this.priceNetCents,\r\n priceGrossCents: this.priceGrossCents,\r\n priceDiscountedNetCents: this.priceDiscountedNetCents,\r\n rightAligned: true,\r\n noWrap: true,\r\n },\r\n });\r\n instance.$mount();\r\n this.priceHtml = instance.$el.outerHTML;\r\n }\r\n\r\n private get toolTipMessage(): string {\r\n if (!this.priceHtml) {\r\n return '';\r\n }\r\n\r\n return `${localize(this.l10n.DEPOSIT_PART_INFO_TOOLTIP.INFO_TEXT)}:
${this.priceHtml}`;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DepositPartInfoToolTip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DepositPartInfoToolTip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DepositPartInfoToolTip.vue?vue&type=template&id=39a50e61&\"\nimport script from \"./DepositPartInfoToolTip.vue?vue&type=script&lang=ts&\"\nexport * from \"./DepositPartInfoToolTip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { UserHelper } from '../../helper/user';\r\nimport DepositPartInfoToolTip from '@/components/deposit-part-info-tooltip/DepositPartInfoToolTip.vue';\r\n\r\n@Component({\r\n components: {\r\n DepositPartInfoToolTip,\r\n },\r\n})\r\nexport default class Price extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private priceNetCents!: number;\r\n @Prop(String)\r\n private priceGrossCents!: number;\r\n @Prop(String)\r\n private priceDiscountedNetCents!: number;\r\n @Prop(String)\r\n private depositPartPriceNetCents?: number;\r\n @Prop(String)\r\n private depositPartPriceGrossCents?: number;\r\n @Prop(String)\r\n private depositPartPriceDiscountedNetCents?: number;\r\n @Prop(Boolean)\r\n private rightAligned!: boolean;\r\n @Prop(Boolean)\r\n private noWrap!: boolean;\r\n @Prop(Boolean)\r\n private isHidden!: boolean;\r\n @Prop(String)\r\n private currencySymbol!: string;\r\n @Prop(Boolean)\r\n private hasSubunit!: boolean;\r\n\r\n private hasCustomerDiscounts: boolean = UserHelper.hasDiscounts();\r\n\r\n public get bigFontPrice(): number {\r\n return this.hasCustomerDiscounts ? this.priceDiscountedNetCents : this.priceGrossCents;\r\n }\r\n\r\n public get smallFontPrice(): number {\r\n return this.priceNetCents;\r\n }\r\n\r\n public get showSmallPrice(): boolean {\r\n return this.smallFontPrice !== this.bigFontPrice;\r\n }\r\n\r\n public get showNetGrossPrefix(): boolean {\r\n return this.hasCustomerDiscounts ? false : this.showSmallPrice;\r\n }\r\n\r\n public get hasDepositPart(): boolean {\r\n return (\r\n (this.depositPartPriceNetCents != null && this.depositPartPriceNetCents >= 0) ||\r\n (this.depositPartPriceGrossCents != null && this.depositPartPriceGrossCents >= 0) ||\r\n (this.depositPartPriceDiscountedNetCents != null && this.depositPartPriceDiscountedNetCents >= 0)\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Price.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Price.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Price.vue?vue&type=template&id=01979bd6&\"\nimport script from \"./Price.vue?vue&type=script&lang=ts&\"\nexport * from \"./Price.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{\n 'shopping-cart-actions': !_vm.showHorizontal,\n 'shopping-cart-actions--horizontal': _vm.showHorizontal,\n 'shopping-cart-actions--position-absolute': _vm.positionAbsolute,\n }},[_c('div',{staticClass:\"shopping-cart-actions__quantity\"},[(!_vm.hideUnitCode)?_c('span',{staticClass:\"shopping-cart-actions__quantity-label\"},[_vm._v(_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.PART.UNIT_CODE_TEXT.For(_vm.unitCode),_vm.l10n.PART.UNIT_CODE_TEXT.UNKNOWN)))]):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentQuantity),expression:\"currentQuantity\"}],class:{ 'is-invalid': !_vm.isQuantityValid },attrs:{\"disabled\":_vm.isItemCurrentlyBeingAdded,\"type\":\"number\",\"min\":\"1\",\"step\":\"1\"},domProps:{\"value\":(_vm.currentQuantity)},on:{\"keyup\":_vm.quantityChanged,\"mousewheel\":_vm.quantityChanged,\"focus\":function($event){return _vm.quantityFocusStateChanged(true)},\"blur\":function($event){return _vm.quantityFocusStateChanged(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentQuantity=$event.target.value}}})]),(_vm.isItemCurrentlyBeingAdded)?_c('div',{staticClass:\"shopping-cart-actions__loading\"},[_c('LoadingIndicator')],1):_vm._e(),(!_vm.isItemCurrentlyBeingAdded)?_c('button',{staticClass:\"shopping-cart-actions__button\",attrs:{\"disabled\":_vm.isDisabled},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddItemToShoppingCart($event)}}},[_c('AddToShoppingCartIcon')],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue, { VNode, CreateElement } from 'vue';\r\nimport { RenderContext } from 'vue/types/options';\r\n\r\nexport const LoadingIndicator = Vue.extend({\r\n functional: true,\r\n name: 'LoadingIndicator',\r\n props: {\r\n classPostfix: String,\r\n },\r\n render(\r\n createElement: CreateElement,\r\n ctx: RenderContext<{ classPostfix: string }>\r\n ): VNode {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n});\r\n","import Vue from 'vue';\r\nexport const AddToShoppingCartIcon = Vue.extend({\r\n functional: true,\r\n name: 'AddToShoppingCartIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=AddToShoppingCartIcon.jsx.map","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins, Emit } from 'vue-property-decorator';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { AddToShoppingCartIcon } from '@/components/icons/AddToShoppingCartIcon';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n AddToShoppingCartIcon,\r\n },\r\n})\r\nexport default class ShoppingCartActions extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private fullPartId!: string;\r\n @Prop(String)\r\n private partNumber!: string;\r\n @Prop(String)\r\n private unitCode!: string;\r\n @Prop(Boolean)\r\n private hideUnitCode!: boolean;\r\n @Prop(Boolean)\r\n private showHorizontal!: boolean;\r\n @Prop({ type: Boolean, required: false, default: true })\r\n private positionAbsolute!: boolean;\r\n @Prop({ type: Number, required: false, default: 1 })\r\n private defaultQuantity!: number;\r\n @Prop(Number)\r\n private maxAllowedQuantity?: number;\r\n\r\n private currentQuantity: number = this.defaultQuantity;\r\n private lastEmittedQuantityValid?: boolean;\r\n private quantityHasFocus: boolean = false;\r\n\r\n private get isQuantityValid(): boolean {\r\n const isValid = (\r\n this.currentQuantity > 0 &&\r\n (this.maxAllowedQuantity === undefined || this.currentQuantity <= this.maxAllowedQuantity)\r\n );\r\n\r\n // only emit value when last emitted value is different from current\r\n if (this.lastEmittedQuantityValid === isValid) {\r\n return isValid;\r\n }\r\n if (isValid) {\r\n this.emitQuantityIsValid();\r\n } else {\r\n this.emitQuantityIsInvalid();\r\n }\r\n this.lastEmittedQuantityValid = isValid;\r\n\r\n return isValid;\r\n }\r\n\r\n private get hasActiveShoppingCart(): boolean {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.hasActiveShoppingCart];\r\n }\r\n\r\n private get isItemCurrentlyBeingAdded(): boolean {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.isItemCurrentlyBeingAdded](this.fullPartId);\r\n }\r\n\r\n private get isDisabled(): boolean {\r\n return (\r\n !this.isQuantityValid ||\r\n this.isItemCurrentlyBeingAdded ||\r\n !this.hasActiveShoppingCart ||\r\n isNullOrWhitespace(this.fullPartId)\r\n );\r\n }\r\n\r\n @Emit('quantity-changed')\r\n private emitQuantityChanged(): number {\r\n return this.currentQuantity;\r\n }\r\n\r\n @Emit('quantity-valid')\r\n private emitQuantityIsValid(): void {\r\n return;\r\n }\r\n\r\n @Emit('quantity-invalid')\r\n private emitQuantityIsInvalid(): void {\r\n return;\r\n }\r\n\r\n private quantityChanged(): void {\r\n if (this.isQuantityValid && this.quantityHasFocus) {\r\n this.emitQuantityChanged();\r\n }\r\n }\r\n\r\n private quantityFocusStateChanged(hasFocus: boolean): void {\r\n this.quantityHasFocus = hasFocus;\r\n }\r\n\r\n private async onAddItemToShoppingCart(): Promise {\r\n await this.$store.dispatch(ShoppingCartModuleTypes.actions.addShoppingCartItem, {\r\n fullPartId: this.fullPartId,\r\n partNumber: this.partNumber,\r\n quantity: this.currentQuantity,\r\n });\r\n this.currentQuantity = this.defaultQuantity;\r\n this.emitQuantityChanged();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartActions.vue?vue&type=template&id=1bfe94c8&\"\nimport script from \"./ShoppingCartActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartActions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.top.html\",value:(_vm.toolTipMessage(_vm.result)),expression:\"toolTipMessage(result)\",modifiers:{\"hover\":true,\"top\":true,\"html\":true}}],attrs:{\"variant\":\"dark\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartAvailability } from '../../entities/PartAvailability';\r\nimport { localize } from '../../filters/localize';\r\nimport { PartDeliveryTimeInformation } from '../../entities/PartDeliveryTimeInformation';\r\n\r\n@Component\r\nexport default class DeliveryTimeToolTip extends Mixins(BaseMixin) {\r\n @Prop({ required: true })\r\n private partAvailability!: PartAvailability;\r\n\r\n private toolTipMessage(): string {\r\n let returnValue = `
\r\n ${localize(\r\n this.l10n.DELIVERY_TIME_TOOLTIP.HEADER_TEXT\r\n )}
`;\r\n this.partAvailability.partDeliveryTimeInformations.forEach(\r\n (element: PartDeliveryTimeInformation) => {\r\n returnValue += `
\r\n ${element.deliveryTimeInformationText} \r\n ${element.quantity} ${localize(\r\n this.l10n.DELIVERY_TIME_TOOLTIP.EACH_TEXT\r\n )}\r\n
`;\r\n }\r\n );\r\n\r\n returnValue += `
${this.partAvailability.infoText}\r\n
`;\r\n return returnValue;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeliveryTimeToolTip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeliveryTimeToolTip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeliveryTimeToolTip.vue?vue&type=template&id=2361097c&\"\nimport script from \"./DeliveryTimeToolTip.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeliveryTimeToolTip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { UserHelper } from '@/helper/user';\r\nimport Price from '@/components/price/Price.vue';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartService } from '@/services/part-service';\r\nimport _ from 'lodash';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartActions,\r\n Price,\r\n LoadingIndicator,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class PartTeaser extends Mixins(BaseMixin) {\r\n @Prop({ type: String, required: true })\r\n private imageUrl!: string;\r\n @Prop({ type: String, required: true })\r\n private partId!: string;\r\n @Prop({ type: String, required: true })\r\n private partNumber!: string;\r\n @Prop({ type: String, required: true })\r\n private title!: string;\r\n @Prop({ type: String, required: true })\r\n private description!: string;\r\n @Prop({ type: String, required: true })\r\n private linkTarget!: string;\r\n @Prop({ type: String, required: true })\r\n private unitCode!: number;\r\n @Prop({ type: Number, required: true })\r\n private priceNetCents!: number;\r\n @Prop({ type: Number, required: true })\r\n private priceGrossCents!: number;\r\n @Prop({ type: Number, required: true })\r\n private priceDiscountedNetCents!: number;\r\n @Prop({ type: Number, required: false })\r\n private depositPartPriceNetCents?: number;\r\n @Prop({ type: Number, required: false })\r\n private depositPartPriceGrossCents?: number;\r\n @Prop({ type: Number, required: false })\r\n private depositPartPriceDiscountedNetCents?: number;\r\n @Prop({ type: Boolean, required: true })\r\n private isHidden!: boolean;\r\n @Prop({ type: Boolean, required: true })\r\n private isUsedPart!: boolean;\r\n @Prop({ type: String, required: true })\r\n private currencySymbol!: string;\r\n @Prop({ type: Boolean, required: true })\r\n private hasSubunit!: boolean;\r\n\r\n private quantity: number = 1;\r\n private partAvailability: PartAvailability | null = null;\r\n\r\n private couldNotLoadImage: boolean = false;\r\n private isLoadingAvailability: boolean = false;\r\n private partService: PartService = new PartService();\r\n private reloadAvailabilityDebounced: () => Promise | undefined;\r\n private showAvailability: boolean = true;\r\n\r\n constructor() {\r\n super();\r\n this.reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n }\r\n\r\n // called by vue\r\n public created(): void {\r\n this.reloadAvailability();\r\n }\r\n\r\n private get maxAllowedQuantity(): number | undefined {\r\n if (!this.isUsedPart) {\r\n return undefined;\r\n }\r\n\r\n return this.getAvailableItemCount();\r\n }\r\n\r\n private imageLoadError(): void {\r\n this.couldNotLoadImage = true;\r\n }\r\n\r\n private onQuantityChanged(quantity: number): void {\r\n this.quantity = quantity;\r\n this.reloadAvailabilityDebounced();\r\n }\r\n\r\n private onQuantityValid(): void {\r\n this.showAvailability = true;\r\n }\r\n\r\n private onQuantityInvalid(): void {\r\n this.showAvailability = false;\r\n }\r\n\r\n private async reloadAvailability(): Promise {\r\n this.isLoadingAvailability = true;\r\n try {\r\n const availability = await this.partService.getAvailabilityOfPart(this.partId, this.quantity);\r\n this.partAvailability = availability;\r\n } catch {\r\n this.partAvailability = null;\r\n } finally {\r\n this.isLoadingAvailability = false;\r\n }\r\n }\r\n\r\n private getAvailableItemCount(): number {\r\n if (!this.partAvailability || !this.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return this.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartTeaser.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartTeaser.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartTeaser.vue?vue&type=template&id=46053a88&\"\nimport script from \"./PartTeaser.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartTeaser.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row no-gutters quick-search quick-search__part-number\",attrs:{\"id\":\"quick-search\"}},[_c('form',{staticClass:\"col-12\",on:{\"submit\":function($event){$event.preventDefault();return _vm.search($event)}}},[_c('div',{staticClass:\"row no-gutters\"},[_c('div',{staticClass:\"col\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.searchTerm),expression:\"searchTerm\",modifiers:{\"trim\":true}}],staticClass:\"quick-search__input-field w-100\",class:{\n 'quick-search__input-error': _vm.loadingFailed,\n },attrs:{\"type\":\"search\",\"placeholder\":_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH.SEARCH_TERM_PLACEHOLDER)},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_c('div',{staticClass:\"col-auto\"},[_c('button',{staticClass:\"btn p-0 text-right quick-search__submit\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.isSearchTermValid}},[(!_vm.isLoading)?_c('img',{staticClass:\"header__icon\",attrs:{\"src\":\"/images/spares_icons_lupe.svg\",\"alt\":_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH.SEARCH_BUTTON_ALT_TEXT)}}):_vm._e(),(_vm.isLoading)?_c('div',{staticClass:\"d-flex justify-content-end align-items-center\"},[_c('LoadingIndicator')],1):_vm._e()])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins, Watch } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport _ from 'lodash/fp';\r\nimport { QuickSearchModuleTypes } from '@/store/modules/quick-search';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n },\r\n})\r\nexport default class QuickSearch extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private detailSearchLink!: string;\r\n private searchTerm: string = '';\r\n private searchDebounced: () => void = _.debounce(500, () => {\r\n this.search();\r\n });\r\n\r\n public get loadingFailed(): boolean {\r\n return (\r\n this.$store.getters[\r\n QuickSearchModuleTypes.getters.searchResultsLoadingState\r\n ] === LoadingState.Failed\r\n );\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return (\r\n this.$store.getters[\r\n QuickSearchModuleTypes.getters.searchResultsLoadingState\r\n ] === LoadingState.Loading\r\n );\r\n }\r\n\r\n public get isSearchTermValid(): boolean {\r\n return this.searchTerm != null && this.searchTerm.trim() !== '';\r\n }\r\n\r\n public search(): void {\r\n if (this.isSearchTermValid) {\r\n if (this.isDesktop) {\r\n this.$store.dispatch(\r\n QuickSearchModuleTypes.actions.loadSearchResults,\r\n {\r\n searchTerm: this.searchTerm,\r\n brand: '',\r\n }\r\n );\r\n } else {\r\n document.location.href = `${\r\n this.detailSearchLink\r\n }?searchTerm=${encodeURIComponent(this.searchTerm)}`;\r\n }\r\n }\r\n }\r\n\r\n public get isDesktop(): boolean {\r\n // (this as any) necassary because of the missing types for vue-mq\r\n return (this as any).$mq === 'lg' || (this as any).$mq === 'xl';\r\n }\r\n\r\n @Watch('searchTerm')\r\n private onSearchTermChange(): void {\r\n if (!this.isDesktop) {\r\n return;\r\n }\r\n this.searchDebounced();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuickSearch.vue?vue&type=template&id=1f44a508&\"\nimport script from \"./QuickSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuickSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SmoothReflow',{attrs:{\"tag\":\"div\",\"options\":{ transitionEvent: { selector: '.quick-search-result' } }}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSearchResults),expression:\"showSearchResults\"}],staticClass:\"quick-search-result container-fluid\",attrs:{\"id\":\"quick-search-result\"}},[_c('div',{staticClass:\"row quick-search-result__head\"},[_c('div',{staticClass:\"col-10\"},[_c('h2',{staticClass:\"quick-search-result__title\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.TITLE))+\":\")])]),_c('div',{staticClass:\"col-2\"},[_c('button',{staticClass:\"btn w-100 quick-search-result__close-button\",on:{\"click\":_vm.closeResults}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.CLOSE_BUTTON))+\"\\n \")])])]),_c('div',{staticClass:\"quick-search-result__container w-100\"},[(_vm.showNoResultsFound)?_c('div',{staticClass:\"quick-search-result__no-results-found-text w-100\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.NO_RESULTS_FOUND))+\"\\n \")]):_vm._e(),(_vm.partSearchResults && _vm.partSearchResults.length > 0)?_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table border-0 w-100\"},[_c('thead',{staticClass:\"quick-search-result__table-header w-100\"},[_c('tr',{staticClass:\"border-0\"},[_c('th',{staticClass:\"quick-search-result__header-item quick-search-result__part-number\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.PART_NUMBER))+\"\\n \")]),_c('th',{staticClass:\"quick-search-result__header-item quick-search-result__description\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.DESCRIPTION))+\"\\n \")]),_c('th',{staticClass:\"quick-search-result__header-item quick-search-result__brand\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.BRAND))+\"\\n \")]),_c('th',{staticClass:\"quick-search-result__header-item quick-search-result__price\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.PRICE))+\"\\n \")]),_c('th',{staticClass:\"quick-search-result__header-item quick-search-result__delivery\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.AVAILABILITY))+\"\\n \")])])]),_c('tbody',_vm._l((_vm.partSearchResults),function(result){return _c('tr',{key:result.searchResult.id,staticClass:\"quick-search-result__result-row\"},[_c('td',{staticClass:\"quick-search-result__row-item align-middle\"},[_c('a',{attrs:{\"href\":_vm.partDetailLinkForPart(result)}},[_vm._v(\"\\n \"+_vm._s(result.searchResult.partNumber)+\"\\n \")])]),_c('td',{staticClass:\"\\n quick-search-result__row-item quick-search-result__item-description\\n align-middle\\n \"},[_c('a',{attrs:{\"href\":_vm.partDetailLinkForPart(result)}},[_vm._v(\"\\n \"+_vm._s(result.searchResult.name)+\"\\n \")])]),_c('td',{staticClass:\"quick-search-result__row-item align-middle\"},[_vm._v(_vm._s(result.searchResult.brandCode)+\"\\n \")]),_c('td',{staticClass:\"quick-search-result__row-item align-middle\"},[(!result.isNotInStockButReplaceable)?_c('Price',{attrs:{\"priceNetCents\":result.price.priceNetCents,\"priceGrossCents\":result.price.priceGrossCents,\"priceDiscountedNetCents\":result.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":result.depositPartPrice && result.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":result.depositPartPrice && result.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":result.depositPartPrice && result.depositPartPrice.priceDiscountedNetCents,\"isHidden\":result.price.isHidden,\"currencySymbol\":result.price.currency.htmlSymbol,\"hasSubunit\":result.price.currency.hasSubunit,\"rightAligned\":true,\"noWrap\":true}}):_vm._e()],1),_c('td',{staticClass:\"\\n quick-search-result__row-item quick-search-result__row-item--delivery\\n align-middle\\n \",style:({\n color: result.partAvailability && result.partAvailability.color,\n visibility: _vm.showAvailabilityMap.get(result.searchResult.id)\n ? 'visible'\n : 'hidden',\n })},[(result.isPartAvailabilityLoading)?_c('div',{staticClass:\"w-100 d-flex justify-content-center align-items-center\"},[_c('LoadingIndicator')],1):_c('DeliveryTimeToolTip',{attrs:{\"partAvailability\":result.partAvailability}},[_c('span',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(\n result.partAvailability && result.partAvailability.code\n ),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])])],1),_c('td',{staticClass:\"\\n quick-search-result__row-item quick-search-result__row-item--cart-actions\\n align-middle\\n \"},[(!result.isNotInStockButReplaceable)?_c('div',{staticClass:\"row no-gutters\"},[(!result.price.isHidden)?_c('ShoppingCartActions',{attrs:{\"fullPartId\":result.searchResult.id,\"partNumber\":result.searchResult.partNumber,\"unitCode\":result.searchResult.unitCode,\"maxAllowedQuantity\":_vm.maxAllowedQuantity(result),\"showHorizontal\":\"\"},on:{\"quantity-changed\":function($event){return _vm.onQuantityChanged($event, result.searchResult.id)},\"quantity-valid\":function($event){return _vm.onQuantityValid(result.searchResult.id)},\"quantity-invalid\":function($event){return _vm.onQuantityInvalid(result.searchResult.id)}}}):_vm._e()],1):_vm._e()])])}),0)])]):_vm._e(),(_vm.showNumbers)?_c('div',{staticClass:\"quick-search-result__amount w-100 text-center\"},[_vm._v(\"\\n \"+_vm._s(_vm.partSearchResults && _vm.partSearchResults.length)+\"/\"+_vm._s(_vm.totalNumberOfResults)+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"quick-search-result__button-link-container row\"},[_c('div',{staticClass:\"col-12 text-center\"},[(_vm.showGoToDetailsSearch)?_c('a',{staticClass:\"btn quick-search-result__button-link\",attrs:{\"href\":_vm.detailSearchLinkForSearchTerm}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.LINK_TO_DETAIL_SEARCH_TEXT))+\"\\n \")]):_vm._e(),_c('a',{staticClass:\"btn quick-search-result__button-link\",attrs:{\"href\":_vm.catalogueSearchLinkForSearchTerm}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.QUICK_SEARCH_RESULT.LINK_TO_PARTS_CATALOGUE_SEARCH_TEXT))+\"\\n \")])])]),_c('div',{staticClass:\"quick-search-result__transition\"})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.tag,{tag:\"component\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport SmoothReflowMixin, { Options } from 'vue-smooth-reflow';\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\n\r\n@Component({\r\n mixins: [SmoothReflowMixin],\r\n})\r\nexport default class SmoothReflow extends Vue {\r\n @Prop({ type: String, default: 'div' })\r\n private tag!: string;\r\n\r\n @Prop(Object)\r\n private options?: Options | Options[];\r\n\r\n protected mounted(): void {\r\n if (this.$smoothReflow === undefined) {\r\n return;\r\n }\r\n this.$smoothReflow(this.options);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmoothReflow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SmoothReflow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmoothReflow.vue?vue&type=template&id=21b3848d&\"\nimport script from \"./SmoothReflow.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmoothReflow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop, Watch } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport Price from '@/components/price/Price.vue';\r\nimport { QuickSearchModuleTypes } from '@/store/modules/quick-search';\r\nimport SmoothReflow from '@/components/smooth-reflow/SmoothReflow.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport URI from 'urijs';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport _ from 'lodash';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { VinSearchResult } from '@/entities/vin-search/VinSearchResult';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartActions,\r\n Price,\r\n SmoothReflow,\r\n DeliveryTimeToolTip,\r\n LoadingIndicator,\r\n },\r\n})\r\nexport default class QuickSearchResult extends Mixins(BaseMixin) {\r\n @Prop({ type: String })\r\n private detailSearchLink!: string;\r\n @Prop({ type: String })\r\n private catalogueSearchLink!: string;\r\n @Prop({ type: String })\r\n private partDetailLink!: string;\r\n\r\n private reloadAvailabilityDebouncedMap: Map void> = new Map();\r\n private showAvailabilityMap: Map = new Map();\r\n\r\n private closeResults(): void {\r\n this.$store.dispatch(QuickSearchModuleTypes.actions.closeQuickSearchResults);\r\n }\r\n\r\n private get searchTerm(): string {\r\n return this.$store.getters[QuickSearchModuleTypes.getters.searchTerm];\r\n }\r\n\r\n private get isVinSearchResult(): boolean {\r\n return this.$store.getters[QuickSearchModuleTypes.getters.isVinSearchResult];\r\n }\r\n\r\n private get partSearchResults(): PartSearchResultDetails[] {\r\n return this.$store.getters[QuickSearchModuleTypes.getters.partSearchResults];\r\n }\r\n\r\n private get totalNumberOfResults(): number {\r\n return this.$store.getters[QuickSearchModuleTypes.getters.totalNumberOfParts];\r\n }\r\n\r\n private get vinSearchResult(): VinSearchResult {\r\n return this.$store.getters[QuickSearchModuleTypes.getters.vinSearchResult];\r\n }\r\n\r\n private get showSearchResults(): boolean {\r\n return (\r\n this.$store.getters[QuickSearchModuleTypes.getters.searchResultsLoadingState] === LoadingState.Loaded &&\r\n this.$store.getters[QuickSearchModuleTypes.getters.totalNumberOfParts] !== -1\r\n );\r\n }\r\n\r\n private partDetailLinkForPart(part: PartSearchResultDetails): string {\r\n return `${this.partDetailLink}${\"?id=\"}${encodeURIComponent(part.searchResult.id)}`;\r\n }\r\n\r\n private get detailSearchLinkForSearchTerm(): string {\r\n return new URI(this.detailSearchLink).addQuery({ searchTerm: this.searchTerm }).toString();\r\n }\r\n\r\n private get catalogueSearchLinkForSearchTerm(): string {\r\n return new URI(this.catalogueSearchLink).addQuery({ searchTerm: this.searchTerm }).toString();\r\n }\r\n\r\n private get showNoResultsFound(): boolean {\r\n return (\r\n (!this.isVinSearchResult && this.partSearchResults && this.partSearchResults.length === 0) ||\r\n (this.isVinSearchResult && !this.vinSearchResult)\r\n );\r\n }\r\n\r\n private get showGoToDetailsSearch(): boolean {\r\n return !this.isVinSearchResult;\r\n }\r\n\r\n private get showNumbers(): boolean {\r\n return !this.isVinSearchResult;\r\n }\r\n\r\n @Watch('partSearchResults')\r\n private updateAvailabilityDebouncedMap(): void {\r\n this.reloadAvailabilityDebouncedMap.clear();\r\n this.showAvailabilityMap.clear();\r\n this.partSearchResults.forEach((result) => {\r\n const reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n this.reloadAvailabilityDebouncedMap.set(result.searchResult.id, reloadAvailabilityDebounced);\r\n this.showAvailabilityMap.set(result.searchResult.id, true);\r\n });\r\n }\r\n\r\n private onQuantityChanged(quantity: number, partId: string): void {\r\n const reloadAvailabilityDebounced = this.reloadAvailabilityDebouncedMap.get(partId);\r\n if (reloadAvailabilityDebounced) {\r\n reloadAvailabilityDebounced(quantity, partId);\r\n }\r\n }\r\n\r\n private onQuantityValid(partId: string): void {\r\n this.showAvailabilityMap.set(partId, true);\r\n this.showAvailabilityMap = new Map(this.showAvailabilityMap);\r\n }\r\n\r\n private onQuantityInvalid(partId: string): void {\r\n this.showAvailabilityMap.set(partId, false);\r\n this.showAvailabilityMap = new Map(this.showAvailabilityMap);\r\n }\r\n\r\n private reloadAvailability(quantity: number, partId: string): void {\r\n this.$store.dispatch(QuickSearchModuleTypes.actions.reloadPartAvailabilityForPart, {\r\n partId,\r\n quantity,\r\n });\r\n }\r\n\r\n private maxAllowedQuantity(result: PartSearchResultDetails): number | undefined {\r\n if (!result.searchResult.isUsedPart) {\r\n return undefined;\r\n }\r\n\r\n return this.getAvailableItemCount(result);\r\n }\r\n\r\n private getAvailableItemCount(result: PartSearchResultDetails): number {\r\n if (!result.partAvailability || !result.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return result.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSearchResult.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSearchResult.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuickSearchResult.vue?vue&type=template&id=61043012&\"\nimport script from \"./QuickSearchResult.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuickSearchResult.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SmoothReflow',{attrs:{\"tag\":\"div\",\"options\":{ transitionEvent: { selector: '.quick-search-result' } }}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSearchResults),expression:\"showSearchResults\"}],staticClass:\"quick-search-result container-fluid\",attrs:{\"id\":\"vin-search-result\"}},[_c('div',{staticClass:\"row quick-search-result__head\"},[_c('div',{staticClass:\"col-10\"},[_c('h2',{staticClass:\"quick-search-result__title\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.VIN_SEARCH_RESULT.TITLE))+\":\")])]),_c('div',{staticClass:\"col-2\"},[_c('button',{staticClass:\"btn w-100 quick-search-result__close-button\",on:{\"click\":_vm.closeResults}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.VIN_SEARCH_RESULT.CLOSE_BUTTON))+\"\\n \")])])]),_c('div',{staticClass:\"quick-search-result__container w-100\"},[(_vm.showNoResultsFoundText)?_c('div',{staticClass:\"quick-search-result__no-results-found-text w-100\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.VIN_SEARCH_RESULT.NO_RESULTS_FOUND))+\"\\n \")]):_vm._e(),(_vm.vinSearchResult)?_c('VinSearchResultItem',{attrs:{\"url\":_vm.vinSearchResult.partCatalogueUrl,\"name\":_vm.vinSearchResult.name,\"image-url\":_vm.vinSearchResult.partCatalogueThumbnailUrl}}):_vm._e(),_c('div',{staticClass:\"quick-search-result__button-link-container row\"},[(!_vm.showGoToCatalogueSearchButton)?_c('div',{staticClass:\"col-12 text-center\"},[_c('a',{staticClass:\"btn quick-search-result__button-link\",attrs:{\"href\":_vm.catalogueSearchLinkForSearchTerm}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.VIN_SEARCH_RESULT.LINK_TO_PARTS_CATALOGUE_SEARCH_TEXT))+\"\\n \")])]):_vm._e()]),_c('div',{staticClass:\"quick-search-result__transition\"})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card catalogue-search-card\"},[_c('div',{staticClass:\"row no-gutters\"},[(_vm.imageUrl)?_c('div',{staticClass:\"col-12 col-lg-3 catalogue-search-card__image-container\"},[_c('img',{staticClass:\"card-img-top catalogue-search-card__result-image\",attrs:{\"src\":_vm.imageUrl,\"alt\":\"part-catalogue\"}})]):_c('div',{staticClass:\"col-12 col-lg-3 catalogue-search-card__image-container catalogue-search-card__image-container--not-found\"},[_c('img',{staticClass:\"card-img-top catalogue-search-card__result-image\",attrs:{\"src\":\"/images/broken-image.svg\",\"alt\":\"part-catalogue\"}})]),_c('div',{staticClass:\"catalogue-search-card__simple-card\"},[_c('div',{staticClass:\"catalogue-search-card__title\"},[(_vm.url)?_c('a',{attrs:{\"href\":_vm.url}},[_vm._v(_vm._s(_vm.name))]):_c('span',[_vm._v(_vm._s(_vm.name))])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\n\r\n@Component\r\nexport default class VinSearchResultItem extends Mixins(BaseMixin) {\r\n @Prop()\r\n private readonly url!: string | null;\r\n\r\n @Prop()\r\n private readonly name!: string;\r\n\r\n @Prop()\r\n private readonly imageUrl!: string | null;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VinSearchResultItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VinSearchResultItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VinSearchResultItem.vue?vue&type=template&id=b154977a&scoped=true&\"\nimport script from \"./VinSearchResultItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./VinSearchResultItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b154977a\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop, Watch } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { VinSearchModuleTypes } from '@/store/modules/vin-search';\r\nimport SmoothReflow from '@/components/smooth-reflow/SmoothReflow.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport URI from 'urijs';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport VinSearchResultItem from '@/components/vin-search/VinSearchResultItem.vue';\r\nimport { VinSearchResult as VinSearchResultModel } from '@/entities/vin-search/VinSearchResult';\r\n\r\n@Component({\r\n components: {\r\n SmoothReflow,\r\n LoadingIndicator,\r\n VinSearchResultItem,\r\n },\r\n})\r\nexport default class VinSearchResult extends Mixins(BaseMixin) {\r\n @Prop({ type: String })\r\n private catalogueSearchLink!: string;\r\n\r\n private closeResults(): void {\r\n this.$store.dispatch(VinSearchModuleTypes.actions.closeVinSearchResults);\r\n }\r\n\r\n private get searchTerm(): string {\r\n return this.$store.getters[VinSearchModuleTypes.getters.searchTerm];\r\n }\r\n\r\n private get vinSearchResult(): VinSearchResultModel {\r\n return this.$store.getters[VinSearchModuleTypes.getters.vinSearchResult];\r\n }\r\n\r\n private get showSearchResults(): boolean {\r\n return this.$store.getters[VinSearchModuleTypes.getters.searchResultsLoadingState] === LoadingState.Loaded;\r\n }\r\n\r\n private get catalogueSearchLinkForSearchTerm(): string {\r\n return new URI(this.catalogueSearchLink).addQuery({ searchTerm: this.searchTerm }).toString();\r\n }\r\n\r\n private get showNoResultsFoundText(): boolean {\r\n return !this.vinSearchResult;\r\n }\r\n\r\n private get showGoToCatalogueSearchButton(): boolean {\r\n return !this.vinSearchResult || !this.vinSearchResult.partCatalogueUrl;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VinSearchResult.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VinSearchResult.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VinSearchResult.vue?vue&type=template&id=eb9ca12c&\"\nimport script from \"./VinSearchResult.vue?vue&type=script&lang=ts&\"\nexport * from \"./VinSearchResult.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('RelatedParts',{attrs:{\"fullPartIds\":[_vm.fullPartId],\"isCloseable\":false,\"partActionLink\":_vm.partActionLink}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SmoothReflow',{staticClass:\"col-12 related-parts-container\",attrs:{\"tag\":\"div\",\"options\":{ transitionEvent: { selector: '.related-parts' }}}},[(_vm.visible)?_c('div',{staticClass:\"related-parts\"},[_c('h2',{staticClass:\"related-parts__heading\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART.ALTERNATIVES_AND_REPLACEMENTS)))]),(_vm.isCloseable)?_c('button',{staticClass:\"btn btn-secondary related-parts__icon-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.close($event)}}},[_c('CloseIcon')],1):_vm._e(),_c('div',{staticClass:\"row\"},[_vm._l((_vm.alternativeParts),function(part){return _c('RelatedPart',{key:part.partId,attrs:{\"relatedPart\":part,\"partActionLink\":_vm.partActionLink,\"relatedPartType\":_vm.relatedPartType.Alternative}})}),_vm._l((_vm.replacementParts),function(part){return _c('RelatedPart',{key:part.partId,attrs:{\"relatedPart\":part,\"partActionLink\":_vm.partActionLink,\"relatedPartType\":_vm.relatedPartType.Replacement}})}),_vm._l((_vm.childBrandParts),function(part){return _c('RelatedPart',{key:part.partId,attrs:{\"relatedPart\":part,\"partActionLink\":_vm.partActionLink,\"relatedPartType\":_vm.relatedPartType.ChildBrandPart}})})],2),(_vm.isLoading)?_c('div',{staticClass:\"col-12 d-flex justify-content-center\"},[_c('LoadingIndicator',{attrs:{\"classPostfix\":\"light\"}})],1):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-12 col-md-6 col-lg-4 col-xl-3 mb-3\"},[_c('div',{staticClass:\"card h-100 related-part__wrapper part-search__result\"},[_c('RelatedPartImage',{attrs:{\"href\":_vm.partDetailLink,\"src\":_vm.relatedPart.imageUrl,\"alt\":_vm.relatedPart.partNumber}}),_c('div',{staticClass:\"row related-part__result-content\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"related-part__type\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.PART.ForRelation(_vm.relatedPartType)))+\"\\n \"+_vm._s(_vm.isReplacement ? _vm.relatedPart.predecessorPartNumber : '')+\"\\n \")]),_c('a',{attrs:{\"href\":_vm.partDetailLink}},[_c('h2',{staticClass:\"related-part__big-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.relatedPart.name)+\"\\n \")])]),_c('div',{staticClass:\"related-part__small-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.relatedPart.partNumber)+\"\\n \")]),_c('div',{staticClass:\"related-part__description\"},[_vm._v(\"\\n \"+_vm._s(_vm.relatedPart.brandCode)+\"\\n \")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8 related-part__part-info\"},[(_vm.isLoadingAvailability)?_c('div',{staticClass:\"\\n w-100\\n d-flex\\n justify-content-center\\n align-items-center\\n teaser__delivery-loading-indicator\\n \"},[_c('LoadingIndicator')],1):[(_vm.relatedPart.partAvailability)?_c('DeliveryTimeToolTip',{staticClass:\"related-part__delivery-text\",style:({\n color: _vm.relatedPart.partAvailability.color,\n visibility: _vm.showAvailability ? 'visible' : 'hidden',\n }),attrs:{\"partAvailability\":_vm.relatedPart.partAvailability}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.relatedPart.partAvailability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")]):_vm._e()],(!_vm.relatedPart.isNotInStock)?_c('Price',{attrs:{\"priceNetCents\":_vm.relatedPart.price.priceNetCents,\"priceGrossCents\":_vm.relatedPart.price.priceGrossCents,\"priceDiscountedNetCents\":_vm.relatedPart.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.relatedPart.depositPartPrice && _vm.relatedPart.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":_vm.relatedPart.depositPartPrice && _vm.relatedPart.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.relatedPart.depositPartPrice && _vm.relatedPart.depositPartPrice.priceDiscountedNetCents,\"isHidden\":_vm.relatedPart.price.isHidden,\"currencySymbol\":_vm.relatedPart.price.currency.htmlSymbol,\"hasSubunit\":_vm.relatedPart.price.currency.hasSubunit,\"noWrap\":true}}):_vm._e()],2),(!_vm.relatedPart.isNotInStock)?_c('div',{staticClass:\"col-4 d-flex justify-content-end\"},[(!_vm.relatedPart.price.isHidden)?_c('ShoppingCartActions',{attrs:{\"positionAbsolute\":false,\"fullPartId\":_vm.relatedPart.partId,\"partNumber\":_vm.relatedPart.partNumber,\"unitCode\":_vm.relatedPart.unitCode,\"maxAllowedQuantity\":_vm.maxAllowedQuantity},on:{\"quantity-changed\":_vm.onQuantityChanged,\"quantity-valid\":_vm.onQuantityValid,\"quantity-invalid\":_vm.onQuantityInvalid}}):_vm._e()],1):_vm._e()])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"part-search__result-image-link\",class:{\n 'd-flex justify-content-center align-items-center': _vm.couldNotLoadImage,\n },attrs:{\"href\":_vm.href}},[_c('img',{staticClass:\"card-img-top part-search__result-image\",class:{\n 'part-search__result-image--not-found': _vm.couldNotLoadImage,\n },attrs:{\"srcset\":_vm.couldNotLoadImage\n ? ''\n : ((_vm.getUrlForImage(_vm.src, true, 500)) + \" 500w, \" + (_vm.getUrlForImage(\n _vm.src,\n true,\n 750\n )) + \" 750w\"),\"sizes\":\"(max-width: 767px) 750px,\\n (max-width: 1500px) 500px,\\n 500px\",\"src\":_vm.couldNotLoadImage\n ? '/images/broken-image.svg'\n : (\"\" + (_vm.getUrlForImage(_vm.src, true, 500))),\"alt\":_vm.alt},on:{\"~error\":function($event){return _vm.imageLoadError($event)}}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class RelatedPartImage extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private src!: string;\r\n\r\n @Prop(String)\r\n private alt!: string;\r\n\r\n @Prop(String)\r\n private href!: string;\r\n\r\n private couldNotLoadImage: boolean = false;\r\n\r\n private imageLoadError(): void {\r\n this.couldNotLoadImage = true;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPartImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPartImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RelatedPartImage.vue?vue&type=template&id=066ab01a&\"\nimport script from \"./RelatedPartImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./RelatedPartImage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { RelatedPartType } from '@/entities/RelatedPartType';\r\nimport { RelatedPart as RelatedPartEntity } from '@/entities/RelatedPart';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport RelatedPartImage from '@/components/related-part/RelatedPartImage.vue';\r\nimport Price from '@/components/price/Price.vue';\r\nimport URI from 'urijs';\r\nimport { PartService } from '@/services/part-service';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n components: {\r\n RelatedPartImage,\r\n ShoppingCartActions,\r\n Price,\r\n LoadingIndicator,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class RelatedPart extends Mixins(BaseMixin) {\r\n @Prop({ type: Object, required: true })\r\n private relatedPart!: RelatedPartEntity;\r\n @Prop({ type: String as () => RelatedPartType, required: true })\r\n private relatedPartType!: RelatedPartType;\r\n @Prop({ type: String, required: true })\r\n private partActionLink!: string;\r\n\r\n private quantity: number = 1;\r\n private isLoadingAvailability: boolean = false;\r\n private partService: PartService = new PartService();\r\n private reloadAvailabilityDebounced: () => Promise | undefined;\r\n private showAvailability: boolean = true;\r\n\r\n constructor() {\r\n super();\r\n this.reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n }\r\n\r\n // called by vue\r\n public created(): void {\r\n this.reloadAvailability();\r\n }\r\n\r\n public get partDetailLink(): string {\r\n return new URI(this.partActionLink).addQuery('id', this.relatedPart.partId).toString();\r\n }\r\n\r\n public get isReplacement(): boolean {\r\n return RelatedPartType.Replacement === this.relatedPartType;\r\n }\r\n\r\n private get maxAllowedQuantity(): number | undefined {\r\n if (!this.relatedPart.isUsedPart) {\r\n return undefined;\r\n }\r\n\r\n return this.getAvailableItemCount();\r\n }\r\n\r\n private onQuantityChanged(quantity: number): void {\r\n this.quantity = quantity;\r\n this.reloadAvailabilityDebounced();\r\n }\r\n\r\n private onQuantityValid(): void {\r\n this.showAvailability = true;\r\n }\r\n\r\n private onQuantityInvalid(): void {\r\n this.showAvailability = false;\r\n }\r\n\r\n private async reloadAvailability(): Promise {\r\n this.isLoadingAvailability = true;\r\n try {\r\n const availability = await this.partService.getAvailabilityOfPart(this.relatedPart.partId, this.quantity);\r\n if (!availability) {\r\n return;\r\n }\r\n this.relatedPart.partAvailability = availability;\r\n } catch {\r\n // ignore\r\n } finally {\r\n this.isLoadingAvailability = false;\r\n }\r\n }\r\n\r\n private getAvailableItemCount(): number {\r\n if (!this.relatedPart.partAvailability || !this.relatedPart.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return this.relatedPart.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RelatedPart.vue?vue&type=template&id=5485ece2&\"\nimport script from \"./RelatedPart.vue?vue&type=script&lang=ts&\"\nexport * from \"./RelatedPart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nexport const CloseIcon = Vue.extend({\r\n functional: true,\r\n name: 'CloseIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=CloseIcon.jsx.map","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport store from '@/store';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport RelatedPart from '@/components/related-part/RelatedPart.vue';\r\nimport SmoothReflow from '@/components/smooth-reflow/SmoothReflow.vue';\r\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { RelatedPart as RelatedPartEntity } from '@/entities/RelatedPart';\r\nimport { RelatedPartsModuleTypes } from '@/store/modules/related-parts';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { CloseIcon } from '@/components/icons/CloseIcon';\r\nimport { RelatedPartType } from '@/entities/RelatedPartType';\r\n\r\n@Component({\r\n store,\r\n components: {\r\n LoadingIndicator,\r\n RelatedPart,\r\n SmoothReflow,\r\n CloseIcon,\r\n },\r\n})\r\nexport default class RelatedParts extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private fullPartIds!: string[];\r\n @Prop(String)\r\n private partActionLink!: string;\r\n @Prop({ type: Boolean, default: true })\r\n private isCloseable!: boolean;\r\n\r\n private relatedPartType: typeof RelatedPartType = RelatedPartType;\r\n\r\n public get isLoading(): boolean {\r\n return (\r\n this.$store.getters[\r\n RelatedPartsModuleTypes.getters.relatedPartsLoadingState\r\n ] === LoadingState.Loading\r\n );\r\n }\r\n\r\n public get visible(): boolean {\r\n return (\r\n this.$store.getters[RelatedPartsModuleTypes.getters.partId] &&\r\n this.fullPartIds.includes(\r\n this.$store.getters[RelatedPartsModuleTypes.getters.partId]\r\n )\r\n );\r\n }\r\n\r\n public get replacementParts(): RelatedPartEntity[] {\r\n return this.$store.getters[\r\n RelatedPartsModuleTypes.getters.replacementParts\r\n ];\r\n }\r\n\r\n public get alternativeParts(): RelatedPartEntity[] {\r\n return this.$store.getters[\r\n RelatedPartsModuleTypes.getters.alternativeParts\r\n ];\r\n }\r\n\r\n public get childBrandParts(): RelatedPartEntity[] {\r\n return this.$store.getters[\r\n RelatedPartsModuleTypes.getters.childBrandParts\r\n ];\r\n }\r\n\r\n public close(): void {\r\n this.$store.dispatch(\r\n RelatedPartsModuleTypes.actions.unloadRelatedParts\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedParts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedParts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RelatedParts.vue?vue&type=template&id=8645024e&\"\nimport script from \"./RelatedParts.vue?vue&type=script&lang=ts&\"\nexport * from \"./RelatedParts.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport RelatedParts from '@/components/related-part/RelatedParts.vue';\r\nimport { RelatedPartsModuleTypes } from '@/store/modules/related-parts';\r\n\r\n@Component({\r\n components: {\r\n RelatedParts,\r\n },\r\n})\r\nexport default class RelatedPartsContainer extends Mixins(BaseMixin) {\r\n @Prop({ type: String, required: true })\r\n private fullPartId!: string;\r\n @Prop({ type: String, required: true })\r\n private partActionLink!: string;\r\n\r\n protected mounted(): void {\r\n this.$store.dispatch(RelatedPartsModuleTypes.actions.loadRelatedParts, {\r\n id: this.fullPartId,\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPartsContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPartsContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RelatedPartsContainer.vue?vue&type=template&id=f8966d1a&\"\nimport script from \"./RelatedPartsContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./RelatedPartsContainer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row\"},[(_vm.isLoadingAvailability)?_c('div',{staticClass:\"col-6 d-flex align-items-center part-details-actions__availability\"},[_c('LoadingIndicator')],1):[_c('DeliveryTimeToolTip',{staticClass:\"col-6 d-flex align-items-center part-details-actions__availability\",style:({ color: _vm.partAvailability && _vm.partAvailability.color, visibility: _vm.isQuantityValid ? 'visible' : 'hidden' }),attrs:{\"partAvailability\":_vm.partAvailability}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.partAvailability && _vm.partAvailability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])],(!_vm.isNotInStockButReplaceable)?_c('div',{staticClass:\"col-6\"},[_c('div',{staticClass:\"row justify-content-end\"},[_c('div',{staticClass:\"col-12 col-sm-5 d-flex justify-content-end align-items-center pr-0\"},[_c('span',{staticClass:\"part-details-actions__quantity-label\"},[_vm._v(_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.PART.UNIT_CODE_TEXT.For(_vm.unitCode),_vm.l10n.PART.UNIT_CODE_TEXT.UNKNOWN)))]),_c('div',{staticClass:\"part-details-actions__quantity\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentQuantity),expression:\"currentQuantity\"}],class:{ 'is-invalid': !_vm.isQuantityValid },attrs:{\"type\":\"number\",\"min\":\"1\",\"disabled\":_vm.isItemCurrentlyBeingAdded},domProps:{\"value\":(_vm.currentQuantity)},on:{\"keyup\":_vm.quantityChanged,\"mousewheel\":_vm.quantityChanged,\"focus\":function($event){return _vm.quantityFocusStateChanged(true)},\"blur\":function($event){return _vm.quantityFocusStateChanged(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentQuantity=$event.target.value}}})])]),_c('div',{staticClass:\"col-12 col-sm-7 pr-0\"},[(_vm.isItemCurrentlyBeingAdded)?_c('div',{staticClass:\"w-100 d-flex justify-content-center align-items-center part-details-actions__loading\"},[_c('LoadingIndicator')],1):_vm._e(),(!_vm.isItemCurrentlyBeingAdded)?_c('button',{staticClass:\"d-flex justify-content-center justify-content-xl-between align-items-center part-details-actions__button\",attrs:{\"disabled\":!_vm.isQuantityValid || _vm.isItemCurrentlyBeingAdded || !_vm.hasActiveShoppingCart},on:{\"click\":_vm.onAddItemToShoppingCart}},[_c('mq-layout',{attrs:{\"mq\":\"xl+\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_DETAILS.ADD_TO_CART)))]),_c('div',{staticClass:\"part-details-actions__button-logo\"},[_c('AddToShoppingCartIcon')],1)],1):_vm._e()])])]):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { AddToShoppingCartIcon } from '@/components/icons/AddToShoppingCartIcon';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\nimport { PartAnalytics } from '@/entities/analytics/PartAnalytics';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartAvailability } from '@/entities/PartAvailability';\r\nimport { PartService } from '@/services/part-service';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n AddToShoppingCartIcon,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class PartDetailsActions extends Mixins(BaseMixin) {\r\n @Prop({ type: String, required: true })\r\n private fullPartId!: string;\r\n @Prop({ type: String, required: true })\r\n private partNumber!: string;\r\n @Prop({ type: String, required: true })\r\n private brandCode!: string;\r\n @Prop({ type: String })\r\n private unitCode!: string;\r\n @Prop({ type: Boolean, default: false })\r\n private isNotInStockButReplaceable!: boolean;\r\n @Prop({ type: Boolean, default: false })\r\n private isUsedPart!: boolean;\r\n\r\n private currentQuantity: number = 1;\r\n private quantityHasFocus: boolean = false;\r\n private partAvailability: PartAvailability | null = null;\r\n private isLoadingAvailability: boolean = false;\r\n private partService: PartService = new PartService();\r\n private reloadAvailabilityDebounced: (quantity: number) => Promise | undefined;\r\n\r\n constructor() {\r\n super();\r\n this.reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n }\r\n\r\n // called by vue\r\n public created(): void {\r\n this.reloadAvailability(this.currentQuantity);\r\n }\r\n\r\n public get isQuantityValid(): boolean {\r\n if (!this.isUsedPart) {\r\n return this.currentQuantity > 0;\r\n }\r\n\r\n return this.partAvailability !== null && this.currentQuantity > 0 && this.currentQuantity <= this.getAvailableItemCount();\r\n }\r\n\r\n public get hasActiveShoppingCart(): boolean {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.hasActiveShoppingCart];\r\n }\r\n\r\n public get isItemCurrentlyBeingAdded(): boolean {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.isItemCurrentlyBeingAdded](this.fullPartId);\r\n }\r\n\r\n private async onAddItemToShoppingCart(): Promise {\r\n await this.$store.dispatch(ShoppingCartModuleTypes.actions.addShoppingCartItem, {\r\n fullPartId: this.fullPartId,\r\n partNumber: this.partNumber,\r\n quantity: this.currentQuantity,\r\n });\r\n this.currentQuantity = 1;\r\n this.reloadAvailability(this.currentQuantity);\r\n }\r\n\r\n private quantityChanged(): void {\r\n if (this.isQuantityValid && this.quantityHasFocus) {\r\n this.reloadAvailabilityDebounced(this.currentQuantity);\r\n }\r\n }\r\n\r\n private quantityFocusStateChanged(hasFocus: boolean): void {\r\n this.quantityHasFocus = hasFocus;\r\n }\r\n\r\n private async reloadAvailability(quantity: number): Promise {\r\n this.isLoadingAvailability = true;\r\n try {\r\n const availability = await this.partService.getAvailabilityOfPart(\r\n this.fullPartId,\r\n quantity,\r\n undefined,\r\n true\r\n );\r\n this.partAvailability = availability;\r\n } catch {\r\n this.partAvailability = null;\r\n } finally {\r\n this.isLoadingAvailability = false;\r\n }\r\n }\r\n\r\n private getAvailableItemCount(): number {\r\n if (!this.partAvailability || !this.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return this.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartDetailsActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartDetailsActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartDetailsActions.vue?vue&type=template&id=5833e38e&\"\nimport script from \"./PartDetailsActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartDetailsActions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100 h-100\"},[(!_vm.activeShoppingCart)?_c('div',{staticClass:\"d-flex w-100 h-100 justify-content-center align-items-center\"},[_c('LoadingIndicator')],1):_c('div',{staticClass:\"container-fluid pl-xl-0 pr-xl-0 pb-3 shopping-cart-overview\"},[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"shopping-cart-overview__heading\"},[_c('h1',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.SHOPPING_CART)))])])])]),(_vm.isUserAuthenticated)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-4\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"shoppingCartSelect\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.SHOPPING_CART)))]),_c('select',{staticClass:\"form-control shopping-cart-overview__cart-select\",attrs:{\"id\":\"shoppingCartSelect\"},on:{\"change\":_vm.selectActiveShoppingCart}},_vm._l((_vm.shoppingCarts),function(cart){return _c('option',{key:cart.id,domProps:{\"value\":cart.id,\"selected\":_vm.activeShoppingCart.id === cart.id}},[_vm._v(_vm._s(cart.cartName))])}),0)])])]):_vm._e(),_c('ShoppingCartOverviewMetadata',{key:_vm.activeShoppingCart.id,attrs:{\"isUserAuthenticated\":_vm.isUserAuthenticated,\"isEmpty\":_vm.isShoppingCartEmpty,\"cartName\":_vm.activeShoppingCart.cartName,\"orderName\":_vm.activeShoppingCart.orderName},on:{\"save-metadata\":_vm.saveMetadata}}),(!_vm.hasCustomerShippingCosts)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-4\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"orderMethodSelect\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.ORDER_METHOD)))]),_c('select',{staticClass:\"form-control shopping-cart-overview__order-method-select\",attrs:{\"id\":\"orderMethodSelect\"},on:{\"change\":_vm.selectOrderMethodForCart}},_vm._l((_vm.orderMethods),function(method){return _c('option',{key:method.id,domProps:{\"value\":method.value,\"selected\":_vm.activeShoppingCart && _vm.activeShoppingCart.orderMethod === method.value}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.ORDER_METHOD.For(method.value))))])}),0)])])]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-4\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"shippingMethodSelect\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.SHIPPING)))]),_c('select',{staticClass:\"form-control shopping-cart-overview__shipping-method-select\",attrs:{\"id\":\"shippingMethodSelect\"},on:{\"change\":_vm.selectShippingMethodForCart}},_vm._l((_vm.shippingMethods),function(method){return _c('option',{key:method,domProps:{\"value\":method,\"selected\":_vm.activeShoppingCart && _vm.activeShoppingCart.shippingMethod === method}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHIPPING.SHIPPING_METHOD_VALUE.For(method))))])}),0)])])]),_c('hr',{staticClass:\"shopping-cart-overview__separator\"}),_c('div',{staticClass:\"row p-3\"},[_c('div',{staticClass:\"col-12\"},[_c('ShoppingCartOverviewItems',{attrs:{\"cartItems\":_vm.activeShoppingCart && _vm.activeShoppingCart.cartItems,\"partDetailLink\":_vm.partDetailLink}})],1)]),_c('div',{staticClass:\"row d-flex justify-content-between shopping-cart-overview__buttons-container\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3 order-last order-sm-first\"},[_c('a',{staticClass:\"btn btn-secondary w-100\",attrs:{\"href\":\"/\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.CONTINUE_SHOPPING)))])]),(!_vm.hideCheckoutButton)?_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3 order-first order-sm-last mb-3 mb-sm-0\"},[(!_vm.isShoppingCartEmpty)?_c('a',{staticClass:\"btn btn-primary w-100\",attrs:{\"href\":_vm.checkoutUrlWithShoppingCartId}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.GO_TO_SUMMARY)))]):_vm._e()]):_vm._e()])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row shopping-cart-overview__item\"},[_c('div',{staticClass:\"shopping-cart-overview__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.PART_NUMBER)))]),_c('div',{staticClass:\"shopping-cart-overview__row-item row-item__part-number col-6 col-md-10 col-xl-2\"},[_c('a',{attrs:{\"href\":_vm.partDetailLinkForCartItem()}},[_vm._v(_vm._s(_vm.cartItem.partNumber))])]),_c('div',{staticClass:\"shopping-cart-overview__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.DESCRIPTION)))]),_c('div',{staticClass:\"shopping-cart-overview__row-item row-item__description col-6 col-md-10 col-xl-2\"},[_c('a',{attrs:{\"href\":_vm.partDetailLinkForCartItem()}},[_vm._v(_vm._s(_vm.cartItem.description))])]),_c('div',{staticClass:\"shopping-cart-overview__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.BRAND)))]),_c('div',{staticClass:\"shopping-cart-overview__row-item row-item__brand col-6 col-md-10 col-xl-1\"},[_vm._v(_vm._s(_vm.cartItem.brand))]),_c('div',{staticClass:\"shopping-cart-overview__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.DELIVERY)))]),_c('div',{staticClass:\"shopping-cart-overview__row-item row-item__delivery col-6 col-md-10 col-xl-1\",style:({ color: _vm.cartItem.partAvailability && _vm.cartItem.partAvailability.color })},[(_vm.isLoadingAvailability)?_c('div',{staticClass:\"w-100 h-100 d-flex justify-content-center align-items-center row-item__loading\"},[_c('LoadingIndicator')],1):[_c('DeliveryTimeToolTip',{attrs:{\"partAvailability\":_vm.cartItem.partAvailability}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.cartItem.partAvailability && _vm.cartItem.partAvailability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])]],2),_c('div',{staticClass:\"shopping-cart-overview__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.USER_INFO_TEXT)))]),_c('div',{staticClass:\"shopping-cart-overview__row-item row-item__user-info-text col-6 col-md-10 col-xl-2\"},[_c('ShoppingCartItemUserInfoText',{attrs:{\"userInfoText\":_vm.cartItem.userInfoText},on:{\"save\":_vm.saveUserInfoText}})],1),_c('div',{staticClass:\"shopping-cart-overview__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.PRICE)))]),_c('div',{staticClass:\"shopping-cart-overview__row-item row-item__price col-6 col-md-10 col-xl-2 flex-column\"},[_c('Price',{attrs:{\"priceNetCents\":_vm.cartItem.price.priceNetCents,\"priceGrossCents\":_vm.cartItem.price.priceGrossCents,\"priceDiscountedNetCents\":_vm.cartItem.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.cartItem.depositPartPrice && _vm.cartItem.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":_vm.cartItem.depositPartPrice && _vm.cartItem.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.cartItem.depositPartPrice && _vm.cartItem.depositPartPrice.priceDiscountedNetCents,\"isHidden\":_vm.cartItem.price.isHidden,\"currencySymbol\":_vm.cartItem.price.currency.htmlSymbol,\"hasSubunit\":_vm.cartItem.price.currency.hasSubunit,\"rightAligned\":true,\"noWrap\":true}})],1),_c('div',{staticClass:\"col-6 col-md-2 d-xl-none\"}),_c('div',{staticClass:\"col-6 col-md-4 col-xl-2 d-flex shopping-cart-overview__row-item row-item__actions\"},[_c('ShoppingCartItemActions',{attrs:{\"unitCode\":_vm.cartItem.unitCode,\"quantity\":_vm.cartItem.quantity,\"maxAllowedQuantity\":_vm.getAvailableItemCount(_vm.cartItem)},on:{\"delete-item\":_vm.deleteItem,\"save-quantity\":_vm.saveQuantity,\"move-item\":_vm.moveItem}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shopping-cart-overview-actions d-flex flex-wrap justify-content-start\"},[(!_vm.editModeForMoveOfItemIsActive)?_c('div',{staticClass:\"shopping-cart-overview-actions__quantity\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.currentQuantity),expression:\"currentQuantity\",modifiers:{\"number\":true}}],class:{ 'is-invalid': !_vm.isQuantityValid },attrs:{\"type\":\"number\",\"min\":\"1\",\"step\":\"1\"},domProps:{\"value\":(_vm.currentQuantity)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.saveQuantityIfValid($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentQuantity=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}}),(_vm.showQuantitySaveButton)?_c('button',{staticClass:\"\\n btn btn-primary\\n ml-1\\n d-flex\\n justify-content-center\\n align-items-center\\n p-0\\n shopping-cart-overview-actions__button shopping-cart-overview-actions__button--save\\n \",attrs:{\"disabled\":!_vm.isQuantityValid},on:{\"click\":_vm.saveQuantity}},[_c('SaveIcon')],1):_vm._e(),_c('div',{staticClass:\"shopping-cart-overview-actions__quantity-label\"},[_vm._v(_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.PART.UNIT_CODE_TEXT.For(_vm.unitCode),_vm.l10n.PART.UNIT_CODE_TEXT.UNKNOWN)))])]):_vm._e(),(!_vm.editModeForMoveOfItemIsActive && !_vm.showQuantitySaveButton)?_c('button',{staticClass:\"\\n btn btn-secondary\\n d-flex\\n justify-content-center\\n align-items-center\\n p-0\\n shopping-cart-overview-actions__button\\n \",on:{\"click\":_vm.deleteItem}},[_c('DeleteIcon')],1):_vm._e(),(!_vm.editModeForMoveOfItemIsActive && !_vm.showQuantitySaveButton && _vm.isUserAuthenticated)?_c('button',{staticClass:\"btn btn-secondary shopping-cart-overview-actions__move-item-button\",on:{\"click\":_vm.moveItemEditMode}},[_c('MoveIcon')],1):_vm._e(),(_vm.editModeForMoveOfItemIsActive)?_c('select',{staticClass:\"form-control shopping-cart-overview-actions__cart-select\",on:{\"change\":_vm.targetShoppingCartSelectedForItemMove}},[_c('option',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.MOVE_CART_ITEM_DEFAULT_OPTION)))]),_vm._l((_vm.targetShoppingCarts),function(cart){return _c('option',{key:cart.id,domProps:{\"value\":cart.id}},[_vm._v(_vm._s(cart.cartName))])})],2):_vm._e(),(_vm.editModeForMoveOfItemIsActive)?_c('button',{staticClass:\"btn btn-secondary shopping-cart-overview-actions__cancel-move-item-button\",on:{\"click\":_vm.moveItemEditMode}},[_c('CloseIcon')],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nexport const DeleteIcon = Vue.extend({\r\n functional: true,\r\n name: 'DeleteIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=DeleteIcon.jsx.map","import Vue from 'vue';\r\nexport const SaveIcon = Vue.extend({\r\n functional: true,\r\n name: 'SaveIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=SaveIcon.jsx.map","import Vue from 'vue';\r\nexport const MoveIcon = Vue.extend({\r\n functional: true,\r\n name: 'MoveIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=MoveIcon.jsx.map","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch, Mixins, Emit } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ResHelper } from '@/helper/ResHelper';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport { UserHelper } from '@/helper/user';\r\nimport { ShoppingCartItem } from '@/entities/ShoppingCartItem';\r\nimport { DeleteIcon } from '@/components/icons/DeleteIcon';\r\nimport { SaveIcon } from '@/components/icons/SaveIcon';\r\nimport { MoveIcon } from '@/components/icons/MoveIcon';\r\nimport { CloseIcon } from '@/components/icons/CloseIcon';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\n\r\n@Component({\r\n components: {\r\n DeleteIcon,\r\n SaveIcon,\r\n MoveIcon,\r\n CloseIcon,\r\n },\r\n})\r\nexport default class ShoppingCartItemActions extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private unitCode!: string;\r\n @Prop(Number)\r\n private quantity!: number;\r\n @Prop(Number)\r\n private maxAllowedQuantity?: number;\r\n\r\n private currentQuantity: number = this.quantity;\r\n private editModeForMoveOfItemIsActive: boolean = false;\r\n private isUserAuthenticated: boolean = UserHelper.isAuthenticated();\r\n\r\n public get targetShoppingCarts(): ShoppingCart[] {\r\n const allCarts = this.$store.getters[ShoppingCartModuleTypes.getters.shoppingCarts] as ShoppingCart[];\r\n return allCarts.filter((cart) => cart.id !== this.activeShoppingCart.id);\r\n }\r\n\r\n public get activeShoppingCart(): ShoppingCart {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.activeShoppingCart];\r\n }\r\n\r\n public get showQuantitySaveButton(): boolean {\r\n return this.isQuantityValid && this.quantity !== this.currentQuantity;\r\n }\r\n\r\n public get isQuantityValid(): boolean {\r\n return (\r\n this.currentQuantity > 0 &&\r\n (this.maxAllowedQuantity === undefined || this.currentQuantity <= this.maxAllowedQuantity)\r\n );\r\n }\r\n\r\n @Watch('quantity')\r\n public quantityChanged(quantity: number): void {\r\n this.currentQuantity = quantity;\r\n }\r\n\r\n @Emit('delete-item')\r\n private deleteItem(): void {\r\n return;\r\n }\r\n\r\n private saveQuantityIfValid(): void {\r\n if (this.isQuantityValid) {\r\n this.saveQuantity();\r\n }\r\n }\r\n\r\n @Emit('save-quantity')\r\n private saveQuantity(): number {\r\n return this.currentQuantity;\r\n }\r\n\r\n private moveItemEditMode(): void {\r\n this.editModeForMoveOfItemIsActive = !this.editModeForMoveOfItemIsActive;\r\n }\r\n\r\n private targetShoppingCartSelectedForItemMove(event: Event): void {\r\n const selectedShoppingCartId = parseInt((event.target as HTMLSelectElement).value, 10);\r\n if (selectedShoppingCartId == null || isNaN(selectedShoppingCartId)) {\r\n return;\r\n }\r\n this.moveItem(selectedShoppingCartId);\r\n }\r\n\r\n @Emit('move-item')\r\n private moveItem(targetShoppingCartId: number): number {\r\n return targetShoppingCartId;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartItemActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartItemActions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartItemActions.vue?vue&type=template&id=3a6fc46e&\"\nimport script from \"./ShoppingCartItemActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartItemActions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shopping-cart-item-user-info-text\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.currentUserInfoText),expression:\"currentUserInfoText\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\",\"maxlength\":\"50\"},domProps:{\"value\":(_vm.currentUserInfoText)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.save($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentUserInfoText=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),(_vm.showSaveButton)?_c('button',{staticClass:\"btn btn-primary p-0 d-flex justify-content-center align-items-center row-item__user-info-text-save-button\",on:{\"click\":_vm.save}},[_c('SaveIcon')],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Emit, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport { SaveIcon } from '@/components/icons/SaveIcon';\r\n\r\n@Component({\r\n components: {\r\n SaveIcon,\r\n },\r\n})\r\nexport default class ShoppingCartItemUserInfoText extends Vue {\r\n @Prop(String)\r\n private userInfoText!: string;\r\n\r\n private currentUserInfoText: string = this.userInfoText;\r\n\r\n private get showSaveButton(): boolean {\r\n return this.userInfoText !== this.currentUserInfoText;\r\n }\r\n\r\n @Watch('userInfoText')\r\n private userInfoTextChanged(text: string): void {\r\n this.currentUserInfoText = text;\r\n }\r\n\r\n @Emit('save')\r\n private save(): string {\r\n return this.currentUserInfoText;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartItemUserInfoText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartItemUserInfoText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartItemUserInfoText.vue?vue&type=template&id=5332755e&\"\nimport script from \"./ShoppingCartItemUserInfoText.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartItemUserInfoText.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins, Watch } from 'vue-property-decorator';\r\nimport ShoppingCartItemActions from '@/components/shopping-cart/ShoppingCartItemActions.vue';\r\nimport { ShoppingCartItem } from '@/entities/ShoppingCartItem';\r\nimport ShoppingCartItemUserInfoText from '@/components/shopping-cart/ShoppingCartItemUserInfoText.vue';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ShoppingCartModuleTypes } from '../../store/modules/shopping-cart';\r\nimport Price from '@/components/price/Price.vue';\r\nimport { localize } from '../../filters/localize';\r\nimport { PartDeliveryTimeInformation } from '../../entities/PartDeliveryTimeInformation';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartItemActions,\r\n ShoppingCartItemUserInfoText,\r\n LoadingIndicator,\r\n Price,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class ShoppingCartOverviewItem extends Mixins(BaseMixin) {\r\n @Prop({ required: true })\r\n private cartItem!: ShoppingCartItem;\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n @Prop(Boolean)\r\n private isLoadingAvailability!: boolean;\r\n\r\n private getAvailableItemCount(item: ShoppingCartItem): number | undefined {\r\n if (!item.isUsedPart) {\r\n return undefined;\r\n }\r\n if (!item.partAvailability || !item.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return item.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n\r\n private saveUserInfoText(userInfoText: string): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.updateUserInfoTextOfShoppingCartItem, {\r\n shoppingCartItemId: this.cartItem.id,\r\n userInfoText,\r\n });\r\n }\r\n\r\n private saveQuantity(quantity: number): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.updateQuantityOfShoppingCartItem, {\r\n shoppingCartItemId: this.cartItem.id,\r\n quantity,\r\n });\r\n }\r\n\r\n private deleteItem(): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.deleteItemFromActiveShoppingCart, {\r\n shoppingCartItemId: this.cartItem.id,\r\n });\r\n }\r\n\r\n private moveItem(targetShoppingCartId: number): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.moveItemToShoppingCart, {\r\n shoppingCartItemId: this.cartItem.id,\r\n targetShoppingCartId,\r\n });\r\n }\r\n\r\n private partDetailLinkForCartItem(): string {\r\n return `${this.partDetailLink}${encodeURIComponent(this.cartItem.fullPartId)}`;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverviewItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverviewItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartOverviewItem.vue?vue&type=template&id=be23c160&\"\nimport script from \"./ShoppingCartOverviewItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartOverviewItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[[(_vm.cartItems && _vm.cartItems.length > 0)?_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row d-none d-xl-flex shopping-cart-overview__header\"},[_c('div',{staticClass:\"col-2 shopping-cart-overview__header-item\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.PART_NUMBER)))]),_c('div',{staticClass:\"col-2 shopping-cart-overview__header-item\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.DESCRIPTION)))]),_c('div',{staticClass:\"col-1 shopping-cart-overview__header-item\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.BRAND)))]),_c('div',{staticClass:\"col-1 shopping-cart-overview__header-item\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.DELIVERY)))]),_c('div',{staticClass:\"col-2 shopping-cart-overview__header-item\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.USER_INFO_TEXT)))]),_c('div',{staticClass:\"col-2 justify-content-end shopping-cart-overview__header-item\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.PRICE)))]),_c('div',{staticClass:\"col-2 shopping-cart-overview__header-item\"})])]):_vm._e(),_c('div',{staticClass:\"col-12\"},_vm._l((_vm.cartItems),function(cartItem){return _c('ShoppingCartOverviewItem',{key:cartItem.id,attrs:{\"cartItem\":cartItem,\"isLoadingAvailability\":_vm.isItemLoadingAvailability(cartItem.id),\"partDetailLink\":_vm.partDetailLink}})}),1),(_vm.cartItems && _vm.cartItems.length === 0)?_c('div',{staticClass:\"col-12 shopping-cart-overview__item shopping-cart-overview__empty-cart\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.EMPTY_CART)))]):_vm._e()]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\r\nimport ShoppingCartOverviewItem from './ShoppingCartOverviewItem.vue';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { ShoppingCartItem } from '@/entities/ShoppingCartItem';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n ShoppingCartOverviewItem,\r\n },\r\n})\r\nexport default class ShoppingCartOverviewItems extends Mixins(BaseMixin) {\r\n @Prop(Array)\r\n private cartItems!: ShoppingCartItem[];\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n\r\n public isItemLoadingAvailability(itemId: number): boolean {\r\n return this.$store.getters[\r\n ShoppingCartModuleTypes.getters.isItemLoadingAvailability\r\n ](itemId);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverviewItems.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverviewItems.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartOverviewItems.vue?vue&type=template&id=0fc7f92f&\"\nimport script from \"./ShoppingCartOverviewItems.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartOverviewItems.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-4\"},[(_vm.isUserAuthenticated)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"inputCartName\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.CART_NAME)))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.currentCartName),expression:\"currentCartName\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",class:{ 'is-invalid': !_vm.isCartNameValid },attrs:{\"type\":\"text\",\"id\":\"inputCartName\",\"required\":\"\"},domProps:{\"value\":(_vm.currentCartName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.currentCartName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('div',{staticClass:\"invalid-feedback w-auto\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.ERROR_MUST_NOT_BE_EMPTY)))])]):_vm._e(),(!_vm.isEmpty)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"inputOrderName\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.ORDER_NAME)))]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.currentOrderName),expression:\"currentOrderName\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"inputOrderName\"},domProps:{\"value\":(_vm.currentOrderName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.currentOrderName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}})]):_vm._e()]),_c('div',{staticClass:\"col pl-lg-0 form-group d-flex align-items-end\"},[(_vm.showSaveButton)?_c('button',{staticClass:\"btn btn-secondary\",on:{\"click\":_vm.saveMetadata}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_OVERVIEW.SAVE)))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {\r\n Component,\r\n Emit,\r\n Prop,\r\n Vue,\r\n Watch,\r\n Mixins,\r\n} from 'vue-property-decorator';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\n\r\n@Component({})\r\nexport default class ShoppingCartOverviewMetadata extends Mixins(BaseMixin) {\r\n @Prop(Boolean)\r\n private isUserAuthenticated!: boolean;\r\n\r\n @Prop(Boolean)\r\n private isEmpty!: boolean;\r\n\r\n @Prop(String)\r\n private cartName!: string;\r\n\r\n @Prop(String)\r\n private orderName!: string;\r\n\r\n private currentCartName: string = this.cartName;\r\n private currentOrderName: string = this.orderName;\r\n\r\n public get showSaveButton(): boolean {\r\n return (\r\n this.isCartNameValid &&\r\n (this.cartName !== this.currentCartName ||\r\n this.orderName !== this.currentOrderName)\r\n );\r\n }\r\n\r\n public get isCartNameValid(): boolean {\r\n return this.currentCartName !== '';\r\n }\r\n\r\n @Emit('save-metadata')\r\n private saveMetadata(): { cartName: string; orderName: string } {\r\n return {\r\n cartName: this.currentCartName,\r\n orderName: this.currentOrderName,\r\n };\r\n }\r\n\r\n @Watch('cartName')\r\n private cartNameChanged(cartName: string): void {\r\n this.currentCartName = cartName;\r\n }\r\n\r\n @Watch('orderName')\r\n private orderNameChanged(orderName: string): void {\r\n this.currentOrderName = orderName;\r\n }\r\n}\r\n","export enum ShippingMethod {\r\n Standard = 'Standard',\r\n Express = 'Express',\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverviewMetadata.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverviewMetadata.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartOverviewMetadata.vue?vue&type=template&id=6dde7bed&\"\nimport script from \"./ShoppingCartOverviewMetadata.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartOverviewMetadata.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Prop, Mixins } from 'vue-property-decorator';\r\nimport { UserHelper } from '@/helper/user';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport ShoppingCartOverviewItem from '@/components/shopping-cart/ShoppingCartOverviewItem.vue';\r\nimport ShoppingCartOverviewItems from '@/components/shopping-cart/ShoppingCartOverviewItems.vue';\r\nimport ShoppingCartOverviewMetadata from '@/components/shopping-cart/ShoppingCartOverviewMetadata.vue';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport { ShippingMethod } from '@/entities/ShippingMethod';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ShoppingCartModuleTypes } from '../../store/modules/shopping-cart';\r\nimport { OrderMethod } from '../../entities/OrderMethod';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n ShoppingCartOverviewItem,\r\n ShoppingCartOverviewMetadata,\r\n ShoppingCartOverviewItems,\r\n },\r\n})\r\nexport default class ShoppingCartOverview extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n public checkoutUrl!: string;\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n @Prop(Boolean)\r\n private hideCheckoutButton!: boolean;\r\n\r\n private shippingMethods: string[] = Object.keys(ShippingMethod);\r\n\r\n public get isShoppingCartEmpty(): boolean {\r\n return !this.activeShoppingCart || this.activeShoppingCart.cartItems.length <= 0;\r\n }\r\n\r\n public get activeShoppingCart(): ShoppingCart {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.activeShoppingCart];\r\n }\r\n\r\n public get checkoutUrlWithShoppingCartId(): string {\r\n return `${this.checkoutUrl}/${this.activeShoppingCart.id}`;\r\n }\r\n\r\n public get shoppingCarts(): ShoppingCart[] {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.shoppingCarts];\r\n }\r\n\r\n public get orderMethods(): OrderMethod[] {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.orderMethods];\r\n }\r\n\r\n public get isUserAuthenticated(): boolean {\r\n return UserHelper.isAuthenticated();\r\n }\r\n\r\n public get hasCustomerShippingCosts(): boolean {\r\n return UserHelper.hasShippingCosts();\r\n }\r\n\r\n private saveMetadata(metadata: { cartName: string; orderName: string }): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.updateActiveShoppingCartMetadata, {\r\n cartName: metadata.cartName,\r\n orderName: metadata.orderName,\r\n });\r\n }\r\n\r\n private selectActiveShoppingCart(event: Event): void {\r\n const selectedShoppingCartId = parseInt((event.target as HTMLSelectElement).value, 10);\r\n if (selectedShoppingCartId == null || isNaN(selectedShoppingCartId)) {\r\n return;\r\n }\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.setActiveShoppingCart, {\r\n shoppingCartId: selectedShoppingCartId,\r\n });\r\n }\r\n\r\n private selectShippingMethodForCart(event: Event): void {\r\n const selectedShippingMethodValue = (event.target as HTMLSelectElement).value;\r\n const selectedShippingMethod = ShippingMethod[selectedShippingMethodValue as keyof typeof ShippingMethod];\r\n\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.updateActiveShoppingCartShippingMethod, {\r\n shippingMethod: selectedShippingMethod,\r\n });\r\n }\r\n\r\n private selectOrderMethodForCart(event: Event): void {\r\n const selectedOrderMethodValue = (event.target as HTMLSelectElement).value;\r\n\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.updateActiveShoppingCartOrderMethod, {\r\n orderMethod: selectedOrderMethodValue,\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartOverview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartOverview.vue?vue&type=template&id=4f4e92a0&\"\nimport script from \"./ShoppingCartOverview.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartOverview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isUserAuthenticated)?_c('div',{staticClass:\"w-100 h-100\"},[_c('div',{staticClass:\"container-fluid pl-xl-0 pr-xl-0 pb-3 shopping-cart-upload\"},[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"shopping-cart-upload__heading\"},[_c('h1',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.TITLE)))])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-lg-6\"},[_c('p',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.DESCRIPTION)))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('p',[_c('a',{staticClass:\"font-weight-bold\",attrs:{\"href\":\"/sample_shopping_cart_upload.xlsx\"}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.DEMO_FILE_DOWNLOAD_TEXT_EXCEL))+\"\\n \")]),_c('br'),_c('a',{staticClass:\"font-weight-bold\",attrs:{\"href\":\"/sample_shopping_cart_upload.csv\"}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.DEMO_FILE_DOWNLOAD_TEXT))+\"\\n \")])])])]),_c('div',{staticClass:\"row\"},[(_vm.loadingState === _vm.LoadingStates.Loading)?_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3 d-flex justify-content-center align-items-center\"},[_c('LoadingIndicator'),_c('div',{staticClass:\"ml-3\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.PROGRESS))+\": \"+_vm._s(_vm.processedInPercent)+\" %\")])],1):_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3\"},[_c('input',{ref:\"fileInput\",staticClass:\"d-none\",attrs:{\"type\":\"file\",\"id\":\"fileInput\",\"accept\":\".xlsx,.csv\"},on:{\"change\":_vm.excelOrCsvFileSelected}}),_c('button',{staticClass:\"btn btn-primary w-100\",on:{\"click\":_vm.openFileDialog}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.UPLOAD_FILE))+\"\\n \")]),(_vm.showErrorText)?_c('span',{staticClass:\"shopping-cart-upload__error\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.GENERAL_ERROR)))]):_vm._e()])]),_c('div',{staticClass:\"row\"},[(_vm.loadingState !== _vm.LoadingStates.Loading)?_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3 mt-2\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchForUsedParts),expression:\"searchForUsedParts\"}],attrs:{\"type\":\"checkbox\",\"id\":\"showUsedPartsCheckbox\"},domProps:{\"checked\":Array.isArray(_vm.searchForUsedParts)?_vm._i(_vm.searchForUsedParts,null)>-1:(_vm.searchForUsedParts)},on:{\"change\":function($event){var $$a=_vm.searchForUsedParts,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.searchForUsedParts=$$a.concat([$$v]))}else{$$i>-1&&(_vm.searchForUsedParts=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.searchForUsedParts=$$c}}}}),_c('label',{staticClass:\"ml-2\",attrs:{\"for\":\"showUsedPartsCheckbox\"}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.SHOW_USED_PARTS)))])]):_vm._e()])]),(_vm.resultFromUpload)?_c('div',{staticClass:\"row shopping-cart-upload mt-5 justify-content-between\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-8\"},[_c('b',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.LINES_PARSED))+\":\")]),_vm._v(\" \"+_vm._s(_vm.totalLinesParsed)),_c('br'),_c('b',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.SUM_SELECTED_ITEMS))+\": \")]),_vm._l((_vm.totalAmountOfSelectedItems),function(item){return _c('span',{key:item.key,staticClass:\"mr-3\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(item[0])}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"centsToDecimal\")(item[1],true)))])])})],2),_c('a',{staticClass:\"btn btn-primary col-12 col-sm-5 col-md-4 col-lg-3 mr-3\",attrs:{\"href\":\"/api/shopping-cart-upload/download\",\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.DOWNLOAD))+\"\\n \")])]):_vm._e(),(_vm.resultFromUpload)?_c('div',{staticClass:\"container-fluid pl-xl-0 pr-xl-0 pb-3 shopping-cart-upload\"},[(_vm.resultFromUpload.replacementParts.length > 0)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"\\n shopping-cart-upload__section-title-container\\n shopping-cart-upload__section-title-container--replaced-parts\\n \"},[_c('div',{staticClass:\"shopping-cart-upload__section-title\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.REPLACED_PARTS))+\":\\n \"+_vm._s(_vm.resultFromUpload.replacementParts.length)+\"\\n \")]),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.REPLACED_PARTS_DESCRIPTION))+\"\\n \")])])])]):_vm._e(),(_vm.resultFromUpload.replacementParts.length > 0)?_c('ShoppingCartUploadResultTable',{attrs:{\"resultType\":_vm.ResultTypes.Replacement}}):_vm._e(),(_vm.resultFromUpload.usedParts.length > 0)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"\\n shopping-cart-upload__section-title-container\\n shopping-cart-upload__section-title-container--used-parts\\n \"},[_c('div',{staticClass:\"shopping-cart-upload__section-title\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.USED_PARTS))+\":\\n \"+_vm._s(_vm.resultFromUpload.usedParts.length)+\"\\n \")]),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.USED_PARTS_DESCRIPTION))+\"\\n \")])])])]):_vm._e(),(_vm.resultFromUpload.usedParts.length > 0)?_c('ShoppingCartUploadResultTable',{attrs:{\"resultType\":_vm.ResultTypes.Used}}):_vm._e(),(_vm.resultFromUpload.notFoundParts.length > 0)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"\\n shopping-cart-upload__section-title-container\\n shopping-cart-upload__section-title-container--not-found-parts\\n \"},[_c('div',{staticClass:\"shopping-cart-upload__section-title\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.NOT_FOUND_PARTS))+\":\\n \"+_vm._s(_vm.resultFromUpload.notFoundParts.length)+\"\\n \")]),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.NOT_FOUND_PARTS_DESCRIPTION))+\"\\n \")])])])]):_vm._e(),(_vm.resultFromUpload.notFoundParts.length > 0)?_c('ShoppingCartUploadResultTable',{attrs:{\"resultType\":_vm.ResultTypes.NotFound}}):_vm._e(),(_vm.resultFromUpload.foundParts.length > 0)?_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"\\n shopping-cart-upload__section-title-container\\n shopping-cart-upload__section-title-container--found-parts\\n \"},[_c('div',{staticClass:\"shopping-cart-upload__section-title\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.FOUND_PARTS))+\":\\n \"+_vm._s(_vm.resultFromUpload.foundParts.length)+\"\\n \")]),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.FOUND_PARTS_DESCRIPTION))+\"\\n \")])])])]):_vm._e(),(_vm.resultFromUpload.foundParts.length > 0)?_c('ShoppingCartUploadResultTable',{attrs:{\"resultType\":_vm.ResultTypes.Found}}):_vm._e(),_c('hr',{staticClass:\"bg-dark mt-4 mb-0\"}),_c('div',[_c('b',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.SUM_SELECTED_ITEMS))+\": \")]),_vm._l((_vm.totalAmountOfSelectedItems),function(item){return _c('span',{key:item.key,staticClass:\"mr-3\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(item[0])}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"centsToDecimal\")(item[1],true)))])])})],2),_c('div',{staticClass:\"row my-3\",style:({ visibility: _vm.loadingState === _vm.LoadingStates.Loading ? 'visible' : 'hidden' })},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3 d-flex justify-content-center align-items-center\"},[_c('LoadingIndicator')],1)]),_c('div',{staticClass:\"row mt-5 mb-2\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3\"},[_c('button',{staticClass:\"btn btn-primary w-100\",attrs:{\"disabled\":_vm.loadingState === _vm.LoadingStates.Loading},on:{\"click\":function($event){return _vm.addSelectedPartsToCart(true)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.ADD_TO_NEW_CART))+\"\\n \")])])]),_vm._m(0),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-4 col-lg-3\"},[_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"font-weight-bold\",attrs:{\"for\":\"shoppingCartSelect\"}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.SELECT_CART))+\"\\n \")]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedShoppingCartId),expression:\"selectedShoppingCartId\"}],staticClass:\"form-control shopping-cart-overview__cart-select\",attrs:{\"id\":\"shoppingCartSelect\",\"disabled\":_vm.loadingState === _vm.LoadingStates.Loading},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedShoppingCartId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.shoppingCarts),function(cart){return _c('option',{key:cart.id,domProps:{\"value\":cart.id}},[_vm._v(\"\\n \"+_vm._s(cart.cartName)+\"\\n \")])}),0)])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3\"},[_c('button',{staticClass:\"btn btn-primary w-100\",attrs:{\"disabled\":_vm.loadingState === _vm.LoadingStates.Loading},on:{\"click\":function($event){return _vm.addSelectedPartsToCart(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.ADD_TO_EXISTING_CART))+\"\\n \")])])])],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-sm-5 col-md-4 col-lg-3\"},[_c('hr',{staticClass:\"shopping-cart-upload__action-separator\"})])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shopping-cart-upload-result__container mb-4\"},[_c('div',{staticClass:\"shopping-cart-upload-result__header row d-none d-xl-flex\"},[_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-2\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.PART_NUMBER))+\"\\n \")]),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item\",class:(\"col-\" + _vm.columnSizeForDescription)},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.DESCRIPTION))+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-1\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.BRAND))+\"\\n \")]),(_vm.resultType === _vm.ResultTypes.Found || _vm.resultType === _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item\",class:(\"col-\" + _vm.columnSizeForInfoText)},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.INFO_TEXT))+\"\\n \")]):_vm._e(),(_vm.resultType === _vm.ResultTypes.Replacement)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-2\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.REPLACED_BY))+\"\\n \")]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-1\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.DELIVERY))+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"shopping-cart-upload-result__header-item justify-content-end\",class:(\"col-\" + _vm.columnSizeForQuantity)},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.QUANTITY))+\"\\n \")]),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item justify-content-end col-2\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.PRICE))+\"\\n \")]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item justify-content-end col-2\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.SUM))+\"\\n \")]):_vm._e()]),_vm._l((_vm.resultItems),function(item){return _c('div',{key:item.partId,staticClass:\"shopping-cart-upload-result__row row\"},[_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.PART_NUMBER))+\"\\n \")]),_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__part-number col-6 col-md-10\",class:\"col-xl-2\"},[(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('input',{staticClass:\"mr-3\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.resultType === _vm.ResultTypes.Found},on:{\"change\":function($event){return _vm.itemClicked(\n $event,\n _vm.resultType === _vm.ResultTypes.Replacement ? item.replacementPartId : item.partId\n )}}}):_vm._e(),_c('a',{attrs:{\"href\":(\"/Part?id=\" + (item.partId)),\"target\":\"_blank\"}},[_vm._v(_vm._s(item.partNumber))])]),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.DESCRIPTION))+\"\\n \")]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__description col-6 col-md-10\",class:(\"col-xl-\" + _vm.columnSizeForDescription)},[_c('a',{attrs:{\"href\":(\"/Part?id=\" + (item.partId)),\"target\":\"_blank\"}},[_vm._v(_vm._s(item.name))])]):_vm._e(),_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.BRAND))+\"\\n \")]),_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__brand col-6 col-md-10 col-xl-1\"},[_vm._v(\"\\n \"+_vm._s(item.brandCode)+\"\\n \")]),(_vm.resultType === _vm.ResultTypes.Found || _vm.resultType === _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.INFO_TEXT))+\"\\n \")]):_vm._e(),(_vm.resultType === _vm.ResultTypes.Found || _vm.resultType === _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__info-text col-6 col-md-10\",class:(\"col-xl-\" + _vm.columnSizeForInfoText)},[_vm._v(\"\\n \"+_vm._s(item.infoText)+\"\\n \")]):_vm._e(),(_vm.resultType === _vm.ResultTypes.Replacement)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.REPLACED_BY))+\"\\n \")]):_vm._e(),(_vm.resultType === _vm.ResultTypes.Replacement)?_c('div',{staticClass:\"\\n shopping-cart-upload-result__row-item\\n row-item__replaced-by\\n col-6 col-md-10 col-xl-2\\n d-xl-block\\n my-auto\\n \"},[_c('div',{staticClass:\"row-item__replaced-part-number d-inline d-xl-block\"},[_c('a',{attrs:{\"href\":(\"/Part?id=\" + (item.replacementPartId)),\"target\":\"_blank\"}},[_vm._v(_vm._s(item.replacementPartNumber))])]),_c('div',{staticClass:\"d-inline d-xl-none\"},[_vm._v(\" /\")]),_c('div',{staticClass:\"row-item__replaced-description d-inline d-xl-block\"},[_c('a',{attrs:{\"href\":(\"/Part?id=\" + (item.replacementPartId)),\"target\":\"_blank\"}},[_vm._v(_vm._s(item.replacementPartName))])])]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.DELIVERY))+\"\\n \")]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__delivery col-6 col-md-10 col-xl-1\",style:({ color: item.partAvailability && item.partAvailability.color })},[(\n _vm.isLoadingAvailability(\n _vm.resultType === _vm.ResultTypes.Replacement ? item.replacementPartId : item.partId\n )\n )?_c('div',{staticClass:\"w-100 h-100 d-flex justify-content-center align-items-center row-item__loading\"},[_c('LoadingIndicator')],1):[(_vm.resultType !== _vm.ResultTypes.Used || (_vm.resultType === _vm.ResultTypes.Used && item.quantity > 0 && item.quantity <= _vm.getAvailableItemCount(item)))?_c('DeliveryTimeToolTip',{attrs:{\"partAvailability\":item.partAvailability}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(item.partAvailability ? item.partAvailability.code : ''),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")]):_vm._e()]],2):_vm._e(),_c('div',{staticClass:\"shopping-cart-upload-result__header-item col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.QUANTITY))+\"\\n \")]),_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__quantity col-6 col-md-10\",class:(\"col-xl-\" + _vm.columnSizeForQuantity)},[(_vm.resultType === _vm.ResultTypes.Found || _vm.resultType === _vm.ResultTypes.Replacement)?_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(item.quantity),expression:\"item.quantity\",modifiers:{\"number\":true}}],class:{ 'is-invalid': item.quantity <= 0 },attrs:{\"type\":\"number\",\"min\":\"1\",\"step\":\"1\"},domProps:{\"value\":(item.quantity)},on:{\"change\":function($event){return _vm.quantityChangedForPart(\n _vm.resultType === _vm.ResultTypes.Replacement ? item.replacementPartId : item.partId,\n _vm.resultType,\n item.quantity\n )},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"quantity\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}):_vm._e(),(_vm.resultType === _vm.ResultTypes.Used)?_c('span',{staticClass:\"mr-3\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.PART.DELIVERY_TEXT.IN_STOCK))+\": \"+_vm._s(_vm.getAvailableItemCount(item)))]):_vm._e(),(_vm.resultType === _vm.ResultTypes.Used)?_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(item.quantity),expression:\"item.quantity\",modifiers:{\"number\":true}}],class:{ 'is-invalid': item.quantity > _vm.getAvailableItemCount(item) || item.quantity <= 0 },attrs:{\"type\":\"number\",\"min\":\"1\",\"step\":\"1\",\"max\":_vm.getAvailableItemCount(item)},domProps:{\"value\":(item.quantity)},on:{\"change\":function($event){return _vm.quantityChangedForPart(item.partId, _vm.resultType, item.quantity)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"quantity\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}):_vm._e(),(_vm.resultType === _vm.ResultTypes.NotFound)?_c('span',[_vm._v(_vm._s(item.quantity))]):_vm._e()]),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item header-item__price col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.PRICE))+\"\\n \")]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__price col-6 col-md-10 col-xl-2 my-auto\"},[_c('Price',{attrs:{\"priceNetCents\":item.price && item.price.priceNetCents,\"priceGrossCents\":item.price && item.price.priceGrossCents,\"priceDiscountedNetCents\":item.price && item.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":item.depositPartPrice && item.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":item.depositPartPrice && item.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":item.depositPartPrice && item.depositPartPrice.priceDiscountedNetCents,\"currencySymbol\":item.price && item.price.currency.htmlSymbol,\"hasSubunit\":item.price && item.price.currency.hasSubunit,\"rightAligned\":true}})],1):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__header-item header-item__price col-6 col-md-2 d-xl-none\"},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_UPLOAD.RESULT.SUM))+\"\\n \")]):_vm._e(),(_vm.resultType !== _vm.ResultTypes.NotFound)?_c('div',{staticClass:\"shopping-cart-upload-result__row-item row-item__price col-6 col-md-10 col-xl-2 my-auto\"},[_c('Price',{attrs:{\"priceNetCents\":item.price && item.price.priceNetCents * item.quantity,\"priceGrossCents\":item.price && item.price.priceGrossCents * item.quantity,\"priceDiscountedNetCents\":item.price && item.price.priceDiscountedNetCents * item.quantity,\"depositPartPriceNetCents\":item.depositPartPrice && item.depositPartPrice.priceNetCents * item.quantity,\"depositPartPriceGrossCents\":item.depositPartPrice && item.depositPartPrice.priceGrossCents * item.quantity,\"depositPartPriceDiscountedNetCents\":item.depositPartPrice && item.depositPartPrice.priceDiscountedNetCents * item.quantity,\"currencySymbol\":item.price && item.price.currency.htmlSymbol,\"hasSubunit\":item.price && item.price.currency.hasSubunit,\"rightAligned\":true}})],1):_vm._e(),_c('div',{staticClass:\"shopping-cart-upload-result__space-row row d-xl-none\"})])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Component, Mixins, Prop} from 'vue-property-decorator';\r\nimport {ShoppingCartUploadResultType} from '@/entities/shopping-cart-upload/ShoppingCartUploadResultType';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport Price from '@/components/price/Price.vue';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport {ShoppingCartUploadResultItem} from '../../../entities/shopping-cart-upload/ShoppingCartUploadResultItem';\r\nimport {ShoppingCartUploadModuleTypes} from '@/store/modules/shopping-cart-upload';\r\nimport {ShoppingCartUploadInfo} from '@/entities/shopping-cart-upload/ShoppingCartUploadInfo';\r\nimport {LoadingIndicator} from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport _ from 'lodash';\r\n\r\n@Component({\r\n components: {\r\n DeliveryTimeToolTip,\r\n Price,\r\n LoadingIndicator,\r\n },\r\n})\r\nexport default class ShoppingCartUploadResultTable extends Mixins(BaseMixin) {\r\n @Prop({type: String, required: true})\r\n private resultType!: ShoppingCartUploadResultType;\r\n\r\n private ResultTypes: typeof ShoppingCartUploadResultType = ShoppingCartUploadResultType;\r\n\r\n private updateQuantityAndReloadAvailabilityDebounced: (\r\n partId: string,\r\n type: ShoppingCartUploadResultType,\r\n quantity: number\r\n ) => void;\r\n\r\n constructor() {\r\n super();\r\n this.updateQuantityAndReloadAvailabilityDebounced = _.debounce(this.updateQuantityAndReloadAvailability, 500);\r\n }\r\n\r\n public get resultItems(): ShoppingCartUploadResultItem[] {\r\n switch (this.resultType) {\r\n case ShoppingCartUploadResultType.Found:\r\n return (this.$store.getters[ShoppingCartUploadModuleTypes.getters.uploadInfo] as ShoppingCartUploadInfo)\r\n .result.foundParts;\r\n case ShoppingCartUploadResultType.Replacement:\r\n return (this.$store.getters[ShoppingCartUploadModuleTypes.getters.uploadInfo] as ShoppingCartUploadInfo)\r\n .result.replacementParts;\r\n case ShoppingCartUploadResultType.Used:\r\n return (this.$store.getters[ShoppingCartUploadModuleTypes.getters.uploadInfo] as ShoppingCartUploadInfo)\r\n .result.usedParts;\r\n default:\r\n return (this.$store.getters[ShoppingCartUploadModuleTypes.getters.uploadInfo] as ShoppingCartUploadInfo)\r\n .result.notFoundParts;\r\n }\r\n }\r\n\r\n private get columnSizeForInfoText(): number {\r\n switch (this.resultType) {\r\n case ShoppingCartUploadResultType.Found:\r\n return 1;\r\n case ShoppingCartUploadResultType.NotFound:\r\n return 8;\r\n default:\r\n return 1;\r\n }\r\n }\r\n\r\n private get columnSizeForDescription(): number {\r\n if (this.resultType === ShoppingCartUploadResultType.Replacement) {\r\n return 1;\r\n }\r\n\r\n return 2;\r\n }\r\n\r\n private get columnSizeForQuantity(): number {\r\n if (this.resultType === ShoppingCartUploadResultType.Used) {\r\n return 2;\r\n }\r\n\r\n return 1;\r\n }\r\n\r\n private isLoadingAvailability(partId: string): boolean {\r\n return (\r\n this.$store.getters[ShoppingCartUploadModuleTypes.getters.itemsThatAreLoadingAvailability] as string[]\r\n ).includes(partId);\r\n }\r\n\r\n private itemClicked(event: any, partId?: string): void {\r\n if (!partId) {\r\n return;\r\n }\r\n\r\n const checkbox = event.target as HTMLInputElement;\r\n if (checkbox && checkbox.checked) {\r\n this.$store.commit(ShoppingCartUploadModuleTypes.mutations.selectPartWithId, {partId});\r\n } else {\r\n this.$store.commit(ShoppingCartUploadModuleTypes.mutations.deselectPartWithId, {partId});\r\n }\r\n }\r\n\r\n private getAvailableItemCount(item: ShoppingCartUploadResultItem): number {\r\n if (!item.partAvailability || !item.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return item.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n\r\n private quantityChangedForPart(partId: string, type: ShoppingCartUploadResultType, quantity: number): void {\r\n if (quantity > 0) {\r\n this.updateQuantityAndReloadAvailabilityDebounced(partId, type, quantity);\r\n }\r\n }\r\n\r\n private updateQuantityAndReloadAvailability(\r\n partId: string,\r\n type: ShoppingCartUploadResultType,\r\n quantity: number\r\n ): void {\r\n this.$store.dispatch(ShoppingCartUploadModuleTypes.actions.updateQuantityOfShoppingCartUploadItem, {\r\n partId,\r\n quantity,\r\n });\r\n this.$store.dispatch(ShoppingCartUploadModuleTypes.actions.reloadAvailabilityOfShoppingCartUploadItem, {\r\n partId,\r\n quantity,\r\n type,\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartUploadResultTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartUploadResultTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartUploadResultTable.vue?vue&type=template&id=d9b28fee&\"\nimport script from \"./ShoppingCartUploadResultTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartUploadResultTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Prop, Mixins } from 'vue-property-decorator';\r\nimport { UserHelper } from '@/helper/user';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\nimport ShoppingCartUploadResultTable from '@/components/shopping-cart/upload/ShoppingCartUploadResultTable.vue';\r\nimport { ShoppingCartUploadResultType } from '@/entities/shopping-cart-upload/ShoppingCartUploadResultType';\r\nimport { ShoppingCartUploadModuleTypes } from '../../../store/modules/shopping-cart-upload';\r\nimport { ShoppingCartUploadResult } from '../../../entities/shopping-cart-upload/ShoppingCartUploadResult';\r\nimport { LoadingState } from '../../../entities/LoadingState';\r\nimport Price from '../../price/Price.vue';\r\nimport { ShoppingCartUploadInfo } from '@/entities/shopping-cart-upload/ShoppingCartUploadInfo';\r\nimport { ShoppingCartUploadProcessingState } from '@/entities/shopping-cart-upload/ShoppingCartUploadProcessingState';\r\nimport { localize } from '@/filters/localize';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n ShoppingCartUploadResultTable,\r\n },\r\n})\r\nexport default class ShoppingCartUpload extends Mixins(BaseMixin) {\r\n private selectedShoppingCartId: number | undefined;\r\n private ResultTypes: typeof ShoppingCartUploadResultType = ShoppingCartUploadResultType;\r\n private LoadingStates: typeof LoadingState = LoadingState;\r\n private refreshUploadInfoMilliseconds: number = 1000;\r\n private searchForUsedParts: boolean = false;\r\n\r\n public get isUserAuthenticated(): boolean {\r\n return UserHelper.isAuthenticated();\r\n }\r\n\r\n public get shoppingCarts(): ShoppingCart[] {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.shoppingCarts];\r\n }\r\n\r\n public get loadingState(): LoadingState {\r\n return this.$store.getters[ShoppingCartUploadModuleTypes.getters.loadingState];\r\n }\r\n\r\n public get resultFromUpload(): ShoppingCartUploadResult | undefined {\r\n return this.uploadInfo && this.uploadInfo.result;\r\n }\r\n\r\n public get processedInPercent(): string | undefined {\r\n return this.uploadInfo != null\r\n ? this.uploadInfo.processedInPercent.toString()\r\n : localize(this.l10n.SHOPPING_CART_UPLOAD.PROGRESS_UNDEFINED);\r\n }\r\n\r\n public get uploadInfo(): ShoppingCartUploadInfo | undefined {\r\n return this.$store.getters[ShoppingCartUploadModuleTypes.getters.uploadInfo];\r\n }\r\n\r\n public get showErrorText(): boolean {\r\n return this.uploadInfo != null && this.uploadInfo.state === ShoppingCartUploadProcessingState.Error;\r\n }\r\n\r\n public get totalLinesParsed(): number {\r\n return this.resultFromUpload !== undefined\r\n ? this.resultFromUpload.foundParts.length +\r\n this.resultFromUpload.replacementParts.length +\r\n this.resultFromUpload.notFoundParts.length\r\n : 0;\r\n }\r\n\r\n public get selectedPartIds(): string[] {\r\n return this.$store.getters[ShoppingCartUploadModuleTypes.getters.selectedPartIds];\r\n }\r\n\r\n public get totalAmountOfSelectedItems(): Map {\r\n if (!this.resultFromUpload) {\r\n return new Map();\r\n }\r\n\r\n const sumCents = new Map();\r\n this.resultFromUpload.foundParts\r\n .filter((part) => this.selectedPartIds.includes(part.partId!))\r\n .concat(\r\n this.resultFromUpload.replacementParts.filter((part) =>\r\n this.selectedPartIds.includes(part.replacementPartId!)\r\n )\r\n )\r\n .concat(this.resultFromUpload.usedParts.filter((part) => this.selectedPartIds.includes(part.partId!)))\r\n .forEach((part) => {\r\n const price = new Price({\r\n propsData: {\r\n priceNetCents: part.price!.priceNetCents * part.quantity,\r\n priceGrossCents: part.price!.priceGrossCents * part.quantity,\r\n priceDiscountedNetCents: part.price!.priceDiscountedNetCents * part.quantity,\r\n },\r\n });\r\n let sumCentsForCurrency = sumCents.has(part.price!.currency.htmlSymbol) ? sumCents.get(part.price!.currency.htmlSymbol)! : 0;\r\n sumCentsForCurrency += price.bigFontPrice;\r\n sumCents.set(part.price!.currency.htmlSymbol, sumCentsForCurrency);\r\n });\r\n return sumCents;\r\n }\r\n\r\n // called by vue\r\n protected created(): void {\r\n this.refreshUploadState();\r\n }\r\n\r\n @Watch('shoppingCarts')\r\n private setFirstValueInShoppingCartSelect(): void {\r\n if (this.shoppingCarts.length > 0) {\r\n this.selectedShoppingCartId = this.shoppingCarts[0].id;\r\n }\r\n }\r\n\r\n private openFileDialog(): void {\r\n const fileInput = this.$refs.fileInput as HTMLInputElement;\r\n if (fileInput) {\r\n fileInput.click();\r\n }\r\n }\r\n\r\n private excelOrCsvFileSelected(): void {\r\n const fileInput = this.$refs.fileInput as HTMLInputElement;\r\n if (fileInput && fileInput.files && fileInput.files.length > 0) {\r\n const selectedFile = fileInput.files[0];\r\n this.$store.dispatch(ShoppingCartUploadModuleTypes.actions.uploadFileAndStartSearch, {\r\n file: selectedFile,\r\n includeUsedParts: this.searchForUsedParts,\r\n });\r\n }\r\n\r\n this.refreshUploadInfoMilliseconds = 1000;\r\n this.startTimer();\r\n }\r\n\r\n private startTimer(): void {\r\n setTimeout(this.refreshUploadState, this.refreshUploadInfoMilliseconds);\r\n if (this.refreshUploadInfoMilliseconds < 3000) {\r\n this.refreshUploadInfoMilliseconds = this.refreshUploadInfoMilliseconds + 1000;\r\n }\r\n }\r\n\r\n private async refreshUploadState(): Promise {\r\n await this.$store.dispatch(ShoppingCartUploadModuleTypes.actions.updateCurrentUploadInfo);\r\n if (this.uploadInfo && this.uploadInfo.state === ShoppingCartUploadProcessingState.Running) {\r\n this.startTimer();\r\n }\r\n }\r\n\r\n private async addSelectedPartsToCart(intoNewCart: boolean): Promise {\r\n if (!this.resultFromUpload || this.selectedPartIds.length === 0) {\r\n return;\r\n }\r\n\r\n this.$store.commit(ShoppingCartUploadModuleTypes.mutations.updateLoadingState, {\r\n loadingState: LoadingState.Loading,\r\n });\r\n if (!intoNewCart) {\r\n await this.$store.dispatch(ShoppingCartModuleTypes.actions.setActiveShoppingCart, {\r\n shoppingCartId: this.selectedShoppingCartId,\r\n });\r\n }\r\n const selectedPartIds = this.$store.getters[ShoppingCartUploadModuleTypes.getters.selectedPartIds] as string[];\r\n const partsToAdd = new Array<{ partId: string; quantity: number; userInfoText: string }>();\r\n this.resultFromUpload.foundParts\r\n .filter((part) => selectedPartIds.includes(part.partId!))\r\n .filter((part) => part.quantity > 0)\r\n .forEach((part) =>\r\n partsToAdd.push({ partId: part.partId!, quantity: part.quantity, userInfoText: part.infoText })\r\n );\r\n this.resultFromUpload.replacementParts\r\n .filter((part) => selectedPartIds.includes(part.replacementPartId!))\r\n .filter((part) => part.quantity > 0)\r\n .forEach((part) =>\r\n partsToAdd.push({\r\n partId: part.replacementPartId!,\r\n quantity: part.quantity,\r\n userInfoText: part.infoText,\r\n })\r\n );\r\n this.resultFromUpload.usedParts\r\n .filter((part) => selectedPartIds.includes(part.partId!))\r\n .filter(\r\n (part) =>\r\n part.quantity > 0 &&\r\n part.partAvailability &&\r\n part.quantity <=\r\n part.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0)\r\n )\r\n .forEach((part) =>\r\n partsToAdd.push({ partId: part.partId!, quantity: part.quantity, userInfoText: part.infoText })\r\n );\r\n await this.$store.dispatch(ShoppingCartModuleTypes.actions.addShoppingCartItemsInBulk, {\r\n items: partsToAdd,\r\n cartId: intoNewCart ? undefined : this.selectedShoppingCartId,\r\n });\r\n this.$store.commit(ShoppingCartUploadModuleTypes.mutations.updateLoadingState, {\r\n loadingState: LoadingState.Loaded,\r\n });\r\n\r\n // redirect to cart overview\r\n window.location.href = '/Cart';\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartUpload.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartUpload.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartUpload.vue?vue&type=template&id=129e161c&\"\nimport script from \"./ShoppingCartUpload.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartUpload.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shopping-cart-menu\",class:{\n 'shopping-cart-menu--filled': _vm.itemCount > 0,\n }},[_c('b-dropdown',{staticClass:\"w-100 h-100\",attrs:{\"variant\":\"link\",\"lazy\":true,\"toggle-class\":[\n 'text-decoration-none',\n 'p-0',\n 'shopping-cart-menu__toggle',\n _vm.isLoading ? 'shopping-cart-menu__toggle--loading' : '' ],\"no-caret\":\"\",\"right\":\"\",\"menu-class\":\"shopping-cart-menu__dropdown\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [(_vm.isLoading)?_c('LoadingIndicator'):(_vm.itemCount == 0 && !_vm.isLoading)?_c('EmptyShoppingCartIcon'):(_vm.itemCount > 0 && !_vm.isLoading)?_c('FilledShoppingCartIcon',{attrs:{\"itemCount\":_vm.itemCount}}):_vm._e()]},proxy:true}])},[[_c('div',{staticClass:\"w-100 h-100\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('b-dropdown-header',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('div',{staticClass:\"shopping-cart-menu__heading mr-2\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_MENU.TITLE))+\"\\n \")]),(_vm.isUserAuthenticated)?_c('div',{staticClass:\"d-flex\"},[_c('button',{staticClass:\"btn btn-primary shopping-cart-menu__icon-button mr-1\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleAddCart($event)}}},[(!_vm.showAddCart)?_c('MoreIcon'):_c('LessIcon')],1),_c('a',{attrs:{\"href\":\"/Cart/Upload\"}},[_c('button',{staticClass:\"btn btn-primary shopping-cart-menu__icon-button shopping-cart-menu__icon-button--padding\"},[_c('UploadIcon')],1)])]):_vm._e()]),(_vm.isUserAuthenticated && _vm.showAddCart)?_c('li',{staticClass:\"pl-4 pr-4\"},[_c('AddCart',{on:{\"add\":_vm.addCart}})],1):_vm._e(),_c('GoToCartEntry',{attrs:{\"shoppingCartUrl\":_vm.shoppingCartUrl}}),(_vm.shoppingCarts.length > 1)?_c('li',{staticClass:\"pl-4 pr-4 pb-1 d-flex justify-content-between\"},[_c('div',{staticClass:\"flex-grow-1 mr-2\"},[_c('CartSelect',{attrs:{\"shoppingCarts\":_vm.shoppingCarts,\"selectedCartId\":_vm.activeShoppingCart && _vm.activeShoppingCart.id},on:{\"change\":_vm.selectCart}}),_c('span',{staticClass:\"pt-1 shopping-cart-menu__count\"},[_vm._v(_vm._s(_vm._f(\"localizeWithParams\")(_vm.l10n.SHOPPING_CART_MENU.NUMBER_OF_SHOPPING_CARTS,_vm.shoppingCarts.length.toString())))])],1),_c('div',[_c('button',{staticClass:\"btn btn-secondary shopping-cart-menu__icon-button\",attrs:{\"disabled\":_vm.isLoading},on:{\"focusout\":function($event){$event.stopPropagation();},\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteActiveCart($event)}}},[_c('DeleteIcon')],1)])]):_vm._e(),_c('DirectInput'),_c('CartItems',{attrs:{\"cartItems\":_vm.activeShoppingCart && _vm.activeShoppingCart.cartItems,\"partDetailLink\":_vm.partDetailLink}}),(_vm.itemCount > 0)?_c('GoToCartEntry',{attrs:{\"shoppingCartUrl\":_vm.shoppingCartUrl}}):_vm._e()],1)]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nexport const EmptyShoppingCartIcon = Vue.extend({\r\n functional: true,\r\n name: 'EmptyShoppingCartIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=EmptyShoppingCartIcon.jsx.map","import Vue from 'vue';\r\nexport const MoreIcon = Vue.extend({\r\n functional: true,\r\n name: 'MoreIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=MoreIcon.jsx.map","import Vue from 'vue';\r\nexport const LessIcon = Vue.extend({\r\n functional: true,\r\n name: 'LessIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=LessIcon.jsx.map","import Vue from 'vue';\r\nexport const UploadIcon = Vue.extend({\r\n functional: true,\r\n name: 'UploadIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=UploadIcon.jsx.map","import Vue from 'vue';\r\nexport const FilledShoppingCartIcon = Vue.extend({\r\n functional: true,\r\n name: 'FilledShoppingCartIcon',\r\n props: {\r\n itemCount: Number,\r\n },\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayItemCount(ctx.props.itemCount)}\r\n \r\n \r\n );\r\n },\r\n});\r\nfunction displayItemCount(itemCount) {\r\n return itemCount > 99 ? '99+' : String(itemCount);\r\n}\r\nfunction calculateFontSize(itemCountString) {\r\n const length = displayItemCount(itemCountString).length;\r\n switch (length) {\r\n case 1:\r\n return '18px';\r\n case 2:\r\n return '14px';\r\n default:\r\n return '12px';\r\n }\r\n}\r\n//# sourceMappingURL=FilledShoppingCartIcon.jsx.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{staticClass:\"w-100\",on:{\"focusout\":function($event){$event.stopPropagation();},\"submit\":function($event){$event.preventDefault();return _vm.add($event)}}},[_c('div',{staticClass:\"w-100 d-flex justify-content-between align-items-center\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.cartName),expression:\"cartName\",modifiers:{\"trim\":true}}],ref:\"cartInput\",staticClass:\"form-control mr-2\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.cartName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.cartName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('button',{staticClass:\"btn btn-primary shopping-cart-menu__icon-button\",attrs:{\"disabled\":!_vm.isValid,\"type\":\"submit\"}},[_c('SaveIcon')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins, Emit, Ref } from 'vue-property-decorator';\r\nimport { SaveIcon } from '@/components/icons/SaveIcon';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\n\r\n@Component({\r\n components: {\r\n SaveIcon,\r\n },\r\n})\r\nexport default class AddCart extends Mixins(BaseMixin) {\r\n @Ref('cartInput')\r\n private readonly cartInput!: HTMLInputElement;\r\n\r\n private cartName: string = '';\r\n\r\n protected mounted(): void {\r\n this.cartInput.focus();\r\n }\r\n\r\n private get isValid(): boolean {\r\n return this.cartName !== '';\r\n }\r\n\r\n @Emit('add')\r\n private add(): string {\r\n return this.cartName;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddCart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddCart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddCart.vue?vue&type=template&id=0f42a13a&\"\nimport script from \"./AddCart.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddCart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import * as l10n from '@/constants/l10n';\r\nimport { localize } from '@/filters/localize';\r\nimport Vue from 'vue';\r\nexport const GoToCartEntry = Vue.extend({\r\n functional: true,\r\n name: 'GoToCartEntry',\r\n props: {\r\n shoppingCartUrl: String,\r\n },\r\n render(createElement, { props }) {\r\n return (
  • \r\n \r\n {localize(l10n.SHOPPING_CART_MENU.GO_TO_CART)}\r\n \r\n
  • );\r\n },\r\n});\r\n//# sourceMappingURL=GoToCartEntry.jsx.map","import Vue from 'vue';\r\nexport const CartSelect = Vue.extend({\r\n functional: true,\r\n name: 'CartSelect',\r\n props: {\r\n shoppingCarts: Array,\r\n selectedCartId: Number,\r\n },\r\n render(createElement, ctx) {\r\n return ();\r\n },\r\n});\r\n//# sourceMappingURL=CartSelect.jsx.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"pl-4 pr-4 pt-2 pb-3 shopping-cart-menu__direct-input\",on:{\"focusout\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"shopping-cart-menu__direct-input-header\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_MENU.DIRECT_INPUT_TITLE))+\"\\n \")]),_c('div',{staticClass:\"d-flex justify-content-between\"},[_c('v-select',{staticClass:\"shopping-cart-menu__direct-input-part-number\",attrs:{\"id\":\"shopping-cart-menu__direct-input-part-number-id\",\"clearable\":true,\"label\":\"label\",\"placeholder\":_vm._f(\"localize\")(_vm.l10n.SHOPPING_CART_MENU.DIRECT_INPUT_PLACEHOLDER),\"options\":_vm.foundParts},on:{\"search\":_vm.partNumberEntered,\"input\":_vm.selectedPartChanged},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_c('div',{staticClass:\"shopping-cart-menu__direct-input-option-title\"},[_vm._v(\"\\n \"+_vm._s(option.brand)+\"\\n \")]),_c('div',{staticClass:\"shopping-cart-menu__direct-input-option-text\"},[_vm._v(\"\\n \"+_vm._s(option.description)+\"\\n \")])]}}])}),_c('div',{staticClass:\"shopping-cart-menu__cart-actions-wrapper\"},[_c('ShoppingCartActions',{attrs:{\"fullPartId\":_vm.selectedPart && _vm.selectedPart.fullPartId,\"partNumber\":_vm.selectedPart && _vm.selectedPart.partNumber,\"hideUnitCode\":true,\"showHorizontal\":true}})],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Watch } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport { ExactPartSearchResultInfo } from '@/entities/ExactPartSearchResultInfo';\r\nimport _ from 'lodash/fp';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartActions,\r\n },\r\n})\r\nexport default class DirectInput extends Mixins(BaseMixin) {\r\n private searchForPartsDebounced: (partNumber: string) => void = _.debounce(\r\n 500,\r\n (partNumber: string) => {\r\n this.searchForParts(partNumber);\r\n }\r\n );\r\n private loadingFunction?: (isLoading: boolean) => void;\r\n private selectedPart: ExactPartSearchResultInfo | null = null;\r\n\r\n protected created(): void {\r\n // clear parts when popup gets visible again\r\n this.clearFoundParts();\r\n }\r\n\r\n private get isLoading(): boolean {\r\n return (\r\n this.$store.getters[\r\n ShoppingCartModuleTypes.getters.partSearchState\r\n ] === LoadingState.Loading\r\n );\r\n }\r\n\r\n private get foundParts(): ExactPartSearchResultInfo[] {\r\n return this.$store.getters[\r\n ShoppingCartModuleTypes.getters.foundPartsByDirectInput\r\n ];\r\n }\r\n\r\n private partNumberEntered(\r\n partNumber: string,\r\n loadingFunction: (isLoading: boolean) => void\r\n ): void {\r\n if (isNullOrWhitespace(partNumber)) {\r\n return;\r\n }\r\n this.loadingFunction = loadingFunction;\r\n this.searchForPartsDebounced(partNumber);\r\n }\r\n\r\n private searchForParts(partNumber: string): void {\r\n this.$store.dispatch(\r\n ShoppingCartModuleTypes.actions.searchForPartsByPartNumber,\r\n {\r\n partNumber,\r\n }\r\n );\r\n }\r\n\r\n @Watch('isLoading')\r\n private loadingStateChanged(): void {\r\n if (this.loadingFunction) {\r\n this.loadingFunction(this.isLoading);\r\n }\r\n }\r\n\r\n private selectedPartChanged(value: ExactPartSearchResultInfo): void {\r\n if (value) {\r\n this.selectedPart = value;\r\n } else {\r\n this.selectedPart = null;\r\n this.clearFoundParts();\r\n }\r\n }\r\n\r\n private clearFoundParts(): void {\r\n this.$store.dispatch(\r\n ShoppingCartModuleTypes.actions.clearFoundPartsByDirectInput\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DirectInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DirectInput.vue?vue&type=template&id=1097238e&\"\nimport script from \"./DirectInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./DirectInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"shopping-cart-menu__cart-item-container\"},_vm._l((_vm.cartItems),function(cartItem){return _c('li',{key:cartItem.id,staticClass:\"pl-4 pr-4 pt-2 pb-2 shopping-cart-menu__cart-item\"},[_c('div',{staticClass:\"shopping-cart-menu__cart-item-part-number\"},[_c('a',{attrs:{\"href\":_vm.partDetailLinkForCartItem(cartItem)}},[_vm._v(_vm._s(cartItem.partNumber))])]),_c('div',{staticClass:\"d-flex justify-content-between\"},[_c('div',{staticClass:\"shopping-cart-menu__cart-item-description\"},[_vm._v(_vm._s(cartItem.description))]),_c('div',{staticClass:\"shopping-cart-menu__cart-item-quantity\"},[_vm._v(_vm._s(cartItem.quantity)+\" \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.PART.UNIT_CODE_TEXT.For(cartItem.unitCode),_vm.l10n.PART.UNIT_CODE_TEXT.UNKNOWN)))])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins, Emit, Ref } from 'vue-property-decorator';\r\nimport Vue from 'vue';\r\nimport { MoreIcon } from '@/components/icons/MoreIcon';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { ShoppingCartItem } from '../../../entities/ShoppingCartItem';\r\n\r\n@Component\r\nexport default class CartItems extends Mixins(BaseMixin) {\r\n @Prop(Array)\r\n private cartItems!: ShoppingCartItem[];\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n\r\n private partDetailLinkForCartItem(cartItem: ShoppingCartItem): string {\r\n return `${this.partDetailLink}${encodeURIComponent(\r\n cartItem.fullPartId\r\n )}`;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartItems.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartItems.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CartItems.vue?vue&type=template&id=711167cc&\"\nimport script from \"./CartItems.vue?vue&type=script&lang=ts&\"\nexport * from \"./CartItems.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { ShoppingCart } from '@/entities/ShoppingCart';\r\nimport { EmptyShoppingCartIcon } from '@/components/icons/EmptyShoppingCartIcon';\r\nimport { MoreIcon } from '@/components/icons/MoreIcon';\r\nimport { LessIcon } from '@/components/icons/LessIcon';\r\nimport { UploadIcon } from '@/components/icons/UploadIcon';\r\nimport { FilledShoppingCartIcon } from '@/components/icons/FilledShoppingCartIcon';\r\nimport { DeleteIcon } from '@/components/icons/DeleteIcon';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { ShoppingCartModuleTypes } from '@/store/modules/shopping-cart';\r\nimport AddCart from '@/components/shopping-cart/menu/AddCart.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { GoToCartEntry } from './GoToCartEntry';\r\nimport { CartSelect } from './CartSelect';\r\nimport { UserHelper } from '@/helper/user';\r\nimport DirectInput from '@/components/shopping-cart/menu/DirectInput.vue';\r\nimport CartItems from '@/components/shopping-cart/menu/CartItems.vue';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n EmptyShoppingCartIcon,\r\n FilledShoppingCartIcon,\r\n GoToCartEntry,\r\n CartSelect,\r\n DeleteIcon,\r\n MoreIcon,\r\n LessIcon,\r\n UploadIcon,\r\n AddCart,\r\n DirectInput,\r\n CartItems,\r\n },\r\n})\r\nexport default class ShoppingCartMenu extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private shoppingCartUrl!: string;\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n\r\n private showAddCart: boolean = false;\r\n\r\n public get itemCount(): number {\r\n return this.activeShoppingCart == null ? 0 : this.activeShoppingCart.cartItems.length;\r\n }\r\n\r\n public get shoppingCarts(): ShoppingCart[] {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.shoppingCarts];\r\n }\r\n\r\n public get activeShoppingCart(): ShoppingCart | null {\r\n return this.$store.getters[ShoppingCartModuleTypes.getters.activeShoppingCart] as ShoppingCart | null;\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return (\r\n (this.$store.getters[ShoppingCartModuleTypes.getters.loadingState] as LoadingState) === LoadingState.Loading\r\n );\r\n }\r\n\r\n public get isUserAuthenticated(): boolean {\r\n return UserHelper.isAuthenticated();\r\n }\r\n\r\n private addCart(cartName: string): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.addShoppingCart, {\r\n cartName,\r\n });\r\n this.toggleAddCart();\r\n }\r\n\r\n private deleteActiveCart(): void {\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.deleteActiveShoppingCart);\r\n }\r\n\r\n private toggleAddCart(): void {\r\n this.showAddCart = !this.showAddCart;\r\n }\r\n\r\n private selectCart(event: Event): void {\r\n const id = event.target && parseInt((event.target as HTMLSelectElement).value, 10);\r\n if (!id || isNaN(id) || this.shoppingCarts.find((cart) => cart.id === id) == null) {\r\n return;\r\n }\r\n\r\n this.$store.dispatch(ShoppingCartModuleTypes.actions.setActiveShoppingCart, { shoppingCartId: id });\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShoppingCartMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShoppingCartMenu.vue?vue&type=template&id=722ee417&\"\nimport script from \"./ShoppingCartMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShoppingCartMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"d-flex justify-content-between align-items-end align-items-lg-center\"},[_c('div',{staticClass:\"header__logo-container\"},[_c('a',{attrs:{\"href\":_vm.homeLink}},[_c('img',{staticClass:\"header__logo\",attrs:{\"src\":\"/images/spares_net_logo.svg\"}})])]),(!_vm.isDesktop)?_c('div',{attrs:{\"id\":\"burger-menu\"}},[_c('BurgerMenu',{attrs:{\"homeLink\":_vm.homeLink}},[_vm._t(\"default\")],2)],1):_vm._e(),(_vm.isDesktop)?_c('div',{staticClass:\"header__search-availability-clock-desktop pt-3 pb-2 mr-lg-3 mr-xl-0\"},[_c('div',{staticClass:\"d-flex justify-content-end align-items-center p-0\"},[_c('VinSearch',{attrs:{\"catalogueSearchLink\":_vm.catalogueSearchLink}}),_c('div',{staticClass:\"header__search-separator\"}),_c('QuickSearch',{attrs:{\"detailSearchLink\":_vm.detailSearchLink}})],1),_c('AvailabilityClock',{attrs:{\"nextPossibleShippingDateTimeISO8601\":_vm.nextPossibleShippingDateTimeISO8601}})],1):_vm._e()]),(_vm.isDesktop)?_c('div',{staticClass:\"navbar-menu__container\",on:{\"mouseleave\":_vm.resetSelectedItems}},[_c('nav',{staticClass:\"w-100\"},[_c('ul',{staticClass:\"p-0 navbar-menu\"},[_vm._t(\"default\")],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasSelectedNavItemSubMenuItems),expression:\"hasSelectedNavItemSubMenuItems\"}],staticClass:\"navbar-sub-menu w-100\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"navbar-sub-menu__level-1\",class:{'col-3': _vm.hasSelectedNavItemLvl2SubMenuItems, 'col-12': !_vm.hasSelectedNavItemLvl2SubMenuItems}},_vm._l((_vm.subMenuLvl1Items),function(item){return _c('div',{key:item.link,staticClass:\"row\"},[_c('div',{staticClass:\"col-12 sub-menu-item\",class:{\n 'sub-menu-item--highlighted': _vm.selectedSubMenuItemLvl1 == item.link\n }},[_c('a',{attrs:{\"href\":item.link},on:{\"mouseover\":function($event){_vm.selectedSubMenuItemLvl1 = item.link}}},[_vm._v(_vm._s(item.name))])])])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasSelectedNavItemLvl2SubMenuItems),expression:\"hasSelectedNavItemLvl2SubMenuItems\"}],staticClass:\"col-9 navbar-sub-menu__level-2\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.subMenuLvl2Items),function(item){return _c('div',{key:item.link,staticClass:\"col-4 sub-menu-item\",class:{\n 'sub-menu-item--highlighted': _vm.selectedSubMenuItemLvl2 == item.link,\n }},[_c('a',{attrs:{\"href\":item.link},on:{\"mouseover\":function($event){_vm.selectedSubMenuItemLvl2 = item.link},\"mouseleave\":function($event){_vm.selectedSubMenuItemLvl2 = ''}}},[_vm._v(_vm._s(item.name))])])}),0)])])])])])]):_vm._e(),(!_vm.isDesktop)?_c('div',{staticClass:\"d-flex flex-column header__search-availability-clock-mobile\"},[_c('VinSearch',{attrs:{\"catalogueSearchLink\":_vm.catalogueSearchLink}}),_c('QuickSearch',{attrs:{\"detailSearchLink\":_vm.detailSearchLink}}),_c('AvailabilityClock',{attrs:{\"nextPossibleShippingDateTimeISO8601\":_vm.nextPossibleShippingDateTimeISO8601}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"burger-menu\",attrs:{\"id\":\"burger-menu\"}},[_c('button',{staticClass:\"btn burger-menu__burger-button\",on:{\"click\":_vm.toggleBurgerMenu}},[_c('img',{staticClass:\"burger-menu__burger-icon\",attrs:{\"src\":\"/images/spares_icon_burger.svg\"}})]),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('nav',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"}],staticClass:\"burger-menu__menu\"},[_c('div',{staticClass:\"burger-menu__logo-container\"},[_c('a',{attrs:{\"href\":_vm.homeLink}},[_c('img',{staticClass:\"burger-menu__logo\",attrs:{\"src\":\"/images/spares_net_logo.svg\"}})])]),_c('ul',{staticClass:\"burger-menu__menu-items\"},[_vm._t(\"default\")],2)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n\r\n@Component({})\r\nexport default class BurgerMenu extends Vue {\r\n public isOpen: boolean = false;\r\n\r\n @Prop(String)\r\n private homeLink!: string;\r\n\r\n public toggleBurgerMenu(): void {\r\n this.isOpen = !this.isOpen;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BurgerMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BurgerMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BurgerMenu.vue?vue&type=template&id=b843d45c&\"\nimport script from \"./BurgerMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./BurgerMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BurgerMenu.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hidden)?_c('div',{staticClass:\"container-fluid availability-clock mt-2 mt-lg-0\"},[_c('div',{staticClass:\"row align-items-center justify-content-end\"},[_vm._m(0),_c('div',{staticClass:\"availability-clock__text\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.$options.filters && _vm.$options.filters.localize(_vm.l10n.AVAILABILITY_CLOCK.COUNTDOWN_TEXT))}}),_vm._v(\" \\n \"),_c('span',{staticClass:\"availability-clock__countdown-text\"},[(_vm.days > 0)?[_vm._v(\"\\n \"+_vm._s(_vm.days)+\" \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.AVAILABILITY_CLOCK.DAYS))+\"\\n \")]:_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.hours)+\" \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.AVAILABILITY_CLOCK.HOURS))+\"\\n \"+_vm._s(_vm.minutes)+\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.AVAILABILITY_CLOCK.MINUTES))+\"\\n \"+_vm._s(_vm.seconds)+\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.AVAILABILITY_CLOCK.SECONDS))+\"\\n \")],2),_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.AVAILABILITY_CLOCK.SHIPPING_WITHIN_TEXT))+\"\\n \")])])]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"availability-clock__icon-container\"},[_c('img',{staticClass:\"availability-clock__clock-icon\",attrs:{\"src\":\"/images/spares_Icons_clock.svg\"}})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport parseISO from 'date-fns/parseISO';\r\nimport addDays from 'date-fns/addDays';\r\nimport isValid from 'date-fns/isValid';\r\nimport differenceInSeconds from 'date-fns/differenceInSeconds';\r\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\r\nimport differenceInHours from 'date-fns/differenceInHours';\r\nimport isSaturday from 'date-fns/isSaturday';\r\nimport isSunday from 'date-fns/isSunday';\r\n\r\n@Component\r\nexport default class AvailabilityClock extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private nextPossibleShippingDateTimeISO8601!: string;\r\n\r\n private totalSecondsLeft: number = 0;\r\n\r\n private hidden: boolean = false;\r\n\r\n private nextPossibleShippingDateTime: Date | null = null;\r\n\r\n public get days(): number {\r\n return Math.floor(this.totalSecondsLeft / (3600 * 24));\r\n }\r\n\r\n public get hours(): number {\r\n return Math.floor((this.totalSecondsLeft % (3600 * 24)) / 3600);\r\n }\r\n\r\n public get minutes(): number {\r\n return Math.floor(((this.totalSecondsLeft % (3600 * 24)) % 3600) / 60);\r\n }\r\n\r\n public get seconds(): number {\r\n return ((this.totalSecondsLeft % (3600 * 24)) % 3600) % 60;\r\n }\r\n\r\n protected created(): void {\r\n if (this.nextPossibleShippingDateTimeISO8601 == null) {\r\n this.hidden = true;\r\n return;\r\n }\r\n this.nextPossibleShippingDateTime = parseISO(this.nextPossibleShippingDateTimeISO8601);\r\n\r\n if (!isValid(this.nextPossibleShippingDateTime)) {\r\n this.hidden = true;\r\n return;\r\n }\r\n this.totalSecondsLeft = differenceInSeconds(this.nextPossibleShippingDateTime, new Date(Date.now()));\r\n this.countdown();\r\n window.setInterval(this.countdown, 1000);\r\n }\r\n\r\n private countdown(): void {\r\n const now = new Date(Date.now());\r\n\r\n if (\r\n this.nextPossibleShippingDateTime != null &&\r\n (this.totalSecondsLeft <= 0 || this.nextPossibleShippingDateTime <= now)\r\n ) {\r\n this.nextPossibleShippingDateTime = addDays(this.nextPossibleShippingDateTime, 1);\r\n if (isSaturday(this.nextPossibleShippingDateTime)) {\r\n addDays(this.nextPossibleShippingDateTime, 2);\r\n }\r\n if (isSunday(this.nextPossibleShippingDateTime)) {\r\n addDays(this.nextPossibleShippingDateTime, 1);\r\n }\r\n this.totalSecondsLeft = differenceInSeconds(this.nextPossibleShippingDateTime, now);\r\n }\r\n\r\n if (this.totalSecondsLeft !== 0) {\r\n this.totalSecondsLeft -= 1;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityClock.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailabilityClock.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AvailabilityClock.vue?vue&type=template&id=6ca49294&\"\nimport script from \"./AvailabilityClock.vue?vue&type=script&lang=ts&\"\nexport * from \"./AvailabilityClock.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row no-gutters quick-search quick-search__vin mb-3 mb-lg-0\",attrs:{\"id\":\"vin-search\"}},[_c('form',{staticClass:\"col-12\",on:{\"submit\":function($event){$event.preventDefault();return _vm.search($event)}}},[_c('div',{staticClass:\"row no-gutters\"},[_c('div',{staticClass:\"col\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.searchTerm),expression:\"searchTerm\",modifiers:{\"trim\":true}}],staticClass:\"quick-search__input-field w-100\",class:{\n 'quick-search__input-error': _vm.loadingFailed,\n },attrs:{\"type\":\"search\",\"placeholder\":_vm._f(\"localize\")(_vm.l10n.VIN_SEARCH.SEARCH_TERM_PLACEHOLDER)},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_c('div',{staticClass:\"col-auto\"},[_c('button',{staticClass:\"btn p-0 text-right quick-search__submit\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.isSearchTermValid}},[(!_vm.isLoading)?_c('img',{staticClass:\"header__icon\",attrs:{\"src\":\"/images/spares_icons_lupe.svg\",\"alt\":_vm._f(\"localize\")(_vm.l10n.VIN_SEARCH.SEARCH_BUTTON_ALT_TEXT)}}):_vm._e(),(_vm.isLoading)?_c('div',{staticClass:\"d-flex justify-content-end align-items-center\"},[_c('LoadingIndicator')],1):_vm._e()])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins, Watch } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport _ from 'lodash/fp';\r\nimport { VinSearchModuleTypes } from '@/store/modules/vin-search';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport URI from 'urijs';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n },\r\n})\r\nexport default class VinSearch extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private catalogueSearchLink!: string;\r\n\r\n private searchTerm: string = '';\r\n private searchDebounced: () => void = _.debounce(500, () => {\r\n this.search();\r\n });\r\n\r\n public get loadingFailed(): boolean {\r\n return this.$store.getters[VinSearchModuleTypes.getters.searchResultsLoadingState] === LoadingState.Failed;\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return this.$store.getters[VinSearchModuleTypes.getters.searchResultsLoadingState] === LoadingState.Loading;\r\n }\r\n\r\n public get isSearchTermValid(): boolean {\r\n return this.searchTerm != null && this.searchTerm.trim() !== '' && this.searchTerm.trim().length === 17;\r\n }\r\n\r\n public search(): void {\r\n if (this.isSearchTermValid) {\r\n if (this.isDesktop) {\r\n this.$store.dispatch(VinSearchModuleTypes.actions.loadSearchResults, {\r\n searchTerm: this.searchTerm,\r\n brand: '',\r\n });\r\n } else {\r\n document.location.href = new URI(this.catalogueSearchLink).addQuery({ searchTerm: this.searchTerm }).toString();\r\n }\r\n }\r\n }\r\n\r\n public get isDesktop(): boolean {\r\n // (this as any) necassary because of the missing types for vue-mq\r\n return (this as any).$mq === 'lg' || (this as any).$mq === 'xl';\r\n }\r\n\r\n @Watch('searchTerm')\r\n private onSearchTermChange(): void {\r\n if (!this.isDesktop) {\r\n return;\r\n }\r\n this.searchDebounced();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VinSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VinSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VinSearch.vue?vue&type=template&id=77c56610&\"\nimport script from \"./VinSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./VinSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export function notNullOrUndefined(\r\n value: TValue | null | undefined\r\n): value is TValue {\r\n return value !== null && value !== undefined;\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\r\nimport BurgerMenu from './burger-menu/BurgerMenu.vue';\r\nimport AvailabilityClock from '../availability-clock/AvailabilityClock.vue';\r\nimport QuickSearch from '../quick-search/QuickSearch.vue';\r\nimport VinSearch from '../vin-search/VinSearch.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport Dictionary from '@/types/Dictionary';\r\nimport NavigationItem from './NavigationItem.vue';\r\nimport { SubMenuItem } from '@/entities/navigation/SubMenuItem';\r\nimport { SubMenuInfo } from '@/entities/navigation/SubMenuInfo';\r\nimport { notNullOrUndefined } from '@/helper/notNullOrUndefined';\r\n\r\n@Component({\r\n components: {\r\n BurgerMenu,\r\n AvailabilityClock,\r\n QuickSearch,\r\n VinSearch,\r\n },\r\n})\r\nexport default class Navigation extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private homeLink!: string;\r\n @Prop(String)\r\n private detailSearchLink!: string;\r\n @Prop(String)\r\n private catalogueSearchLink!: string;\r\n @Prop(String)\r\n private nextPossibleShippingDateTimeISO8601!: string;\r\n @Prop(String)\r\n private subMenuItemsJson!: string;\r\n\r\n private subMenuItems!: Dictionary;\r\n private selectedNavigationItem: string = '';\r\n private selectedSubMenuItemLvl1: string = '';\r\n private selectedSubMenuItemLvl2: string = '';\r\n\r\n // called by vue\r\n public created(): void {\r\n this.subMenuItems = JSON.parse(this.subMenuItemsJson);\r\n }\r\n\r\n public get hasSelectedNavItemSubMenuItems(): boolean {\r\n return Array.isArray(this.subMenuItems[this.selectedNavigationItem]);\r\n }\r\n\r\n public get hasSelectedNavItemLvl2SubMenuItems(): boolean {\r\n if (this.subMenuItems[this.selectedNavigationItem]) {\r\n return (\r\n this.subMenuItems[this.selectedNavigationItem]\r\n .flatMap((item) => item.secondLevelItems)\r\n .filter((item) => notNullOrUndefined(item)).length > 0\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n public get subMenuLvl1Items(): Array<{ link: string; name: string }> {\r\n if (!this.hasSelectedNavItemSubMenuItems) {\r\n return [];\r\n }\r\n return this.subMenuItems[this.selectedNavigationItem].map((item) => item.firstLevelItem);\r\n }\r\n\r\n public get subMenuLvl2Items(): Array<{ link: string; name: string }> {\r\n if (!this.hasSelectedNavItemSubMenuItems || this.selectedSubMenuItemLvl1 === '') {\r\n return [];\r\n }\r\n\r\n const activeSubMenuInfo = this.subMenuItems[this.selectedNavigationItem].find(\r\n (item) => item.firstLevelItem.link === this.selectedSubMenuItemLvl1\r\n );\r\n\r\n if (activeSubMenuInfo) {\r\n return activeSubMenuInfo!.secondLevelItems;\r\n }\r\n\r\n return [];\r\n }\r\n\r\n // public - gets called by NavigationItem\r\n public onMouseOverItem(link: string): void {\r\n this.selectedNavigationItem = link;\r\n }\r\n\r\n private resetSelectedItems(): void {\r\n this.selectedNavigationItem = '';\r\n this.selectedSubMenuItemLvl1 = '';\r\n this.selectedSubMenuItemLvl2 = '';\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=b333aa8c&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDesktop),expression:\"isDesktop\"}],class:{'navbar-menu__item': _vm.isFixed, 'navbar-menu__dynamic-item': !_vm.isFixed},on:{\"mouseover\":_vm.onMouseOver}},[_c('a',{staticClass:\"navbar-menu__item-link\",class:{'navbar-menu__item-link--active': _vm.isActive},attrs:{\"href\":_vm.getHrefLink}},[_vm._v(_vm._s(_vm.title))])]),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isDesktop),expression:\"!isDesktop\"}],class:{'burger-menu__menu-item': _vm.isFixed, 'burger-menu__dynamic-menu-item': !_vm.isFixed}},[_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.hasSubMenuItemsLevel1),expression:\"!hasSubMenuItemsLevel1\"}],staticClass:\"burger-menu__menu-item-link\",class:{'burger-menu__menu-item-link--active': _vm.isActive},attrs:{\"href\":_vm.getHrefLink}},[_vm._v(_vm._s(_vm.title))]),_c('a',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasSubMenuItemsLevel1),expression:\"hasSubMenuItemsLevel1\"}],staticClass:\"burger-menu__menu-item-link\",class:{'burger-menu__menu-item-link--active': _vm.isActive},attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleExpandSubItems()}}},[_vm._v(_vm._s(_vm.title))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasSubMenuItemsLevel1),expression:\"hasSubMenuItemsLevel1\"}],staticClass:\"burger-menu__menu-item-subitems-level-1\"},[_c('div',{class:{'slide-up': !_vm.expandSubItems, 'slide-down': _vm.expandSubItems}},_vm._l((_vm.subMenuItems),function(item){return _c('div',{key:item.link,staticClass:\"burger-menu__menu-item-subitems-level-1__item\"},[_c('a',{attrs:{\"href\":item.link}},[_vm._v(_vm._s(item.name))])])}),0)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop, Emit } from 'vue-property-decorator';\r\nimport BurgerMenu from './burger-menu/BurgerMenu.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport Navigation from './Navigation.vue';\r\nimport { SubMenuItem } from '@/entities/navigation/SubMenuItem';\r\n\r\n@Component({\r\n components: {\r\n BurgerMenu,\r\n },\r\n})\r\nexport default class NavigationItem extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private link!: string;\r\n\r\n @Prop(String)\r\n private title!: string;\r\n\r\n @Prop(Boolean)\r\n private isFixed!: boolean;\r\n\r\n @Prop(Boolean)\r\n private isActive!: boolean;\r\n\r\n @Prop({ required: false })\r\n private subMenuItemsJson!: string;\r\n\r\n private subMenuItems: SubMenuItem[] = [];\r\n\r\n private expandSubItems: boolean = false;\r\n\r\n private get getHrefLink(): string {\r\n return this.link.startsWith('#') ? '#' : this.link;\r\n }\r\n\r\n private get hasSubMenuItemsLevel1(): boolean {\r\n return this.subMenuItems.length > 0;\r\n }\r\n\r\n public mounted(): void {\r\n if (this.subMenuItemsJson) {\r\n this.subMenuItems = JSON.parse(this.subMenuItemsJson);\r\n }\r\n }\r\n\r\n private toggleExpandSubItems(): void {\r\n this.expandSubItems = !this.expandSubItems;\r\n }\r\n\r\n private onMouseOver(): void {\r\n // we cannot emit events, because this naviTems are added via .\r\n // therefore we have to go the way over $parent.\r\n const parent = this.$parent as Navigation;\r\n if (parent) {\r\n parent.onMouseOverItem(this.link);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavigationItem.vue?vue&type=template&id=401e507e&\"\nimport script from \"./NavigationItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavigationItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"form-group\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();}}},[_c('label',{attrs:{\"for\":(_vm.countrySelectName + \"-id\")}},[_vm._v(_vm._s(_vm.countrySelectLabel))]),_c('v-select',{staticClass:\"country-state-select\",attrs:{\"inputId\":(_vm.countrySelectName + \"-id\"),\"value\":_vm.selectedCountryOption,\"options\":_vm.countryOptions,\"clearable\":false,\"loading\":_vm.countriesLoadingState === _vm.loadingState.Loading,\"disabled\":_vm.disabled || _vm.countriesLoadingState !== _vm.loadingState.Loaded},on:{\"input\":_vm.countrySelected}}),_vm._t(\"countryValidation\")],2),(_vm.stateOptions && _vm.stateOptions.length > 0)?_c('div',{staticClass:\"form-group\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();}}},[_c('label',{attrs:{\"for\":(_vm.stateSelectName + \"-id\")}},[_vm._v(_vm._s(_vm.stateSelectLabel))]),_c('v-select',{staticClass:\"country-state-select\",attrs:{\"id\":(_vm.stateSelectName + \"-id\"),\"value\":_vm.selectedStateOption,\"options\":_vm.stateOptions,\"clearable\":false,\"loading\":_vm.statesLoadingState === _vm.loadingState.Loading,\"disabled\":_vm.disabled || _vm.statesLoadingState !== _vm.loadingState.Loaded},on:{\"input\":_vm.stateSelected}}),_vm._t(\"stateValidation\")],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\nimport { ResHelper } from '@/helper/ResHelper';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport * as l10n from '@/constants/l10n';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { Country } from '@/entities/Country';\r\nimport { CountryOption } from './CountryOption';\r\nimport { StateOption } from './StateOption';\r\nimport { RootState } from '@/store/rootState';\r\nimport { State } from '@/entities/State';\r\nimport { CountryStateSelectModuleTypes } from '@/store/modules/country-state-select';\r\n\r\n@Component({})\r\nexport default class CountryStateSelect extends Vue {\r\n @Prop(Boolean)\r\n public disabled!: boolean;\r\n @Prop(String)\r\n public countrySelectName!: string;\r\n @Prop(String)\r\n public countrySelectLabel!: string;\r\n @Prop(String)\r\n public countryHiddenInputId!: string;\r\n @Prop(String)\r\n public stateSelectName!: string;\r\n @Prop(String)\r\n public stateSelectLabel!: string;\r\n @Prop(String)\r\n public stateHiddenInputId!: string;\r\n public loadingState: typeof LoadingState = LoadingState;\r\n\r\n public get countryOptions(): CountryOption[] {\r\n return this.$store.getters[\r\n CountryStateSelectModuleTypes.getters.countries\r\n ].map((country: Country) => ({\r\n label: ResHelper.getStringOrFallback(\r\n l10n.COUNTRY.For(country.key),\r\n country.name\r\n ),\r\n country,\r\n }));\r\n }\r\n\r\n public get countriesLoadingState(): LoadingState {\r\n return this.$store.getters[\r\n CountryStateSelectModuleTypes.getters.countriesLoadingState\r\n ];\r\n }\r\n\r\n public get selectedCountryOption(): CountryOption | null {\r\n const country = this.$store.getters[\r\n CountryStateSelectModuleTypes.getters.selectedCountry\r\n ](this.countryHiddenInputId) as Country;\r\n if (country) {\r\n return {\r\n label: ResHelper.getStringOrFallback(\r\n l10n.COUNTRY.For(country.key),\r\n country.name\r\n ),\r\n country,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n public get stateOptions(): StateOption[] {\r\n return this.$store.getters[\r\n CountryStateSelectModuleTypes.getters.statesOfSelectedCountry\r\n ](this.countryHiddenInputId).map((state: State) => ({\r\n label: ResHelper.getStringOrFallback(\r\n l10n.STATE.For(state.key),\r\n state.name\r\n ),\r\n state,\r\n }));\r\n }\r\n\r\n public get statesLoadingState(): LoadingState {\r\n return this.$store.getters[\r\n CountryStateSelectModuleTypes.getters.statesLoadingState\r\n ](this.countryHiddenInputId);\r\n }\r\n\r\n public get selectedStateOption(): StateOption | null {\r\n const state = this.$store.getters[\r\n CountryStateSelectModuleTypes.getters.selectedState\r\n ](this.countryHiddenInputId) as State;\r\n if (state) {\r\n return {\r\n label: ResHelper.getStringOrFallback(\r\n l10n.STATE.For(state.key),\r\n state.name\r\n ),\r\n state,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n @Watch('selectedCountryOption')\r\n public updateCountryValue(countryOption: CountryOption | null): void {\r\n const countryInput = document.getElementById(\r\n this.countryHiddenInputId\r\n ) as HTMLInputElement | null;\r\n if (!countryInput) {\r\n return;\r\n }\r\n if (countryOption) {\r\n countryInput.value = String(countryOption.country.id);\r\n } else {\r\n countryInput.value = '';\r\n }\r\n const event = new Event('change');\r\n countryInput.dispatchEvent(event);\r\n }\r\n\r\n @Watch('selectedStateOption')\r\n public updateStateValue(stateOption: StateOption | null): void {\r\n const stateInput = document.getElementById(\r\n this.stateHiddenInputId\r\n ) as HTMLInputElement | null;\r\n if (!stateInput) {\r\n return;\r\n }\r\n if (stateOption) {\r\n stateInput.value = String(stateOption.state.id);\r\n } else {\r\n stateInput.value = '';\r\n }\r\n const event = new Event('change');\r\n stateInput.dispatchEvent(event);\r\n }\r\n\r\n @Watch('countriesLoadingState')\r\n public setExistingCountryAndStateValue(\r\n countriesLoadingState: LoadingState | null\r\n ): void {\r\n if (\r\n countriesLoadingState &&\r\n countriesLoadingState === LoadingState.Loaded\r\n ) {\r\n const countryInput = document.getElementById(\r\n this.countryHiddenInputId\r\n ) as HTMLInputElement | null;\r\n const stateInput = document.getElementById(\r\n this.stateHiddenInputId\r\n ) as HTMLInputElement | null;\r\n if (!countryInput || !stateInput) {\r\n return;\r\n }\r\n\r\n const countryId = Number(countryInput.value);\r\n const stateId = Number(stateInput.value);\r\n if (countryId > 0) {\r\n this.$store.dispatch(\r\n CountryStateSelectModuleTypes.actions\r\n .selectCountryAndStateById,\r\n {\r\n id: this.countryHiddenInputId,\r\n countryId,\r\n stateId,\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n public countrySelected(countryOption: CountryOption): void {\r\n this.$store.dispatch(\r\n CountryStateSelectModuleTypes.actions.selectCountry,\r\n {\r\n id: this.countryHiddenInputId,\r\n country: countryOption.country,\r\n }\r\n );\r\n }\r\n\r\n public stateSelected(stateOption: StateOption): void {\r\n this.$store.dispatch(\r\n CountryStateSelectModuleTypes.actions.selectState,\r\n {\r\n id: this.countryHiddenInputId,\r\n state: stateOption.state,\r\n }\r\n );\r\n }\r\n\r\n protected created(): void {\r\n this.$store.dispatch(\r\n CountryStateSelectModuleTypes.actions.registerSelect,\r\n {\r\n id: this.countryHiddenInputId,\r\n }\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CountryStateSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CountryStateSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CountryStateSelect.vue?vue&type=template&id=4825471e&\"\nimport script from \"./CountryStateSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./CountryStateSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showSlotContent)?_c('div',[_vm._t(\"default\")],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n\r\n@Component({})\r\nexport default class DynamicVisibilityContainer extends Vue {\r\n @Prop(String)\r\n public idOfCheckbox!: string;\r\n private showSlotContent: boolean = false;\r\n\r\n protected mounted(): void {\r\n const checkboxElement = document.getElementById(this.idOfCheckbox) as HTMLInputElement;\r\n if (checkboxElement) {\r\n checkboxElement.addEventListener('change', this.onCheckboxStateChanged);\r\n this.toggleSlotContentVisibility(checkboxElement.checked);\r\n }\r\n }\r\n\r\n private onCheckboxStateChanged(event: Event): void {\r\n const checkboxElement = event.target as HTMLInputElement;\r\n if (checkboxElement) {\r\n this.toggleSlotContentVisibility(checkboxElement.checked);\r\n }\r\n }\r\n\r\n private toggleSlotContentVisibility(show: boolean): void {\r\n this.showSlotContent = show;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicVisibilityContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicVisibilityContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DynamicVisibilityContainer.vue?vue&type=template&id=79fd69ac&\"\nimport script from \"./DynamicVisibilityContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./DynamicVisibilityContainer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showSlotContent)?_c('div',[_vm._t(\"default\")],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { isNullOrWhitespace } from '../../helper/isNullOrWhitespace';\r\n\r\n@Component({})\r\nexport default class DynamicVisibilityForValuesContainer extends Vue {\r\n @Prop(String)\r\n public idOfInput!: string;\r\n @Prop(Array)\r\n public visibleForValues!: string[];\r\n\r\n private showSlotContent: boolean = false;\r\n private inputElement: HTMLInputElement | null = null;\r\n\r\n protected mounted(): void {\r\n this.inputElement = document.getElementById(this.idOfInput) as HTMLInputElement;\r\n if (this.inputElement) {\r\n this.inputElement.addEventListener('change', this.toggleSlotContentVisibility);\r\n this.toggleSlotContentVisibility();\r\n }\r\n }\r\n\r\n protected beforeDestroy(): void {\r\n if (this.inputElement) {\r\n this.inputElement.removeEventListener('change', this.toggleSlotContentVisibility);\r\n }\r\n }\r\n\r\n private toggleSlotContentVisibility(): void {\r\n if (this.inputElement) {\r\n const value = this.inputElement.value;\r\n this.showSlotContent = !isNullOrWhitespace(value) && this.visibleForValues.includes(value);\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicVisibilityForValuesContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicVisibilityForValuesContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DynamicVisibilityForValuesContainer.vue?vue&type=template&id=88ac8628&\"\nimport script from \"./DynamicVisibilityForValuesContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./DynamicVisibilityForValuesContainer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100 h-100 pb-3\"},[_c('b-row',{staticClass:\"orders-table__filter\"},[_c('b-col',{staticClass:\"my-1\",attrs:{\"md\":\"6\"}},[_c('b-form-group',{staticClass:\"mb-0\",attrs:{\"label-cols-sm\":\"3\",\"label\":\"Filter\"}},[_c('b-input-group',[_c('b-form-input',{attrs:{\"placeholder\":_vm._f(\"localize\")(_vm.l10n.ORDERS_FOR_USER.FILTER_PLACEHOLDER)},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"disabled\":!_vm.filter},on:{\"click\":function($event){_vm.filter = ''}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.ORDERS_FOR_USER.FILTER_CLEAR))+\"\\n \")])],1)],1)],1)],1)],1),_c('div',{attrs:{\"role\":\"tablist\"}},[_c('b-table',{ref:\"table\",attrs:{\"items\":_vm.orderResults,\"fields\":_vm.columnHeaders,\"busy\":_vm.isLoading,\"stacked\":\"xl\",\"no-provider-filtering\":true,\"table-class\":\"orders-table__table\",\"thead-tr-class\":\"orders-table__header-item\",\"tbody-tr-class\":\"orders-table__row-item\"},scopedSlots:_vm._u([{key:\"cell(number)\",fn:function(row){return [_vm._v(_vm._s(row.item.number)+\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.orderedByText(row.item))}})]}},{key:\"cell(date)\",fn:function(row){return [_vm._v(_vm._s(_vm.dateLocaleString(row.item.dateTime)))]}},{key:\"cell(totalAmount)\",fn:function(row){return [_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.currencyTotalAmountString(row.item))}})]}},{key:\"cell(items)\",fn:function(row){return [_vm._v(_vm._s(row.item.lines.length))]}},{key:\"cell(show_details)\",fn:function(row){return [_c('b-button',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\"},on:{\"click\":row.toggleDetails}},[_vm._v(_vm._s(_vm.getDynamicDetailsButtonText(row.detailsShowing)))])]}},{key:\"row-details\",fn:function(row){return [_c('b-table',{ref:\"table2\",attrs:{\"stacked\":\"xl\",\"items\":row.item.lines,\"fields\":_vm.columnHeadersDetails,\"no-provider-filtering\":true,\"table-class\":\"orders-table__table\",\"thead-tr-class\":\"orders-table__header-item\",\"tbody-tr-class\":\"orders-table__row-item\"},scopedSlots:_vm._u([{key:\"cell(quantity)\",fn:function(line){return [_c('span',[_vm._v(_vm._s(line.item.quantity))]),_c('OrderStateToolTip',{attrs:{\"orderState\":line.item.quantityInfo}},[_c('span',{staticClass:\"orders-table__header-tooltip\"},[_c('img',{staticClass:\"orders-table__header-tooltip-icon\",attrs:{\"src\":\"/images/spares_icon_info.svg\"}})])])]}},{key:\"cell(amount)\",fn:function(line){return [_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.currencyAmountString(line.item))}})]}}],null,true)})]}}])},[_c('div',{staticClass:\"text-center text-danger my-2\",attrs:{\"slot\":\"table-busy\"},slot:\"table-busy\"},[_c('LoadingIndicator')],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.top.html\",value:(_vm.toolTipMessage(_vm.result)),expression:\"toolTipMessage(result)\",modifiers:{\"hover\":true,\"top\":true,\"html\":true}}],attrs:{\"variant\":\"dark\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { OrderState } from '../../entities/OrderState';\r\nimport { localize } from '../../filters/localize';\r\n\r\n@Component\r\nexport default class OrderStateToolTip extends Mixins(BaseMixin) {\r\n @Prop({ required: true })\r\n private orderState!: OrderState;\r\n\r\n private toolTipMessage(): string {\r\n let returnValue = `
    \r\n ${localize(\r\n this.l10n.ORDER_ITEM_STATE_TOOLTIP.HEADER_TEXT\r\n )}
    `;\r\n returnValue += `
    \r\n ${localize(this.l10n.ORDER_ITEM_STATE_TOOLTIP.READY_FOR_PICKING_TEXT)} \r\n ${this.orderState.readyForPicking}\r\n
    `;\r\n returnValue += `
    \r\n ${localize(this.l10n.ORDER_ITEM_STATE_TOOLTIP.READY_FOR_SHIPMENT_TEXT)} \r\n ${this.orderState.readyForShipment}\r\n
    `;\r\n returnValue += `
    \r\n ${localize(this.l10n.ORDER_ITEM_STATE_TOOLTIP.QUANTITY_INVOICED_TEXT)} \r\n ${this.orderState.quantityInvoiced}\r\n
    `;\r\n returnValue += `
    \r\n ${localize(this.l10n.ORDER_ITEM_STATE_TOOLTIP.IN_ORDER_TEXT)} \r\n ${this.orderState.inOrder}\r\n
    `;\r\n return returnValue;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderStateToolTip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderStateToolTip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrderStateToolTip.vue?vue&type=template&id=3692ae28&\"\nimport script from \"./OrderStateToolTip.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrderStateToolTip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Mixins } from 'vue-property-decorator';\r\nimport { ResHelper } from '@/helper/ResHelper';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { OrderInfo } from '@/entities/OrderInfo';\r\nimport { OrdersForUserModuleTypes } from '@/store/modules/orders-for-user';\r\nimport BaseMixin from '../../mixins/BaseMixin';\r\nimport _ from 'lodash/fp';\r\nimport parseISO from 'date-fns/fp/parseISO';\r\nimport OrderStateToolTip from '@/components/order-state-tooltip/OrderStateToolTip.vue';\r\nimport { OrderInfoItem } from '@/entities/OrderInfoItem';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n OrderStateToolTip,\r\n },\r\n})\r\nexport default class OrderList extends Mixins(BaseMixin) {\r\n private filter: string = '';\r\n private filterDebounced: () => void = _.debounce(500, () => {\r\n this.filterItems();\r\n });\r\n\r\n public mounted(): void {\r\n this.$store.dispatch(OrdersForUserModuleTypes.actions.loadOrders);\r\n }\r\n\r\n public get loadingFailed(): boolean {\r\n return this.$store.getters[OrdersForUserModuleTypes.getters.orderResultsLoadingState] === LoadingState.Failed;\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return this.$store.getters[OrdersForUserModuleTypes.getters.orderResultsLoadingState] === LoadingState.Loading;\r\n }\r\n\r\n public get orderResults(): OrderInfo[] {\r\n return this.$store.getters[OrdersForUserModuleTypes.getters.orderResults];\r\n }\r\n\r\n private dateLocaleString(dateTimeISO: string | null): string {\r\n if (dateTimeISO == null) {\r\n return '';\r\n }\r\n\r\n const date = parseISO(dateTimeISO);\r\n return date.toLocaleDateString();\r\n }\r\n\r\n private orderedByText(item: OrderInfo): string {\r\n if (item.orderedByFirstName === '' && item.orderedByLastName === '') {\r\n return '';\r\n }\r\n\r\n return `
    (${item.orderedByFirstName} ${item.orderedByLastName})`;\r\n }\r\n\r\n private currencyTotalAmountString(item: OrderInfo): string {\r\n return `${ResHelper.getString(this.l10n.PRICE.NET)} ${\r\n item.currencyHtmlSymbol\r\n } ${item.totalAmount}`;\r\n }\r\n\r\n private currencyAmountString(line: OrderInfoItem): string {\r\n return `${ResHelper.getString(this.l10n.PRICE.NET)} ${\r\n line.currencyHtmlSymbol\r\n } ${line.amount}`;\r\n }\r\n\r\n private get columnHeaders(): any {\r\n return [\r\n {\r\n key: 'number',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_NUMBER),\r\n },\r\n {\r\n key: 'name',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_REFERENCE),\r\n },\r\n {\r\n key: 'date',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DATE),\r\n },\r\n {\r\n key: 'status',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_STATUS),\r\n },\r\n {\r\n key: 'totalAmount',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_TOTAL_AMOUNT),\r\n class: 'text-right',\r\n },\r\n {\r\n key: 'items',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_ITEMS),\r\n class: 'text-right',\r\n },\r\n {\r\n key: 'show_details',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_SHOW_DETAILS),\r\n },\r\n ];\r\n }\r\n\r\n private get columnHeadersDetails(): any {\r\n return [\r\n {\r\n key: 'dmsPartNumber',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_PART_NUMBER),\r\n },\r\n {\r\n key: 'brandCode',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_MAKE),\r\n },\r\n {\r\n key: 'description',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_DESCRIPTION),\r\n },\r\n {\r\n key: 'quantity',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_QUANTITY),\r\n class: 'text-right',\r\n },\r\n {\r\n key: 'deliveredQuantity',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_DELIVERED_QUANTITY),\r\n class: 'text-right',\r\n },\r\n {\r\n key: 'amount',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_AMOUNT),\r\n class: 'text-right',\r\n },\r\n {\r\n key: 'infoText',\r\n label: ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_DETAIL_ADDITIONAL_INFO),\r\n },\r\n ];\r\n }\r\n\r\n @Watch('filter')\r\n private onFilterChange(): void {\r\n this.filterDebounced();\r\n }\r\n\r\n private filterItems(): void {\r\n this.$store.dispatch(OrdersForUserModuleTypes.actions.setFilter, this.filter);\r\n }\r\n\r\n private getDynamicDetailsButtonText(showDetails: boolean): string | undefined {\r\n return showDetails\r\n ? ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_HIDE_DETAILS)\r\n : ResHelper.getString(this.l10n.ORDERS_FOR_USER_TABLE.COL_SHOW_DETAILS);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrderList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OrderList.vue?vue&type=template&id=68f91c0d&\"\nimport script from \"./OrderList.vue?vue&type=script&lang=ts&\"\nexport * from \"./OrderList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"part-search__heading\"},[_c('h1',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_SEARCH.RESULTS_HEADING))+\"\\n \"+_vm._s(_vm.isCategorySearch\n ? _vm.$options.filters && _vm.$options.filters.localize(_vm.l10n.PART_CATEGORIES.For(_vm.category))\n : _vm.searchTerm)+\":\")])])])]),_c('div',{staticClass:\"row\"},[(_vm.isLoading)?_c('div',{staticClass:\"col-12 d-flex justify-content-center\"},[_c('LoadingIndicator')],1):_vm._e(),_vm._l((_vm.partSearchResults),function(result){return _c('PartSearchCard',{key:result.searchResult.id,ref:\"cards\",refInFor:true,attrs:{\"result\":result,\"partDetailLink\":(_vm.partActionLink + \"?id=\" + (result.searchResult.id))}})})],2),(!_vm.isLoading)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('PartSearchPagination',{attrs:{\"numberOfPages\":_vm.numberOfPages,\"currentPageNumber\":_vm.pageNumber,\"baseSearchLink\":_vm.baseSearchLinkWithoutPage}})],1)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nimport URI from 'urijs';\r\nimport { notNullOrUndefined } from '@/helper/notNullOrUndefined';\r\nexport const PartSearchPagination = Vue.extend({\r\n functional: true,\r\n props: {\r\n numberOfPages: Number,\r\n currentPageNumber: Number,\r\n baseSearchLink: String,\r\n },\r\n render(h, ctx) {\r\n if (!ctx.props.numberOfPages || ctx.props.numberOfPages <= 1) {\r\n return
    ;\r\n }\r\n return ();\r\n },\r\n});\r\nfunction buildPaginationItems(h, numberOfPages, currentPageNumber, baseSearchLink) {\r\n return [...Array(numberOfPages).keys()]\r\n .map((index) => {\r\n const pageNumber = index + 1;\r\n return buildPaginationItem(h, numberOfPages, currentPageNumber, pageNumber, baseSearchLink);\r\n })\r\n .filter(notNullOrUndefined);\r\n}\r\nfunction buildPaginationItem(h, numberOfPages, currentPageNumber, pageNumber, baseSearchLink) {\r\n if (pageNumber < 4 ||\r\n (currentPageNumber - 2 <= pageNumber &&\r\n currentPageNumber + 2 >= pageNumber) ||\r\n pageNumber > numberOfPages - 3) {\r\n return (
  • \r\n \r\n {pageNumber}\r\n \r\n
  • );\r\n }\r\n else if (pageNumber === currentPageNumber - 3 ||\r\n pageNumber === currentPageNumber + 3) {\r\n return (
  • \r\n \r\n …\r\n \r\n
  • );\r\n }\r\n return null;\r\n}\r\nfunction buildSearchLinkForPage(baseSearchLink, pageNumber) {\r\n return new URI(baseSearchLink).addQuery({ pageNumber }).toString();\r\n}\r\n//# sourceMappingURL=PartSearchPagination.jsx.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-12 col-md-6 col-lg-4 col-xl-3 mb-3\"},[_c('div',{staticClass:\"card h-100 part-search__result\",class:{ 'part-search__result-related': _vm.hasRelatedParts }},[_c('PartSearchCardImage',{attrs:{\"href\":_vm.partDetailLink,\"src\":_vm.result.imageUrl,\"alt\":_vm.result.searchResult.partNumber}}),_c('div',{staticClass:\"row part-search__result-content\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('a',{staticClass:\"part-search__result-link\",attrs:{\"href\":_vm.partDetailLink}},[_c('h2',{staticClass:\"part-search__result-title\",class:{\n 'part-search__result-title--has-replacements':\n _vm.result.searchResult.hasReplacementParts,\n }},[_vm._v(_vm._s(_vm.result.searchResult.name))])]),(_vm.result.searchResult.hasReplacementParts)?_c('ReplacementPartsAction',{attrs:{\"fullPartId\":_vm.result.searchResult.id}}):_vm._e(),_c('h3',{staticClass:\"part-search__result-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.result.searchResult.partNumber)+\"\\n \")]),_c('h4',{staticClass:\"part-search__result-brand\"},[_vm._v(\"\\n \"+_vm._s(_vm.result.searchResult.brandCode)+\"\\n \")])],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8\"},[(_vm.result.isPartAvailabilityLoading)?_c('div',{staticClass:\"w-100 d-flex justify-content-center align-items-center part-search__result-availability\"},[_c('LoadingIndicator')],1):_c('DeliveryTimeToolTip',{attrs:{\"partAvailability\":_vm.result.partAvailability}},[_c('div',{staticClass:\"part-search__result-availability\",style:({\n color: _vm.result.partAvailability && _vm.result.partAvailability.color ? _vm.result.partAvailability.color : '',\n visibility: _vm.showAvailability ? 'visible' : 'hidden'\n })},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.result.partAvailability && _vm.result.partAvailability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])]),(!_vm.result.isNotInStockButReplaceable)?_c('Price',{attrs:{\"priceNetCents\":_vm.result.price.priceNetCents,\"priceGrossCents\":_vm.result.price.priceGrossCents,\"priceDiscountedNetCents\":_vm.result.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceDiscountedNetCents,\"isHidden\":_vm.result.price.isHidden,\"currencySymbol\":_vm.result.price.currency.htmlSymbol,\"hasSubunit\":_vm.result.price.currency.hasSubunit,\"noWrap\":!(_vm.result.searchResult.hasReplacementParts || _vm.result.searchResult.hasAlternativeParts)}}):_vm._e()],1),(!_vm.result.isNotInStockButReplaceable && !_vm.result.price.isHidden)?_c('div',{staticClass:\"col-4 d-flex justify-content-end\"},[_c('ShoppingCartActions',{attrs:{\"positionAbsolute\":false,\"fullPartId\":_vm.result.searchResult.id,\"partNumber\":_vm.result.searchResult.partNumber,\"unitCode\":_vm.result.searchResult.unitCode,\"maxAllowedQuantity\":_vm.maxAllowedQuantity},on:{\"quantity-changed\":_vm.onQuantityChanged,\"quantity-valid\":_vm.onQuantityValid,\"quantity-invalid\":_vm.onQuantityInvalid}})],1):_vm._e()])])]),(_vm.hasRelatedParts)?_c('RelatedPartsAction',{attrs:{\"fullPartId\":_vm.result.searchResult.id}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"related-parts-action row d-flex justify-content-center\"},[_c('button',{staticClass:\"btn btn-primary shopping-cart-menu__icon-button related-parts-action__icon-button\",class:{ 'related-parts-action__icon-button-active': _vm.showRelatedParts, 'related-parts-action__icon-button': !_vm.showRelatedParts},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleRelatedParts($event)}}},[(!_vm.showRelatedParts)?_c('MoreIcon'):_c('LessIcon')],1),(_vm.showRelatedParts)?_c('div',{staticClass:\"part-details-actions__arrow\"}):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { MoreIcon } from '@/components/icons/MoreIcon';\r\nimport { LessIcon } from '@/components/icons/LessIcon';\r\nimport store from '@/store';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { RelatedPartsModuleTypes } from '@/store/modules/related-parts';\r\n\r\n@Component({\r\n store,\r\n components: {\r\n MoreIcon,\r\n LessIcon,\r\n },\r\n})\r\nexport default class RelatedPartsAction extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private fullPartId!: string;\r\n\r\n public toggleRelatedParts(): void {\r\n if (this.showRelatedParts) {\r\n this.$store.dispatch(\r\n RelatedPartsModuleTypes.actions.unloadRelatedParts\r\n );\r\n } else {\r\n this.$store.dispatch(\r\n RelatedPartsModuleTypes.actions.loadRelatedParts,\r\n {\r\n id: this.fullPartId,\r\n }\r\n );\r\n }\r\n }\r\n\r\n public get showRelatedParts(): boolean {\r\n return (\r\n this.$store.getters[RelatedPartsModuleTypes.getters.partId] &&\r\n this.fullPartId ===\r\n this.$store.getters[RelatedPartsModuleTypes.getters.partId]\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPartsAction.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedPartsAction.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RelatedPartsAction.vue?vue&type=template&id=6f621d74&\"\nimport script from \"./RelatedPartsAction.vue?vue&type=script&lang=ts&\"\nexport * from \"./RelatedPartsAction.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"replacement-parts-action\"},[_c('button',{staticClass:\"btn badge badge-primary replacement-parts-action__button\",attrs:{\"disabled\":_vm.showRelatedParts},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openRelatedParts($event)}}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART.SHOW_REPLACEMENTS_BUTTON_TEXT)))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport { MoreIcon } from '@/components/icons/MoreIcon';\r\nimport { LessIcon } from '@/components/icons/LessIcon';\r\nimport store from '@/store';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { RelatedPartsModuleTypes } from '@/store/modules/related-parts';\r\n\r\n@Component({\r\n store,\r\n})\r\nexport default class ReplacementPartsAction extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private fullPartId!: string;\r\n\r\n public openRelatedParts(): void {\r\n this.$store.dispatch(RelatedPartsModuleTypes.actions.loadRelatedParts, {\r\n id: this.fullPartId,\r\n });\r\n }\r\n\r\n public get showRelatedParts(): boolean {\r\n return (\r\n this.$store.getters[RelatedPartsModuleTypes.getters.partId] &&\r\n this.fullPartId ===\r\n this.$store.getters[RelatedPartsModuleTypes.getters.partId]\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReplacementPartsAction.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReplacementPartsAction.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReplacementPartsAction.vue?vue&type=template&id=e79d1c6a&\"\nimport script from \"./ReplacementPartsAction.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReplacementPartsAction.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"part-search__result-image-link\",class:{\n 'd-flex justify-content-center align-items-center': _vm.couldNotLoadImage,\n },attrs:{\"href\":_vm.href}},[_c('img',{staticClass:\"card-img-top part-search__result-image\",class:{\n 'part-search__result-image--not-found': _vm.couldNotLoadImage,\n },attrs:{\"srcset\":_vm.couldNotLoadImage\n ? ''\n : ((_vm.getUrlForImage(\n _vm.src,\n true,\n 500\n )) + \" 500w, \" + (_vm.getUrlForImage(_vm.src, true, 750)) + \" 750w\"),\"sizes\":\"(max-width: 767px) 750px,\\n (max-width: 1500px) 500px,\\n 500px\",\"src\":_vm.couldNotLoadImage\n ? '/images/broken-image.svg'\n : (\"\" + (_vm.getUrlForImage(_vm.src, true, 500))),\"alt\":_vm.alt},on:{\"~error\":function($event){return _vm.imageLoadError($event)}}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class PartSearchCardImage extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private src!: string;\r\n\r\n @Prop(String)\r\n private alt!: string;\r\n\r\n @Prop(String)\r\n private href!: string;\r\n\r\n private couldNotLoadImage: boolean = false;\r\n\r\n private imageLoadError(): void {\r\n this.couldNotLoadImage = true;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartSearchCardImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartSearchCardImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartSearchCardImage.vue?vue&type=template&id=7b22ae6f&\"\nimport script from \"./PartSearchCardImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartSearchCardImage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport RelatedPartsAction from '@/components/related-part/RelatedPartsAction.vue';\r\nimport Price from '@/components/price/Price.vue';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport ReplacementPartsAction from '@/components/related-part/ReplacementPartsAction.vue';\r\nimport PartSearchCardImage from '@/components/part-search/PartSearchCardImage.vue';\r\nimport { localize } from '@/filters/localize';\r\nimport { PartDeliveryTimeInformation } from '@/entities/PartDeliveryTimeInformation';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport _ from 'lodash';\r\nimport { PartSearchModuleTypes } from '../../store/modules/part-search';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartActions,\r\n RelatedPartsAction,\r\n LoadingIndicator,\r\n Price,\r\n ReplacementPartsAction,\r\n PartSearchCardImage,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class PartSearchCard extends Mixins(BaseMixin) {\r\n @Prop(Object)\r\n private result!: PartSearchResultDetails;\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n\r\n private reloadAvailabilityDebounced: (quantity: number) => void;\r\n private showAvailability: boolean = true;\r\n\r\n constructor() {\r\n super();\r\n this.reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n }\r\n\r\n public get fullPartId(): string {\r\n return this.result.searchResult.id;\r\n }\r\n\r\n public get hasRelatedParts(): boolean {\r\n return this.result.searchResult.hasAlternativeParts || this.result.searchResult.hasReplacementParts;\r\n }\r\n\r\n private get maxAllowedQuantity(): number | undefined {\r\n if (!this.result.searchResult.isUsedPart) {\r\n return undefined;\r\n }\r\n\r\n return this.getAvailableItemCount();\r\n }\r\n\r\n private onQuantityChanged(quantity: number): void {\r\n this.reloadAvailabilityDebounced(quantity);\r\n }\r\n\r\n private onQuantityValid(): void {\r\n this.showAvailability = true;\r\n }\r\n\r\n private onQuantityInvalid(): void {\r\n this.showAvailability = false;\r\n }\r\n\r\n private reloadAvailability(quantity: number): void {\r\n const partId = this.result.searchResult.id;\r\n this.$store.dispatch(PartSearchModuleTypes.actions.reloadPartAvailabilityForPart, {\r\n partId,\r\n quantity,\r\n });\r\n }\r\n\r\n private getAvailableItemCount(): number {\r\n if (!this.result.partAvailability || !this.result.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return this.result.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartSearchCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartSearchCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartSearchCard.vue?vue&type=template&id=d723a49e&\"\nimport script from \"./PartSearchCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartSearchCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport RelatedParts from '@/components/related-part/RelatedParts.vue';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { PartSearchPagination } from './PartSearchPagination';\r\nimport PartSearchCard from './PartSearchCard.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport { PartSearchModuleTypes } from '@/store/modules/part-search';\r\nimport { Component, Prop, Mixins, Ref, Watch } from 'vue-property-decorator';\r\nimport URI from 'urijs';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\nimport { RelatedPartsModuleTypes } from '@/store/modules/related-parts';\r\nimport { RelatedPart } from '@/entities/RelatedPart';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n PartSearchCard,\r\n PartSearchPagination,\r\n RelatedParts,\r\n },\r\n})\r\nexport default class PartSearch extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private searchTerm!: string;\r\n @Prop(String)\r\n private brand!: string;\r\n @Prop(Number)\r\n private pageNumber!: number;\r\n @Prop(String)\r\n private category!: string;\r\n @Prop(String)\r\n private partActionLink!: string;\r\n @Ref('cards')\r\n private readonly cards!: PartSearchCard[];\r\n\r\n private relatedPartsComponents: RelatedParts[] = [];\r\n\r\n public get baseSearchLinkWithoutPage(): string {\r\n return new URI('/PartSearch')\r\n .addQuery({\r\n searchTerm: isNullOrWhitespace(this.searchTerm) ? undefined : this.searchTerm,\r\n brand: isNullOrWhitespace(this.brand) ? undefined : this.brand,\r\n category: isNullOrWhitespace(this.category) ? undefined : this.category,\r\n })\r\n .toString();\r\n }\r\n\r\n public get isCategorySearch(): boolean {\r\n return !isNullOrWhitespace(this.category);\r\n }\r\n\r\n public get partSearchResults(): PartSearchResultDetails[] {\r\n return this.$store.getters[PartSearchModuleTypes.getters.partSearchResults];\r\n }\r\n\r\n public get totalNumberOfResults(): number {\r\n return this.$store.getters[PartSearchModuleTypes.getters.totalNumberOfParts];\r\n }\r\n\r\n public get numberOfPages(): number {\r\n return this.$store.getters[PartSearchModuleTypes.getters.numberOfPages];\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return this.$store.getters[PartSearchModuleTypes.getters.searchResultsLoadingState] === LoadingState.Loading;\r\n }\r\n\r\n public search(): void {\r\n this.$store.dispatch(PartSearchModuleTypes.actions.loadSearchResults, {\r\n searchTerm: this.searchTerm,\r\n brand: this.brand,\r\n category: this.category,\r\n pageNumber: this.pageNumber || 1,\r\n });\r\n }\r\n\r\n protected mounted(): void {\r\n this.search();\r\n this.injectRelatedPartsComponent();\r\n window.addEventListener('resize', this.handleResize);\r\n }\r\n\r\n protected updated(): void {\r\n this.deleteRelatedPartsComponent();\r\n this.injectRelatedPartsComponent();\r\n }\r\n\r\n protected beforeDestroy(): void {\r\n window.removeEventListener('resize', this.handleResize);\r\n }\r\n\r\n private get relatedParts(): RelatedPart[] {\r\n return this.$store.getters[RelatedPartsModuleTypes.getters.relatedParts];\r\n }\r\n\r\n private handleResize(): void {\r\n this.deleteRelatedPartsComponent();\r\n this.injectRelatedPartsComponent();\r\n }\r\n\r\n private deleteRelatedPartsComponent(): void {\r\n this.relatedPartsComponents.map((elem) => {\r\n elem.$el.remove();\r\n elem.$destroy();\r\n });\r\n this.relatedPartsComponents = [];\r\n }\r\n\r\n private injectRelatedPartsComponent(): void {\r\n if (!this.cards) {\r\n return;\r\n }\r\n\r\n let partIdsWithRelationInRow: string[] = [];\r\n this.cards.forEach((card, index) => {\r\n if (card.hasRelatedParts) {\r\n // store part id to be passed to component\r\n partIdsWithRelationInRow.push(card.fullPartId);\r\n }\r\n const cardElement = card.$el;\r\n if (\r\n !cardElement.nextElementSibling ||\r\n cardElement.getBoundingClientRect().top < cardElement.nextElementSibling.getBoundingClientRect().top\r\n ) {\r\n // next row reached, inject relates parts component if related parts detected\r\n if (partIdsWithRelationInRow.length > 0) {\r\n if (!cardElement.parentNode) {\r\n return;\r\n }\r\n const RelatedPartsComponentClass = Vue.extend(RelatedParts);\r\n const relatedPartsInstance = new RelatedPartsComponentClass({\r\n propsData: {\r\n fullPartIds: partIdsWithRelationInRow,\r\n partActionLink: this.partActionLink,\r\n },\r\n }) as RelatedParts;\r\n relatedPartsInstance.$mount();\r\n cardElement.parentNode.insertBefore(relatedPartsInstance.$el, cardElement.nextSibling);\r\n this.relatedPartsComponents.push(relatedPartsInstance);\r\n }\r\n partIdsWithRelationInRow = []; // reset collection at end of row\r\n }\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartSearch.vue?vue&type=template&id=62510fc2&\"\nimport script from \"./PartSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"catalogue-search__heading\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CATALOGUE_SEARCH.RESULTS_HEADING))+\"\\n \"+_vm._s(_vm.searchTerm)+\":\\n \")])])])]),_c('div',[(_vm.isLoading)?_c('div',{staticClass:\"col-12 d-flex justify-content-center\"},[_c('LoadingIndicator')],1):_c('div',[(_vm.catalogueSearchPage.vinResult.entries.length > 0)?_c('div',[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CATALOGUE_SEARCH.SUB_HEADLINE_VIN))+\"\\n \")]),_vm._l((_vm.catalogueSearchPage.vinResult.entries),function(vinResult){return _c('CatalogueSearchCard',{key:vinResult.id,attrs:{\"id\":vinResult.id,\"name\":vinResult.name,\"imgSrc\":(\"/api/part-catalogue/getThumbnail/project?id=\" + (vinResult.id)),\"linkTo\":(\"/PartCatalogue/\" + (vinResult.treeId))}})})],2):_vm._e(),(_vm.catalogueSearchPage.brandResult.entries.length > 0)?_c('div',[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CATALOGUE_SEARCH.SUB_HEADLINE_BRAND))+\"\\n \")]),_vm._l((_vm.catalogueSearchPage.brandResult.entries),function(brandResult){return _c('CatalogueSearchCard',{key:brandResult.id,attrs:{\"id\":brandResult.id,\"name\":brandResult.name,\"imgSrc\":(\"/api/part-catalogue/getThumbnail/group?id=\" + (brandResult.id)),\"linkTo\":(\"/PartCatalogue/\" + (brandResult.treeId))}})})],2):_vm._e(),(_vm.catalogueSearchPage.modelGroupResult.entries.length > 0)?_c('div',[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CATALOGUE_SEARCH.SUB_HEADLINE_MODEL_GROUP))+\"\\n \")]),_vm._l((_vm.catalogueSearchPage.modelGroupResult.entries),function(modelGroupResult){return _c('CatalogueSearchCard',{key:modelGroupResult.id,attrs:{\"id\":modelGroupResult.id,\"name\":modelGroupResult.name,\"imgSrc\":(\"/api/part-catalogue/getThumbnail/group?id=\" + (modelGroupResult.id)),\"linkTo\":(\"/PartCatalogue/\" + (modelGroupResult.treeId))}})})],2):_vm._e(),(_vm.catalogueSearchPage.modelResult.entries.length > 0)?_c('div',[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CATALOGUE_SEARCH.SUB_HEADLINE_MODEL))+\"\\n \")]),_vm._l((_vm.catalogueSearchPage.modelResult.entries),function(modelResult){return _c('CatalogueSearchCard',{key:modelResult.id,attrs:{\"id\":modelResult.id,\"name\":modelResult.name,\"imgSrc\":(\"/api/part-catalogue/getThumbnail/project?id=\" + (modelResult.id)),\"linkTo\":(\"/PartCatalogue/\" + (modelResult.treeId))}})})],2):_vm._e(),(_vm.catalogueSearchPage.diagramResult.diagrams.length > 0)?_c('div',[_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CATALOGUE_SEARCH.SUB_HEADLINE_DIAGRAM))+\"\\n \")]),_vm._l((_vm.catalogueSearchPage.diagramResult.diagrams),function(diagramResult){return _c('CatalogueSearchAssemblyCard',{key:diagramResult.id,attrs:{\"id\":diagramResult.id,\"name\":diagramResult.name,\"projectName\":diagramResult.projectName,\"imgSrc\":(\"/api/part-catalogue/getThumbnail/assembly?id=\" + (diagramResult.id)),\"linkTo\":(\"/PartCatalogue/Assembly/\" + (diagramResult.treeId))}})})],2):_vm._e(),_vm._l((_vm.catalogueSearchPage.partCatalogueParts),function(partResult){return _c('CatalogueSearchPartCard',{key:partResult.searchResultPartDetails.id,attrs:{\"result\":partResult,\"basePartCatalogueDetailsLink\":_vm.basePartCatalogueDetailsLink,\"partDetailsLink\":(\"/Part?id=\" + (partResult.searchResultPartDetails.id))}})})],2)]),(!_vm.isLoading)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('PartSearchPagination',{attrs:{\"numberOfPages\":_vm.numberOfPages,\"currentPageNumber\":_vm.pageNumber,\"baseSearchLink\":_vm.baseSearchLinkWithoutPage}})],1)]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card col-12 catalogue-search-card\"},[_c('div',{staticClass:\"row no-gutters\"},[_c('CatalogueSearchCardImage',{attrs:{\"src\":_vm.thumbnailImageUrl,\"alt\":_vm.result && _vm.result.searchResultPartDetails.partNumber}}),_c('div',{staticClass:\"col-12 col-lg-9\"},[_c('div',{staticClass:\"card-body h-100 d-flex flex-column justify-content-between\"},[_c('div',{staticClass:\"row catalogue-search-card__row-top\"},[_c('div',{staticClass:\"col-12 col-lg-8\"},[_c('a',{attrs:{\"href\":_vm.partDetailsLink}},[_c('div',{staticClass:\"catalogue-search-card__title\"},[_vm._v(_vm._s(_vm.result.searchResultPartDetails.name))]),_c('div',{staticClass:\"catalogue-search-card__part-number\"},[_vm._v(_vm._s(_vm.result.searchResultPartDetails.partNumber))]),_c('div',{staticClass:\"catalogue-search-card__brand\"},[_vm._v(_vm._s(_vm.result.searchResultPartDetails.brandCode))])])]),(_vm.showPartAvailabilityAndPrice)?_c('div',{staticClass:\"col-12 col-lg-4 d-flex justify-content-between\"},[_c('div',[(_vm.result.isPartAvailabilityLoading)?_c('div',{staticClass:\"catalogue-search-card__availability\"},[_c('LoadingIndicator')],1):_c('DeliveryTimeToolTip',{attrs:{\"partAvailability\":_vm.result.partAvailability}},[_c('div',{staticClass:\"catalogue-search-card__availability\",style:({\n color:\n _vm.result.partAvailability && _vm.result.partAvailability.color\n ? _vm.result.partAvailability.color\n : '',\n })},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(\n _vm.result.partAvailability && _vm.result.partAvailability.code\n ),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])]),_c('Price',{attrs:{\"priceNetCents\":_vm.result.price.priceNetCents,\"priceGrossCents\":_vm.result.price.priceGrossCents,\"priceDiscountedNetCents\":_vm.result.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceDiscountedNetCents,\"isHidden\":_vm.result.price.isHidden,\"currencySymbol\":_vm.result.price.currency.htmlSymbol,\"hasSubunit\":_vm.result.price.currency.hasSubunit,\"noWrap\":true}})],1),(!_vm.result.price.isHidden)?_c('ShoppingCartActions',{attrs:{\"positionAbsolute\":false,\"fullPartId\":_vm.result.searchResultPartDetails.id,\"partNumber\":_vm.result.searchResultPartDetails.partNumber,\"unitCode\":_vm.result.searchResultPartDetails.unitCode},on:{\"quantity-changed\":_vm.quantityChanged}}):_vm._e()],1):_vm._e()]),_c('div',{staticClass:\"catalogue-search-card__row-bottom\"},[_c('div',{staticClass:\"catalogue-search-card__item-text\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_CATALOGUE.BREADCRUMB_DESCRIPTION_TEXT)))]),_vm._l((_vm.result.associatedAssemblyPaths.associatedPaths),function(assembly){return _c('div',{key:assembly.id,staticClass:\"catalogue-search-card__item-link\"},[_c('a',{attrs:{\"href\":_vm.partCatalogueAssemblyUrl(assembly.id, _vm.result.searchResultPartDetails.id)}},[_vm._v(\"\\n \"+_vm._s(assembly.path)+\"\\n \")])])})],2)])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-12 col-lg-3 catalogue-search-card__image-container\",class:{\n 'catalogue-search-card__image-container--not-found': _vm.couldNotLoadImage,\n }},[_c('img',{staticClass:\"card-img-top catalogue-search-card__result-image\",class:{\n 'catalogue-search-card__result-image--not-found': _vm.couldNotLoadImage,\n },attrs:{\"src\":_vm.couldNotLoadImage\n ? '/images/broken-image.svg'\n : _vm.src,\"alt\":_vm.alt},on:{\"~error\":function($event){return _vm.imageLoadError($event)}}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport URI from 'urijs';\r\n\r\n@Component({})\r\nexport default class CatalogueSearchCardImage extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private src!: string;\r\n\r\n @Prop(String)\r\n private alt!: string;\r\n\r\n private couldNotLoadImage: boolean = false;\r\n\r\n private imageLoadError(): void {\r\n this.couldNotLoadImage = true;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchCardImage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchCardImage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CatalogueSearchCardImage.vue?vue&type=template&id=fc8ede8c&\"\nimport script from \"./CatalogueSearchCardImage.vue?vue&type=script&lang=ts&\"\nexport * from \"./CatalogueSearchCardImage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport Price from '@/components/price/Price.vue';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport CatalogueSearchCardImage from '@/components/catalogue-search/CatalogueSearchCardImage.vue';\r\nimport { PartCatalogueSearchPage } from '@/entities/part-catalogue/PartCatalogueSearchPage';\r\nimport { PartCatalogueFilter } from '@/entities/part-catalogue/PartCatalogueFilter';\r\nimport { PartCatalogueBreadcrumb } from '@/entities/part-catalogue/PartCatalogueBreadcrumb';\r\nimport URI from 'urijs';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\nimport { PartDeliveryTimeInformation } from '@/entities/PartDeliveryTimeInformation';\r\nimport { localize } from '@/filters/localize';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport { PartCatalogueSearchModuleTypes } from '../../store/modules/part-catalogue-search';\r\nimport _, { partition } from 'lodash';\r\nimport { PartCatalogueSearchPartResult } from '@/entities/part-catalogue/PartCatalogueSearchPartResult';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartActions,\r\n LoadingIndicator,\r\n Price,\r\n CatalogueSearchCardImage,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class CatalogueSearchPartCard extends Mixins(BaseMixin) {\r\n @Prop(Object)\r\n private result!: PartCatalogueSearchPartResult;\r\n @Prop(String)\r\n private basePartCatalogueDetailsLink!: string;\r\n @Prop(String)\r\n private readonly partDetailsLink!: string;\r\n\r\n private reloadAvailabilityDebounced: (quantity: number) => void;\r\n\r\n constructor() {\r\n super();\r\n this.reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n }\r\n\r\n private partCatalogueDetailsLink(breadcrumb: PartCatalogueBreadcrumb): string {\r\n const lastFilter = breadcrumb.filters.find((filter) => filter.partCatalogueEntryId !== null);\r\n if (lastFilter === undefined || lastFilter.partCatalogueEntryId === null) {\r\n return '';\r\n }\r\n return new URI(this.basePartCatalogueDetailsLink)\r\n .segmentCoded(lastFilter.id.toString())\r\n .segmentCoded(lastFilter.partCatalogueEntryId.toString())\r\n .addQuery('highlightPartId', this.result.searchResultPartDetails.id)\r\n .toString();\r\n }\r\n\r\n private get thumbnailImageUrl(): string {\r\n return `/api/part-catalogue/getThumbnail/assembly?id=${this.result.associatedAssemblyPaths.thumbnailAssemblyId}`;\r\n }\r\n\r\n private get showPartAvailabilityAndPrice(): boolean {\r\n return this.result.partAvailability !== null && this.result.price !== null;\r\n }\r\n\r\n private partCatalogueAssemblyUrl(id: string, partId: string): string {\r\n return `/PartCatalogue/Assembly/${id}?preSelectedPartId=${partId}`;\r\n }\r\n\r\n private getBreadcrumbLinkText(filters: PartCatalogueFilter[]): string {\r\n return filters\r\n .map((filter) => filter.filterValue)\r\n .filter((value) => !isNullOrWhitespace(value))\r\n .join(' > ');\r\n }\r\n\r\n private quantityChanged(quantity: number): void {\r\n this.reloadAvailabilityDebounced(quantity);\r\n }\r\n\r\n private reloadAvailability(quantity: number): void {\r\n const partId = this.result.searchResultPartDetails.id;\r\n this.$store.dispatch(PartCatalogueSearchModuleTypes.actions.reloadPartAvailabilityForPart, {\r\n partId,\r\n quantity,\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchPartCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchPartCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CatalogueSearchPartCard.vue?vue&type=template&id=6545af48&\"\nimport script from \"./CatalogueSearchPartCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./CatalogueSearchPartCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card col-12 catalogue-search-card\"},[_c('div',{staticClass:\"row no-gutters\"},[_c('CatalogueSearchCardImage',{attrs:{\"src\":_vm.imgSrc,\"alt\":_vm.name}}),_c('div',{staticClass:\"catalogue-search-card__simple-card\"},[_c('div',{staticClass:\"catalogue-search-card__title\"},[_c('a',{attrs:{\"href\":_vm.linkTo}},[_vm._v(_vm._s(_vm.name))])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport CatalogueSearchCardImage from './CatalogueSearchCardImage.vue';\r\n\r\n@Component({\r\n components: {\r\n CatalogueSearchCardImage,\r\n },\r\n})\r\nexport default class CatalogueSearchCard extends Vue {\r\n @Prop()\r\n private readonly id!: string;\r\n\r\n @Prop()\r\n private readonly name!: string;\r\n\r\n @Prop()\r\n private readonly imgSrc!: string;\r\n\r\n @Prop()\r\n private readonly linkTo!: string;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CatalogueSearchCard.vue?vue&type=template&id=59ab7087&\"\nimport script from \"./CatalogueSearchCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./CatalogueSearchCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card col-12 catalogue-search-card\"},[_c('div',{staticClass:\"row no-gutters\"},[_c('CatalogueSearchCardImage',{attrs:{\"src\":_vm.imgSrc,\"alt\":_vm.name}}),_c('div',{staticClass:\"catalogue-search-card__simple-card\"},[_c('div',[_c('a',{attrs:{\"href\":_vm.linkTo}},[_c('div',{staticClass:\"catalogue-search-card__title\"},[_vm._v(\"\\n \"+_vm._s(_vm.name)+\"\\n \")]),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.projectName)+\"\\n \")])])])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport CatalogueSearchCardImage from './CatalogueSearchCardImage.vue';\r\n\r\n@Component({\r\n components: {\r\n CatalogueSearchCardImage,\r\n },\r\n})\r\nexport default class CatalogueSearchAssemblyCard extends Vue {\r\n @Prop()\r\n private readonly id!: string;\r\n\r\n @Prop()\r\n private readonly name!: string;\r\n\r\n @Prop()\r\n private readonly projectName!: string;\r\n\r\n @Prop()\r\n private readonly imgSrc!: string;\r\n\r\n @Prop()\r\n private readonly linkTo!: string;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchAssemblyCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearchAssemblyCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CatalogueSearchAssemblyCard.vue?vue&type=template&id=1e16ddea&\"\nimport script from \"./CatalogueSearchAssemblyCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./CatalogueSearchAssemblyCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport { PartSearchPagination } from '@/components/part-search/PartSearchPagination';\r\nimport CatalogueSearchPartCard from './CatalogueSearchPartCard.vue';\r\nimport CatalogueSearchCard from './CatalogueSearchCard.vue';\r\nimport CatalogueSearchAssemblyCard from './CatalogueSearchAssemblyCard.vue';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartCatalogueSearchPage } from '@/entities/part-catalogue/PartCatalogueSearchPage';\r\nimport { PartCatalogueSearchModuleTypes } from '@/store/modules/part-catalogue-search';\r\nimport { Component, Prop, Mixins, Ref, Watch } from 'vue-property-decorator';\r\nimport URI from 'urijs';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n CatalogueSearchPartCard,\r\n PartSearchPagination,\r\n CatalogueSearchCard,\r\n CatalogueSearchAssemblyCard,\r\n },\r\n})\r\nexport default class CatalogueSearch extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private searchTerm!: string;\r\n @Prop(String)\r\n private brand!: string;\r\n @Prop(Number)\r\n private pageNumber!: number;\r\n\r\n private basePartCatalogueDetailsLink: string = '/PartCatalogue/Details/';\r\n private isLoading: boolean = true;\r\n\r\n protected mounted(): void {\r\n this.search();\r\n }\r\n\r\n private get baseSearchLinkWithoutPage(): string {\r\n return new URI('/CatalogueSearch')\r\n .addQuery({\r\n searchTerm: isNullOrWhitespace(this.searchTerm) ? undefined : this.searchTerm,\r\n brand: isNullOrWhitespace(this.brand) ? undefined : this.brand,\r\n })\r\n .toString();\r\n }\r\n\r\n private get catalogueSearchPage(): PartCatalogueSearchPage {\r\n const page = this.$store.getters[PartCatalogueSearchModuleTypes.getters.partCatalogueSearchResults];\r\n\r\n if (page) {\r\n return page;\r\n }\r\n\r\n return {\r\n totalNumberOfResults: 0,\r\n brandResult: { totalNumberOfResults: 0, entries: [] },\r\n modelGroupResult: { totalNumberOfResults: 0, entries: [] },\r\n modelResult: { totalNumberOfResults: 0, entries: [] },\r\n vinResult: { totalNumberOfResults: 0, entries: [] },\r\n diagramResult: { totalNumberOfResults: 0, diagrams: [] },\r\n partCatalogueParts: [],\r\n };\r\n }\r\n\r\n private get totalNumberOfResults(): number {\r\n return this.$store.getters[PartCatalogueSearchModuleTypes.getters.totalNumberOfParts];\r\n }\r\n\r\n private get numberOfPages(): number {\r\n return this.$store.getters[PartCatalogueSearchModuleTypes.getters.numberOfPages];\r\n }\r\n\r\n @Watch('catalogueSearchPage')\r\n private isLoadingWatch(): void {\r\n this.isLoading = this.catalogueSearchPage === null;\r\n }\r\n\r\n private search(): void {\r\n this.$store.dispatch(PartCatalogueSearchModuleTypes.actions.loadSearchResults, {\r\n searchTerm: this.searchTerm,\r\n brand: this.brand,\r\n pageNumber: this.pageNumber || 1,\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CatalogueSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CatalogueSearch.vue?vue&type=template&id=14d1ff80&\"\nimport script from \"./CatalogueSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./CatalogueSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_c('cookie-law',{attrs:{\"theme\":\"formula-spares\",\"buttonText\":_vm._f(\"localize\")(_vm.l10n.COOKIE_DISCLAIMER.BUTTON_TEXT),\"buttonLink\":_vm.moreInfoLink,\"buttonLinkText\":_vm._f(\"localize\")(_vm.l10n.COOKIE_DISCLAIMER.MORE_INFO_BUTTON_TEXT),\"buttonLinkNewTab\":true,\"message\":_vm._f(\"localize\")(_vm.l10n.COOKIE_DISCLAIMER.MESSAGE),\"position\":\"bottom\",\"transitionName\":\"slideFromBottom\",\"storageType\":\"localStorage\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport CookieLaw from 'vue-cookie-law';\r\n\r\n@Component({\r\n components: {\r\n CookieLaw,\r\n },\r\n})\r\nexport default class CookieDisclaimer extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n public moreInfoLink!: string;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CookieDisclaimer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CookieDisclaimer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CookieDisclaimer.vue?vue&type=template&id=da11c7d8&\"\nimport script from \"./CookieDisclaimer.vue?vue&type=script&lang=ts&\"\nexport * from \"./CookieDisclaimer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"breadcrumb-container\"},[_vm._l((_vm.data.items),function(item){return _c('div',{key:item.displayName,staticClass:\"d-inline-block breadcrumb-container__link-item\"},[_c('a',{attrs:{\"href\":item.url}},[_vm._v(_vm._s(item.displayName))]),_c('img',{attrs:{\"src\":\"/images/spares_icon_arrow_breadcrumb.svg\",\"alt\":\"\",\"aria-hidden\":\"true\"}})])}),_c('span',{staticClass:\"breadcrumb-container__current-page\"},[_vm._v(_vm._s(_vm.data.currentPage))])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Mixins, Component, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { BreadcrumbData } from '@/entities/breadcrumb/Breadcrumb';\r\n\r\n@Component\r\nexport default class Breadcrumb extends Mixins(BaseMixin) {\r\n @Prop()\r\n private readonly data!: BreadcrumbData;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Breadcrumb.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Breadcrumb.vue?vue&type=template&id=c0ffd53e&\"\nimport script from \"./Breadcrumb.vue?vue&type=script&lang=ts&\"\nexport * from \"./Breadcrumb.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('script',{attrs:{\"type\":\"application/ld+json\"}},[_vm._v(\"\\n\"+_vm._s(_vm.content)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { BreadcrumbData } from '@/entities/breadcrumb/Breadcrumb';\r\nimport { GoogleMarkupData, GoogleMarkupDataListElement } from '@/entities/breadcrumb/GoogleMarkupData';\r\n\r\nexport class GoogleService {\r\n public generateBreadcrumbMarkupData(breadcrumb: BreadcrumbData): GoogleMarkupData {\r\n const itemListElements: GoogleMarkupDataListElement[] = breadcrumb.items.map((item, index) => {\r\n return {\r\n type: 'ListItem',\r\n position: index + 1,\r\n name: item.displayName,\r\n item: item.url,\r\n };\r\n });\r\n\r\n itemListElements.push({\r\n type: 'ListItem',\r\n position: itemListElements.length + 1,\r\n name: breadcrumb.currentPage,\r\n item: undefined,\r\n });\r\n\r\n return {\r\n context: 'https://schema.org',\r\n type: 'BreadcrumbList',\r\n itemListElement: itemListElements,\r\n };\r\n }\r\n\r\n public stringifyBreadcrumbMarkupData(markupData: GoogleMarkupData): string {\r\n return `{\"@context\": \"${\r\n markupData.context\r\n }\", \"@type\": \"BreadcrumbList\", \"itemListElement\": [${markupData.itemListElement\r\n .map(\r\n (item) =>\r\n `{\"@type\": \"${item.type}\", \"position\": ${item.position}, \"name\": \"${item.name}\"${\r\n item.item ? `, \"item\": \"${item.item}\"` : ''\r\n }}`\r\n )\r\n .join(', ')}]}`;\r\n }\r\n}\r\n","\n\n\n\n\n\n\r\nimport { Mixins, Prop, Component } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { BreadcrumbData } from '@/entities/breadcrumb/Breadcrumb';\r\nimport { GoogleService } from '@/services/google-service';\r\n\r\n@Component\r\nexport default class GoogleMarkupData extends Mixins(BaseMixin) {\r\n @Prop()\r\n private readonly data!: string;\r\n\r\n private readonly service: GoogleService = new GoogleService();\r\n\r\n get content(): string {\r\n const data: BreadcrumbData = JSON.parse(this.data);\r\n\r\n data.items.forEach((item) => (item.url = `${window.location.origin}${item.url}`));\r\n\r\n const markupData = this.service.generateBreadcrumbMarkupData(data);\r\n return this.service.stringifyBreadcrumbMarkupData(markupData);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMarkupData.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GoogleMarkupData.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GoogleMarkupData.vue?vue&type=template&id=15b85c16&\"\nimport script from \"./GoogleMarkupData.vue?vue&type=script&lang=ts&\"\nexport * from \"./GoogleMarkupData.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row car__popular-parts d-none d-lg-flex\"},[_c('div',{staticClass:\"col-12 d-flex justify-content-between align-items-center popular-parts__header\"},[_c('div',{staticClass:\"popular-parts__title\"},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.CAR.RANDOM_PARTS_TITLE))+\" \"+_vm._s(_vm.carTitle))])]),_vm._m(0),_vm._l((_vm.randomParts),function(part,index){return _c('div',{key:part.searchResult.id,staticClass:\"col-12\"},[_c('PartListItem',{attrs:{\"result\":part,\"partDetailLink\":(_vm.partActionLink + \"?id=\" + (part.searchResult.id)),\"showImage\":false}}),(index !== _vm.randomParts.length-1)?_c('div',{staticClass:\"car__separator\"}):_vm._e()],1)}),_c('div',{staticClass:\"car__space\"})],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"car__separator mt-0\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card car-part-item car-part-item__result d-flex flex-row\"},[(_vm.showImage)?_c('div',{staticClass:\"car-part-item__image-wrapper\"},[_c('PartSearchCardImage',{attrs:{\"href\":_vm.partDetailLink,\"src\":_vm.result.imageUrl,\"alt\":_vm.result.searchResult.partNumber}})],1):_vm._e(),_c('div',{staticClass:\"row car-part-item__result-content\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('a',{staticClass:\"car-part-item__result-link\",attrs:{\"href\":_vm.partDetailLink}},[_c('h2',{staticClass:\"car-part-item__result-title\",class:{\n 'car-part-item__result-title--has-replacements':\n _vm.result.searchResult.hasReplacementParts,\n }},[_vm._v(_vm._s(_vm.result.searchResult.name))])]),_c('a',{staticClass:\"car-part-item__result-link\",attrs:{\"href\":_vm.partDetailLink}},[_c('h3',{staticClass:\"car-part-item__result-number\"},[_vm._v(_vm._s(_vm.result.searchResult.partNumber))])]),_c('h4',{staticClass:\"car-part-item__result-brand\"},[_vm._v(_vm._s(_vm.result.searchResult.brandCode))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-8\"},[(_vm.result.isPartAvailabilityLoading)?_c('div',{staticClass:\"w-100 d-flex justify-content-center align-items-center car-part-item__result-availability\"},[_c('LoadingIndicator')],1):_c('DeliveryTimeToolTip',{attrs:{\"partAvailability\":_vm.result.partAvailability}},[_c('div',{staticClass:\"car-part-item__result-availability\",style:({ \n color: _vm.result.partAvailability && _vm.result.partAvailability.color ? _vm.result.partAvailability.color : '',\n visibility: _vm.showAvailability ? 'visible' : 'hidden'\n })},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.result.partAvailability && _vm.result.partAvailability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])]),(!_vm.result.isNotInStockButReplaceable)?_c('Price',{attrs:{\"priceNetCents\":_vm.result.price.priceNetCents,\"priceGrossCents\":_vm.result.price.priceGrossCents,\"priceDiscountedNetCents\":_vm.result.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.result.depositPartPrice && _vm.result.depositPartPrice.priceDiscountedNetCents,\"isHidden\":_vm.result.price.isHidden,\"currencySymbol\":_vm.result.price.currency.htmlSymbol,\"hasSubunit\":_vm.result.price.currency.hasSubunit,\"noWrap\":!(_vm.result.searchResult.hasReplacementParts || _vm.result.searchResult.hasAlternativeParts)}}):_vm._e()],1),(!_vm.result.isNotInStockButReplaceable && !_vm.result.price.isHidden)?_c('div',{staticClass:\"col-4 d-flex justify-content-end\"},[_c('ShoppingCartActions',{attrs:{\"positionAbsolute\":false,\"fullPartId\":_vm.result.searchResult.id,\"partNumber\":_vm.result.searchResult.partNumber,\"unitCode\":_vm.result.searchResult.unitCode,\"maxAllowedQuantity\":_vm.maxAllowedQuantity},on:{\"quantity-valid\":_vm.onQuantityValid,\"quantity-invalid\":_vm.onQuantityInvalid}})],1):_vm._e()])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Mixins, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '../../mixins/BaseMixin';\r\nimport OrderStateToolTip from '@/components/order-state-tooltip/OrderStateToolTip.vue';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport Price from '@/components/price/Price.vue';\r\nimport PartSearchCardImage from '@/components/part-search/PartSearchCardImage.vue';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport { result } from 'lodash/fp';\r\n\r\n@Component({\r\n components: {\r\n ShoppingCartActions,\r\n Price,\r\n PartSearchCardImage,\r\n DeliveryTimeToolTip,\r\n },\r\n})\r\nexport default class PartListItem extends Mixins(BaseMixin) {\r\n @Prop(Object)\r\n private result!: PartSearchResultDetails;\r\n @Prop(String)\r\n private partDetailLink!: string;\r\n @Prop(Boolean)\r\n private showImage!: boolean;\r\n\r\n private showAvailability: boolean = true;\r\n\r\n private get maxAllowedQuantity(): number | undefined {\r\n if (!this.result.searchResult.isUsedPart) {\r\n return undefined;\r\n }\r\n\r\n return this.getAvailableItemCount();\r\n }\r\n\r\n private onQuantityValid(): void {\r\n this.showAvailability = true;\r\n }\r\n\r\n private onQuantityInvalid(): void {\r\n this.showAvailability = false;\r\n }\r\n\r\n private getAvailableItemCount(): number {\r\n if (!this.result.partAvailability || !this.result.partAvailability.stockInfos) {\r\n return 0;\r\n }\r\n return this.result.partAvailability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartListItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartListItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartListItem.vue?vue&type=template&id=1a144bb4&\"\nimport script from \"./PartListItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartListItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Mixins, Prop } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport BaseMixin from '../../mixins/BaseMixin';\r\nimport { CarPartsModuleTypes } from '@/store/modules/car-parts';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport PartListItem from '@/components/part-search/PartListItem.vue';\r\n\r\n@Component({\r\n components: {\r\n PartListItem,\r\n },\r\n})\r\nexport default class RandomPartsList extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private carTitle!: string;\r\n @Prop(String)\r\n private partActionLink!: string;\r\n\r\n private numberOfItems: number = 2;\r\n private randomParts: PartSearchResultDetails[] = [];\r\n\r\n public get partsOfCar(): PartSearchResultDetails[] {\r\n return this.$store.getters[CarPartsModuleTypes.getters.parts];\r\n }\r\n\r\n public get loadingState(): LoadingState {\r\n return this.$store.getters[CarPartsModuleTypes.getters.carPartsLoadingState];\r\n }\r\n\r\n @Watch('loadingState')\r\n private onLoadingStateChanged(): void {\r\n if (this.loadingState !== LoadingState.Loaded || this.partsOfCar.length === 0) {\r\n return;\r\n }\r\n\r\n let parts = this.partsOfCar;\r\n for (let i = 0; i < this.numberOfItems; i++) {\r\n if (parts.length === 0) {\r\n break;\r\n }\r\n const randomIndex = this.getRandomInt(0, parts.length - 1);\r\n const partToAdd = parts[randomIndex];\r\n this.randomParts.push(partToAdd);\r\n parts = parts.filter((p) => p !== partToAdd);\r\n }\r\n }\r\n\r\n /**\r\n * Returns a random integer between min (inclusive) and max (inclusive).\r\n */\r\n private getRandomInt(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RandomPartsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RandomPartsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RandomPartsList.vue?vue&type=template&id=5a95ee6b&\"\nimport script from \"./RandomPartsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./RandomPartsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SearchablePartsList',{attrs:{\"title\":_vm.searchBoxTitle,\"partActionLink\":_vm.partActionLink,\"showPartImages\":true,\"parts\":_vm.filteredParts},on:{\"search-term-changed\":_vm.onSearchTextChanged}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row car__available-parts ml-0 mr-0\"},[_c('div',{staticClass:\"col-12 d-flex justify-content-between align-items-center available-parts__header\"},[_c('div',{staticClass:\"available-parts__title\"},[_vm._v(_vm._s(_vm.title))]),_c('div',[_vm._v(_vm._s(_vm.partsLength)+\" \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.CAR.PARTS)))])]),_c('div',{staticClass:\"col-12 available-parts__search d-flex align-items-center\"},[_c('div',{staticClass:\"search-separator\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.searchTerm),expression:\"searchTerm\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"search\",\"placeholder\":_vm._f(\"localize\")(_vm.l10n.CAR.SEARCH_FOR_PARTS)},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('img',{attrs:{\"src\":\"/images/spares_Icons_lupe.svg\"}})]),_c('div',{staticClass:\"available-parts__scroll-area\"},[_c('div',{staticClass:\"car__space\"}),_vm._l((_vm.parts),function(part){return _c('div',{key:part.searchResult.id,staticClass:\"col-12\"},[_c('PartListItem',{attrs:{\"result\":part,\"partDetailLink\":(_vm.partActionLink + \"?id=\" + (part.searchResult.id)),\"showImage\":_vm.showPartImages}}),_c('div',{staticClass:\"car__separator car__separator--full\"})],1)}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAdditionalPartsLink),expression:\"showAdditionalPartsLink\"}],staticClass:\"col-12 ml-3\"},[_c('a',{attrs:{\"href\":_vm.linkToAdditionalParts}},[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_SEARCH.ADDITIONAL_PARTS_LINK_TEXT)))])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAdditionalPartsLink),expression:\"showAdditionalPartsLink\"}],staticClass:\"car__separator car__separator--full\"}),_c('div',{staticClass:\"car__space\"})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Mixins, Prop, Emit } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport BaseMixin from '../../mixins/BaseMixin';\r\nimport _ from 'lodash/fp';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport PartListItem from '@/components/part-search/PartListItem.vue';\r\n\r\n@Component({\r\n components: {\r\n PartListItem,\r\n },\r\n})\r\nexport default class SearchablePartsList extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private title!: string;\r\n @Prop(String)\r\n private partActionLink!: string;\r\n @Prop(String)\r\n private showPartImages!: boolean;\r\n @Prop(Array)\r\n private parts!: PartSearchResultDetails[];\r\n\r\n @Prop({ default: false })\r\n private showAdditionalPartsLink!: boolean;\r\n @Prop({ required: false })\r\n private linkToAdditionalParts!: string;\r\n\r\n @Prop({ default: false })\r\n private showCustomPartLength!: boolean;\r\n @Prop({ required: false, default: 0 })\r\n private customPartLength!: number;\r\n\r\n private searchTerm: string = '';\r\n\r\n private get partsLength(): number {\r\n return this.showCustomPartLength ? this.customPartLength : this.parts.length;\r\n }\r\n\r\n private searchTermChangedDebounced: () => void = _.debounce(500, () => {\r\n this.emitSearchTermChangedEvent();\r\n });\r\n\r\n @Watch('searchTerm')\r\n private onSearchTextChanged(): void {\r\n this.searchTermChangedDebounced();\r\n }\r\n\r\n @Emit('search-term-changed')\r\n private emitSearchTermChangedEvent(): string {\r\n return this.searchTerm;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchablePartsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchablePartsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchablePartsList.vue?vue&type=template&id=51788979&\"\nimport script from \"./SearchablePartsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchablePartsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Mixins, Prop } from 'vue-property-decorator';\r\nimport { LoadingState } from '@/entities/LoadingState';\r\nimport BaseMixin from '../../mixins/BaseMixin';\r\nimport _ from 'lodash/fp';\r\nimport { CarPartsModuleTypes } from '@/store/modules/car-parts';\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport SearchablePartsList from '@/components/part-search/SearchablePartsList.vue';\r\nimport { localize } from '../../filters/localize';\r\n\r\n@Component({\r\n components: {\r\n SearchablePartsList,\r\n },\r\n})\r\nexport default class AvailablePartsList extends Mixins(BaseMixin) {\r\n @Prop(String)\r\n private carTitle!: string;\r\n @Prop(Array)\r\n private partNumbers!: string[];\r\n @Prop(String)\r\n private brandCode!: string;\r\n @Prop(String)\r\n private partActionLink!: string;\r\n\r\n private allParts: PartSearchResultDetails[] = [];\r\n private filteredParts: PartSearchResultDetails[] = [];\r\n\r\n public get partsOfCar(): PartSearchResultDetails[] {\r\n return this.$store.getters[CarPartsModuleTypes.getters.parts];\r\n }\r\n\r\n public get loadingState(): LoadingState {\r\n return this.$store.getters[CarPartsModuleTypes.getters.carPartsLoadingState];\r\n }\r\n\r\n public get searchBoxTitle(): string {\r\n return `${localize(this.l10n.CAR.AVAILABLE_PARTS_TITLE)} ${this.carTitle}`;\r\n }\r\n\r\n public mounted(): void {\r\n this.$store.dispatch(CarPartsModuleTypes.actions.loadPartsOfCar, {\r\n partNumbers: this.partNumbers,\r\n brand: this.brandCode,\r\n });\r\n }\r\n\r\n private onSearchTextChanged(searchTerm: string): void {\r\n this.filterParts(searchTerm);\r\n }\r\n\r\n private filterParts(searchTerm: string): void {\r\n if (searchTerm === '') {\r\n this.filteredParts = this.partsOfCar;\r\n } else {\r\n const lowersearchTerm = searchTerm.toLowerCase();\r\n this.filteredParts = this.partsOfCar.filter(\r\n (part) =>\r\n part.searchResult.name.toLowerCase().includes(lowersearchTerm) ||\r\n part.searchResult.partNumber.toLowerCase().includes(lowersearchTerm)\r\n );\r\n }\r\n\r\n this.allParts = this.partsOfCar;\r\n }\r\n\r\n @Watch('loadingState')\r\n private onLoadingStateChanged(): void {\r\n if (this.loadingState === LoadingState.Loaded) {\r\n this.allParts = this.partsOfCar;\r\n this.filteredParts = this.partsOfCar;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailablePartsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvailablePartsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AvailablePartsList.vue?vue&type=template&id=2a674dc8&\"\nimport script from \"./AvailablePartsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AvailablePartsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"car car--no-border\"},[_c('SearchablePartsList',{attrs:{\"title\":_vm.title,\"partActionLink\":_vm.partActionLink,\"showPartImages\":true,\"parts\":_vm.parts,\"showAdditionalPartsLink\":_vm.hasAdditionalParts,\"linkToAdditionalParts\":_vm.linkToAdditionalParts,\"showCustomPartLength\":true,\"customPartLength\":_vm.totalNumberOfParts},on:{\"search-term-changed\":_vm.onSearchTermChanged}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { PartSearchResultDetails } from '@/entities/PartSearchResultDetails';\r\nimport { localize } from '@/filters/localize';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartSearchService } from '@/services/part-search-service';\r\nimport { PartSearchModuleTypes } from '@/store/modules/part-search';\r\nimport Vue from 'vue';\r\nimport { Component, Mixins, Prop, Watch } from 'vue-property-decorator';\r\nimport SearchablePartsList from '../part-search/SearchablePartsList.vue';\r\n\r\n@Component({\r\n components: {\r\n SearchablePartsList,\r\n },\r\n})\r\nexport default class BrandPartsSearchBox extends Mixins(BaseMixin) {\r\n private readonly partSearchService: PartSearchService = new PartSearchService();\r\n\r\n @Prop()\r\n private brand!: string;\r\n\r\n @Prop()\r\n private partActionLink!: string;\r\n\r\n private searchTerm: string = '';\r\n private parts: PartSearchResultDetails[] = [];\r\n private hasAdditionalParts: boolean = false;\r\n private totalNumberOfParts: number = 0;\r\n\r\n public mounted(): void {\r\n this.searchTerm = '*';\r\n }\r\n\r\n private get title(): string {\r\n const format = localize(this.l10n.PART_SEARCH.SEARCH_BOX_TITLE);\r\n\r\n if (format) {\r\n return format.replace('{0}', this.brand);\r\n }\r\n\r\n return this.brand;\r\n }\r\n\r\n private get numberOfParts(): number {\r\n return this.$store.getters[PartSearchModuleTypes.getters.numberOfResultsPerPageForSearch];\r\n }\r\n\r\n @Watch('searchTerm')\r\n private updateParts(): void {\r\n this.partSearchService\r\n .getSearchResultsShuffled(this.searchTerm, this.brand, '', 12)\r\n .then((result) => {\r\n this.parts = result.partSearchResultDetails;\r\n this.hasAdditionalParts = result.totalNumberOfResults > this.numberOfParts;\r\n this.totalNumberOfParts = result.totalNumberOfResults;\r\n });\r\n }\r\n\r\n private get linkToAdditionalParts(): string {\r\n return this.partSearchService.getUrlForPartSearchPage(this.searchTerm, this.brand, 1, '');\r\n }\r\n\r\n private onSearchTermChanged(newTerm: string): void {\r\n if (newTerm === '') {\r\n newTerm = '*';\r\n }\r\n\r\n this.searchTerm = newTerm;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandPartsSearchBox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BrandPartsSearchBox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BrandPartsSearchBox.vue?vue&type=template&id=7e38cc52&\"\nimport script from \"./BrandPartsSearchBox.vue?vue&type=script&lang=ts&\"\nexport * from \"./BrandPartsSearchBox.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[(_vm.isLoading)?[_c('div',{staticClass:\"col-12 d-flex justify-content-center align-items-center\"},[_c('LoadingIndicator')],1)]:_vm._e(),[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12 d-flex justify-content-between justify-content-xl-end\"},[_c('b-button-group',{staticClass:\"mr-3\"},[_c('a',{staticClass:\"btn btn-primary part-catalogue-details__pagination-btn\",class:{ disabled: _vm.previousAssemblyId == null || _vm.previousAssemblyId === '' },attrs:{\"href\":_vm.urlForPartCatalogueAssembly(_vm.previousAssemblyId)}},[_c('LeftArrowIcon')],1),_c('a',{staticClass:\"btn btn-primary part-catalogue-details__pagination-btn\",class:{ disabled: _vm.nextAssemblyId == null || _vm.nextAssemblyId === '' },attrs:{\"href\":_vm.urlForPartCatalogueAssembly(_vm.nextAssemblyId)}},[_c('RightArrowIcon')],1)]),_c('a',{staticClass:\"btn btn-primary\",class:{ disabled: _vm.parentGroupId == null || _vm.parentGroupId === '' },attrs:{\"href\":_vm.urlForPartCatalogue(_vm.parentGroupId)}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_CATALOGUE.CHANGE_SELECTION))+\"\\n \")])],1)]),_c('div',{staticClass:\"row pr-xl-3 part-catalogue-details__item-row\"},[_c('div',{ref:\"detailItemList\",staticClass:\"col-12 col-xl-6 p-xl-0 order-last order-xl-first part-catalogue-details__item-list\",style:(_vm.itemDetailsListStyle)},[(_vm.isDetailsLoading)?[_c('div',{staticClass:\"col-12 d-flex justify-content-center align-items-center h-100\"},[_c('LoadingIndicator')],1)]:_vm._e(),(!_vm.isDetailsLoading)?[_c('div',{staticClass:\"row no-gutters\"},[_c('b-list-group',{staticClass:\"col-12\"},_vm._l((_vm.itemDetails),function(itemDetail){return _c('b-list-group-item',{key:itemDetail.part.id,attrs:{\"active\":itemDetail.item.positionInAssembly === _vm.activePosition}},[_c('PartCatalogueDetailsItem',{ref:\"detailItems\",refInFor:true,attrs:{\"itemDetail\":itemDetail,\"representsHotspotIds\":_vm.hotspotDetails[_vm.getHotspotKeyForItemDetail(itemDetail)],\"linkToItem\":(\"/Part?id=\" + (itemDetail.part != null ? itemDetail.part.id : itemDetail.item.partId))}})],1)}),1)],1)]:_vm._e()],2),_c('div',{staticClass:\"col-12 col-xl-6 px-0 order-first order-xl-last part-catalogue-details__graphic\"},[[_c('div',{ref:\"catalogueImage\"},[_c('object',{staticClass:\"w-100 part-catalogue-details__image\",attrs:{\"data\":_vm.drawingImagePath,\"type\":\"image/svg+xml\"},on:{\"load\":_vm.onImageLoaded,\"error\":_vm.onImageLoadedError}},[_vm._m(0)])])]],2)])])]],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100 part-catalogue-details__image d-flex justify-content-center align-items-center h-100 part-catalogue-details__image--not-found\"},[_c('img',{staticClass:\"w-25\",attrs:{\"src\":\"/images/broken-image.svg\",\"alt\":\"\"}})])}]\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nexport const LoadingIndicator = Vue.extend({\r\n functional: true,\r\n name: 'LoadingIndicator',\r\n props: {\r\n classPostfix: String,\r\n },\r\n render(createElement, ctx) {\r\n return (\r\n \r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=LoadingIndicator.jsx.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"\\n col-2 col-xl-1\\n d-flex\\n justify-content-start justify-content-xl-center\\n alignt-items-center\\n h-100\\n order-1\\n \"},[_c('div',[_vm._v(_vm._s(_vm.itemDetail.item.positionInAssembly))])]),_c('div',{staticClass:\"col-10 col-xl-3 p-xl-0 h-100 order-2\"},[(_vm.partExists)?_c('a',{staticClass:\"row\",attrs:{\"href\":_vm.linkToItem}},[_c('div',{staticClass:\"col-12 small\"},[_vm._v(_vm._s(_vm.itemDetail.part.partNumber))]),_c('div',{staticClass:\"col-12\"},[_vm._v(\"\\n \"+_vm._s(_vm.itemDetail.part == null ? _vm.itemDetail.item.description : _vm.itemDetail.part.name)+\"\\n \")])]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_vm._v(\"\\n \"+_vm._s(_vm.itemDetail.item.partNumber)+\"\\n \")])])]),_c('div',{staticClass:\"col-12 col-xl-8 p-xl-0 order-4 order-xl-3\"},[_c('div',{staticClass:\"row part-catalogue-details__item-actions d-flex align-items-center\"},[_c('div',{staticClass:\"col-12 col-xl-6\"},[(_vm.partExists)?_c('Price',{attrs:{\"priceNetCents\":_vm.itemDetail.price && _vm.itemDetail.price.priceNetCents,\"priceGrossCents\":_vm.itemDetail.price && _vm.itemDetail.price.priceGrossCents,\"priceDiscountedNetCents\":_vm.itemDetail.price && _vm.itemDetail.price.priceDiscountedNetCents,\"depositPartPriceNetCents\":_vm.itemDetail.depositPartPrice && _vm.itemDetail.depositPartPrice.priceNetCents,\"depositPartPriceGrossCents\":_vm.itemDetail.depositPartPrice && _vm.itemDetail.depositPartPrice.priceGrossCents,\"depositPartPriceDiscountedNetCents\":_vm.itemDetail.depositPartPrice && _vm.itemDetail.depositPartPrice.priceDiscountedNetCents,\"isHidden\":_vm.itemDetail.price == null || _vm.itemDetail.price.isHidden,\"currencySymbol\":_vm.itemDetail.price && _vm.itemDetail.price.currency.htmlSymbol,\"hasSubunit\":_vm.itemDetail.price && _vm.itemDetail.price.currency.hasSubunit,\"noWrap\":true}}):_vm._e()],1),(_vm.itemDetail.isAvailabilityLoading)?_c('div',{staticClass:\"col-6 col-xl-6 text-right text-xl-left\"},[_c('LoadingIndicator')],1):_c('DeliveryTimeToolTip',{staticClass:\"col-12 col-xl-2 text-right text-xl-left\",attrs:{\"partAvailability\":_vm.itemDetail.availability}},[_c('div',{style:({\n color:\n _vm.itemDetail.availability && _vm.itemDetail.availability.color\n ? _vm.itemDetail.availability.color\n : '',\n })},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localizeWithFallbackKey\")(_vm.l10n.AVAILABILITY.For(_vm.itemDetail.availability && _vm.itemDetail.availability.code),_vm.l10n.AVAILABILITY.UNKNOWN))+\"\\n \")])]),_c('div',{staticClass:\"col-auto ml-auto\"},[(_vm.partExists)?_c('ShoppingCartActions',{attrs:{\"fullPartId\":_vm.itemDetail.part && _vm.itemDetail.part.id,\"partNumber\":_vm.itemDetail.part && _vm.itemDetail.part.partNumber,\"unitCode\":_vm.itemDetail.part && _vm.itemDetail.part.unitCode,\"showHorizontal\":true,\"positionAbsolute\":false,\"defaultQuantity\":_vm.getDefaultQuantity,\"maxAllowedQuantity\":_vm.maxQuantityToOrder},on:{\"quantity-changed\":_vm.quantityChanged}}):_vm._e()],1)],1)]),_c('div',{staticClass:\"col-10 col-xl-11 offset-2 offset-xl-1 pl-xl-0 order-3 order-xl-4\"},[_c('PartCatalogueDetailsItemMeta',{attrs:{\"item\":_vm.itemDetail.item}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\r\nimport * as l10n from '@/constants/l10n';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\nimport { localize } from '@/filters/localize';\r\nexport const PartCatalogueDetailsItemMeta = Vue.extend({\r\n functional: true,\r\n name: 'PartCatalogueDetailsItemMeta',\r\n props: {\r\n item: Object,\r\n },\r\n render(createElement, ctx) {\r\n const item = ctx.props.item;\r\n const metaItemsToRender = metaItemsFromItem(item).filter((metaItem) => !isNullOrWhitespace(metaItem.text));\r\n return (
      \r\n {metaItemsToRender.map((metaItem) => (
    • \r\n {' '}\r\n {metaItem.labelKey == null ? '' : `${localize(metaItem.labelKey)}:`} {metaItem.text}{' '}\r\n
    • ))}\r\n
    );\r\n },\r\n});\r\nfunction metaItemsFromItem(item) {\r\n return [\r\n {\r\n text: item.note,\r\n },\r\n {\r\n labelKey: l10n.PART_CATALOGUE.META.ASSEMBLY_NUMBER_FROM,\r\n text: item.assemblyNumbersRange,\r\n },\r\n {\r\n labelKey: l10n.PART_CATALOGUE.META.ENGINE_NUMBER_FROM,\r\n text: item.engineNumbersRange,\r\n },\r\n ];\r\n}\r\n//# sourceMappingURL=PartCatalogueDetailsItemMeta.jsx.map","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Mixins } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartCatalogueAssemblyItemDetail } from '@/entities/part-catalogue/PartCatalogueAssemblyItemDetail';\r\nimport { PartCatalogueDetailsItemMeta } from '@/components/part-catalogue/PartCatalogueDetailsItemMeta';\r\nimport Price from '@/components/price/Price.vue';\r\nimport ShoppingCartActions from '@/components/shopping-cart/ShoppingCartActions.vue';\r\nimport { localize } from '@/filters/localize';\r\nimport { localizeWithFallbackKey } from '@/filters/localizeWithFallbackKey';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator.tsx';\r\nimport DeliveryTimeToolTip from '@/components/delivery-time-tooltip/DeliveryTimeToolTip.vue';\r\nimport _, { partition } from 'lodash';\r\nimport { PartService } from '@/services/part-service';\r\n\r\n@Component({\r\n components: {\r\n Price,\r\n ShoppingCartActions,\r\n PartCatalogueDetailsItemMeta,\r\n DeliveryTimeToolTip,\r\n LoadingIndicator,\r\n },\r\n})\r\nexport default class PartCatalogueSelector extends Mixins(BaseMixin) {\r\n private readonly partService: PartService = new PartService();\r\n\r\n @Prop({ type: Object, required: true })\r\n private readonly itemDetail!: PartCatalogueAssemblyItemDetail;\r\n\r\n @Prop()\r\n private readonly representsHotspotIds!: string[];\r\n\r\n @Prop()\r\n private readonly linkToItem!: string;\r\n\r\n private reloadAvailabilityDebounced: (quantity: number) => void;\r\n\r\n constructor() {\r\n super();\r\n this.reloadAvailabilityDebounced = _.debounce(this.reloadAvailability, 500);\r\n }\r\n\r\n public get positionInAssembly(): string {\r\n return this.itemDetail.item.positionInAssembly;\r\n }\r\n\r\n public get maxQuantityToOrder(): number | undefined {\r\n if (!this.itemDetail.isUsedPart) {\r\n return undefined;\r\n }\r\n\r\n return this.itemDetail.availability.stockInfos\r\n .map((info) => info.quantity)\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n }\r\n\r\n public get getDefaultQuantity(): number {\r\n const quantity = this.itemDetail.item && Number(this.itemDetail.item.quantity);\r\n if (this.maxQuantityToOrder === undefined) {\r\n return quantity;\r\n }\r\n return quantity <= this.maxQuantityToOrder ? quantity : this.maxQuantityToOrder;\r\n }\r\n\r\n public representsHotspot(hotspotId: string): boolean {\r\n return this.representsHotspotIds.includes(hotspotId);\r\n }\r\n\r\n private get availability(): string | undefined {\r\n if (this.itemDetail.availability == null) {\r\n return localize(this.l10n.AVAILABILITY.NOT_IN_STOCK);\r\n }\r\n return localizeWithFallbackKey(\r\n this.l10n.AVAILABILITY.For(this.itemDetail.availability.code),\r\n this.l10n.AVAILABILITY.UNKNOWN\r\n );\r\n }\r\n\r\n private get partExists(): boolean {\r\n return this.itemDetail.price != null && this.itemDetail.availability != null && this.itemDetail.part != null;\r\n }\r\n\r\n private quantityChanged(quantity: number): void {\r\n this.reloadAvailabilityDebounced(quantity);\r\n }\r\n\r\n private reloadAvailability(quantity: number): void {\r\n const partId = this.itemDetail.part.id;\r\n this.itemDetail.isAvailabilityLoading = true;\r\n this.partService.getAvailabilityOfPart(partId, quantity).then((availability) => {\r\n if (availability) {\r\n this.itemDetail.availability = availability;\r\n }\r\n this.itemDetail.isAvailabilityLoading = false;\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueDetailsItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueDetailsItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartCatalogueDetailsItem.vue?vue&type=template&id=6b195c70&\"\nimport script from \"./PartCatalogueDetailsItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartCatalogueDetailsItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nexport const LeftArrowIcon = Vue.extend({\r\n functional: true,\r\n name: 'LeftArrowIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=LeftArrowIcon.jsx.map","import Vue from 'vue';\r\nexport const RightArrowIcon = Vue.extend({\r\n functional: true,\r\n name: 'RightArrowIcon',\r\n render(createElement, ctx) {\r\n return (\r\n \r\n );\r\n },\r\n});\r\n//# sourceMappingURL=RightArrowIcon.jsx.map","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport Vue from 'vue';\r\nimport { Component, Mixins, Prop, Ref, Watch } from 'vue-property-decorator';\r\nimport { LoadingIndicator } from '@/components/loading-indicator/LoadingIndicator';\r\nimport { PartCatalogueAssemblyItemDetail } from '@/entities/part-catalogue/PartCatalogueAssemblyItemDetail';\r\nimport { PartCatalogueService } from '@/services/part-catalogue-service';\r\nimport PartCatalogueDetailsItem from '@/components/part-catalogue/PartCatalogueDetailsItem.vue';\r\nimport { LeftArrowIcon } from '@/components/icons/LeftArrowIcon';\r\nimport { RightArrowIcon } from '@/components/icons/RightArrowIcon';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\n\r\n@Component({\r\n components: {\r\n LoadingIndicator,\r\n PartCatalogueDetailsItem,\r\n LeftArrowIcon,\r\n RightArrowIcon,\r\n },\r\n})\r\nexport default class PartCatalogueAssembly extends Mixins(BaseMixin) {\r\n @Prop()\r\n private readonly id!: string;\r\n\r\n @Prop()\r\n private readonly parentGroupId!: string;\r\n\r\n @Prop()\r\n private readonly previousAssemblyId!: string;\r\n\r\n @Prop()\r\n private readonly nextAssemblyId!: string;\r\n\r\n @Prop({ default: null, required: false })\r\n private readonly preSelectedPartId!: string | null;\r\n\r\n @Ref('catalogueImage')\r\n private readonly catalogueImage!: HTMLElement;\r\n\r\n @Ref('detailItemList')\r\n private readonly detailItemList!: HTMLElement;\r\n\r\n @Ref('detailItems')\r\n private readonly itemDetailsRef!: PartCatalogueDetailsItem[];\r\n\r\n private readonly partCatalogueService: PartCatalogueService = new PartCatalogueService();\r\n\r\n private isLoading: boolean = true;\r\n private hasLoadedImage: boolean = false;\r\n\r\n private isDetailsLoading: boolean = true;\r\n\r\n private catalogueImageHeight: number = 0;\r\n private catalogueImageHeightMonitor: MutationObserver | null = null;\r\n\r\n private itemDetails: PartCatalogueAssemblyItemDetail[] = [];\r\n private hotspotDetails: { [key: string]: string[] } = {};\r\n\r\n private activePosition: string = '';\r\n\r\n private get drawingImagePath(): string {\r\n return this.partCatalogueService.getDrawingUrl(this.id);\r\n }\r\n\r\n private get itemDetailsListStyle(): { height: string } {\r\n return {\r\n height: this.isXlMedia ? `${this.catalogueImageHeight}px` : '100%',\r\n };\r\n }\r\n\r\n private isPositionActive(pos: number): boolean {\r\n return true;\r\n }\r\n\r\n private async loadItemDetails(): Promise {\r\n this.itemDetails = await this.partCatalogueService.getItemsOfEntry(this.id);\r\n const itemDetailsGrouped: { [key: string]: PartCatalogueAssemblyItemDetail[] } = {};\r\n\r\n this.itemDetails.forEach((detail) => {\r\n const key = this.getHotspotKeyForItemDetail(detail);\r\n\r\n if (!itemDetailsGrouped[key]) {\r\n itemDetailsGrouped[key] = [];\r\n }\r\n\r\n itemDetailsGrouped[key].push(detail);\r\n });\r\n\r\n Object.entries(itemDetailsGrouped).forEach(([key, items]) => {\r\n this.hotspotDetails[key] = items.map((item) => item.item.assemblyItemId);\r\n });\r\n\r\n this.itemDetails = Object.entries(itemDetailsGrouped).map(([_, items]) => items[0]);\r\n this.isDetailsLoading = false;\r\n }\r\n\r\n private getHotspotKeyForItemDetail(detail: PartCatalogueAssemblyItemDetail): string {\r\n return `${detail.item.positionInAssembly}:${detail.part.id}`;\r\n }\r\n\r\n private urlForPartCatalogue(id: string): string {\r\n return `/PartCatalogue/${id}`;\r\n }\r\n\r\n private urlForPartCatalogueAssembly(id: string): string {\r\n return `/PartCatalogue/Assembly/${id}`;\r\n }\r\n\r\n private async created(): Promise {\r\n await this.loadItemDetails();\r\n this.preSelectItem();\r\n }\r\n\r\n private mounted(): void {\r\n this.$nextTick(() => {\r\n this.monitorCatalogueImageHeight();\r\n });\r\n }\r\n\r\n private destroyed(): void {\r\n if (this.catalogueImageHeightMonitor != null) {\r\n this.catalogueImageHeightMonitor.disconnect();\r\n }\r\n window.removeEventListener('resize', this.updateCatalogueImageHeight);\r\n }\r\n\r\n private onImageLoaded(event: Event): void {\r\n this.transformDrawing(event);\r\n }\r\n\r\n private onImageLoadedError(): void {\r\n this.isLoading = false;\r\n this.hasLoadedImage = false;\r\n }\r\n\r\n private transformDrawing(event: Event): void {\r\n const htmlObject = event.target as HTMLObjectElement;\r\n\r\n if (!htmlObject.contentDocument) {\r\n return;\r\n }\r\n\r\n const svg = htmlObject.contentDocument.getElementById('svgRoot');\r\n\r\n if (svg) {\r\n [...svg.querySelectorAll('.pcg_hotspot')].forEach((e) => {\r\n const element = e as HTMLElement;\r\n element.style.cursor = 'pointer';\r\n element.style.opacity = '0';\r\n const id = e.id.substring(2);\r\n e.addEventListener('click', (_) => this.onHotspotClicked(id));\r\n });\r\n\r\n this.isLoading = false;\r\n this.hasLoadedImage = true;\r\n }\r\n }\r\n\r\n private monitorCatalogueImageHeight(): void {\r\n this.catalogueImageHeightMonitor = new MutationObserver(this.updateCatalogueImageHeight);\r\n this.catalogueImageHeightMonitor.observe(this.$el, {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n window.addEventListener('resize', this.updateCatalogueImageHeight);\r\n }\r\n\r\n private updateCatalogueImageHeight(): void {\r\n const clientHeight = this.catalogueImage && this.catalogueImage.clientHeight;\r\n if (clientHeight != null && clientHeight !== this.catalogueImageHeight) {\r\n // -5 is a workaround\r\n this.catalogueImageHeight = clientHeight - 5;\r\n }\r\n }\r\n\r\n private onHotspotClicked(hotspotId: string): void {\r\n const detailItem = this.itemDetailsRef.find((item) => item.representsHotspot(hotspotId));\r\n\r\n if (detailItem == null) {\r\n return;\r\n }\r\n\r\n this.activePosition = detailItem.positionInAssembly;\r\n\r\n this.$scrollTo(detailItem.$el, {\r\n container: this.isXlMedia ? this.detailItemList : 'body',\r\n force: true,\r\n offset: -13,\r\n });\r\n }\r\n\r\n private preSelectItem(): void {\r\n if (isNullOrWhitespace(this.preSelectedPartId)) {\r\n return;\r\n }\r\n\r\n const itemDetailToSelect = this.itemDetails.find((item) => item.part.id === this.preSelectedPartId);\r\n\r\n if (itemDetailToSelect == null) {\r\n return;\r\n }\r\n\r\n this.onHotspotClicked(itemDetailToSelect.item.assemblyItemId);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueAssembly.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueAssembly.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartCatalogueAssembly.vue?vue&type=template&id=98cc8bc2&\"\nimport script from \"./PartCatalogueAssembly.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartCatalogueAssembly.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100 h-100\"},[_c('PartCatalogueLandingPageBreadcrumb',{attrs:{\"initialBreadCrumb\":_vm.breadCrumb,\"tree\":_vm.tree,\"currentId\":_vm.currentId,\"pageBaseUrl\":_vm.pageBaseUrl}}),_c('div',{staticClass:\"container-fluid pl-xl-0 pr-xl-0 pb-3 content\"},[_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"content__heading\"},[_c('h1',[_vm._v(_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_CATALOGUE.TITLE_TEXT)))])]),(_vm.hasPreviousId)?_c('div',[_c('a',{staticClass:\"part-catalogue-landing-page__back-button\",on:{\"click\":function($event){return _vm.onPartCatalogueItemClicked(_vm.previousId)}}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"localize\")(_vm.l10n.PART_CATALOGUE.BACK_BUTTON_TEXT))+\"\\n \")])]):_vm._e()])]),_c('div',{staticClass:\"part-catalogue-landing-page\"},[(!_vm.showDiagramPage)?_c('div',{staticClass:\"row\"},[(_vm.showNavigationBar)?_c('div',{staticClass:\"col-12 col-md-3\"},[_c('div',{staticClass:\"part-catalogue-landing-page__navigation-bar\"},[_c('div',{staticClass:\"part-catalogue-landing-page__navigation-bar__image\"},[_c('img',{attrs:{\"src\":_vm.getThumbnailImageUrl(_vm.currentTree.id, _vm.currentTree.type),\"alt\":\"group-image\"}})]),_c('div',{staticClass:\"part-catalogue-landing-page__navigation-bar__headline\"},[_vm._v(\"\\n \"+_vm._s(_vm.currentTree.name)+\"\\n \")]),_c('div',_vm._l((_vm.currentTree.children),function(item){return _c('div',{key:item.id,staticClass:\"part-catalogue-landing-page__navigation-bar__item part-catalogue-landing-page__link\",on:{\"click\":function($event){return _vm.onPartCatalogueItemClicked(item.treeId)}}},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])}),0)])]):_vm._e(),_c('div',{staticClass:\"col-12\",class:{ 'col-md-9': _vm.showNavigationBar }},[_c('div',{staticClass:\"row\"},_vm._l((_vm.currentTree.children),function(item){return _c('div',{key:item.treeId,staticClass:\"col-12 col-sm-6 col-md-4 col-lg-3\"},[_c('a',{staticClass:\"part-catalogue-landing-page__link\",on:{\"click\":function($event){return _vm.onPartCatalogueItemClicked(item.treeId)}}},[_c('div',{staticClass:\"part-catalogue-landing-page__item\"},[_c('div',{staticClass:\"part-catalogue-landing-page__item__image\"},[_c('img',{attrs:{\"src\":_vm.getThumbnailImageUrl(item.id, item.type),\"alt\":\"group-image\"}})]),_c('div',{staticClass:\"part-catalogue-landing-page__item__name\"},[_vm._v(\"\\n \"+_vm._s(item.name)+\"\\n \")])])])])}),0)])]):_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 col-md-3\"},[_c('div',{staticClass:\"part-catalogue-landing-page__navigation-bar\"},[_c('div',{staticClass:\"part-catalogue-landing-page__navigation-bar__image\"},[_c('img',{attrs:{\"src\":_vm.getThumbnailImageUrl(_vm.currentTree.id, _vm.currentTree.type),\"alt\":\"project-image\"}})]),_c('div',{staticClass:\"part-catalogue-landing-page__navigation-bar__headline\"},[_vm._v(\"\\n \"+_vm._s(_vm.currentTree.name)+\"\\n \")]),_c('div',_vm._l((_vm.currentTree.children),function(assembly){return _c('a',{key:assembly.id,staticClass:\"part-catalogue-landing-page__navigation-bar__item part-catalogue-landing-page__link d-block\",attrs:{\"href\":_vm.assemblyUrl(assembly.id)}},[_vm._v(\"\\n \"+_vm._s(assembly.name)+\"\\n \")])}),0)])]),_c('div',{staticClass:\"col-12 col-md-9\"},[_c('div',{staticClass:\"row\"},_vm._l((_vm.currentTree.children),function(diagram){return _c('div',{key:diagram.id,staticClass:\"col-12 col-sm-6 col-lg-4 col-xl-3 d-flex justify-content-center\"},[_c('a',{staticClass:\"part-catalogue-landing-page__link\",attrs:{\"href\":_vm.assemblyUrl(diagram.id)}},[_c('div',{staticClass:\"part-catalogue-landing-page__item\"},[_c('div',{staticClass:\"part-catalogue-landing-page__item__image\"},[_c('img',{attrs:{\"src\":_vm.assemblyThumbnailUrl(diagram.id),\"alt\":\"assembly-image\"}})]),_c('div',{staticClass:\"part-catalogue-landing-page__item__name\"},[_vm._v(\"\\n \"+_vm._s(diagram.name)+\"\\n \")])])])])}),0)])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Breadcrumb',{attrs:{\"data\":_vm.breadCrumb}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\r\nimport { BreadcrumbData, BreadcrumbItem } from '@/entities/breadcrumb/Breadcrumb';\r\nimport { PartCatalogueTree } from '@/entities/part-catalogue/PartCatalogueTree';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { PartCatalogueService } from '@/services/part-catalogue-service';\r\nimport Vue from 'vue';\r\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\r\nimport Breadcrumb from './Breadcrumb.vue';\r\n\r\n@Component({\r\n components: { Breadcrumb },\r\n})\r\nexport default class PartCatalogueLandingPageBreadcrumb extends Mixins(BaseMixin) {\r\n private readonly partCatalogueService: PartCatalogueService = new PartCatalogueService();\r\n\r\n @Prop()\r\n private readonly initialBreadCrumb!: BreadcrumbData;\r\n\r\n @Prop()\r\n private readonly tree!: PartCatalogueTree;\r\n\r\n @Prop()\r\n private readonly currentId!: string;\r\n\r\n @Prop()\r\n private readonly pageBaseUrl!: string;\r\n\r\n private get breadCrumb(): BreadcrumbData {\r\n if (this.currentId) {\r\n let treeNode = this.partCatalogueService.getTreeNodeById(this.tree, this.currentId);\r\n\r\n if (treeNode) {\r\n const currentBreadCrumb: BreadcrumbData = {\r\n items: [],\r\n currentPage: '',\r\n };\r\n\r\n currentBreadCrumb.items.push(...this.initialBreadCrumb.items);\r\n currentBreadCrumb.items.push({\r\n displayName: this.initialBreadCrumb.currentPage,\r\n url: `${this.pageBaseUrl}/PartCatalogue`,\r\n });\r\n\r\n currentBreadCrumb.currentPage = treeNode.name;\r\n\r\n const partCatalougeBreadcrumbItems: BreadcrumbItem[] = [];\r\n\r\n while (treeNode && treeNode.parentTreeId) {\r\n treeNode = this.partCatalogueService.getTreeNodeById(this.tree, treeNode.parentTreeId);\r\n\r\n if (treeNode && treeNode.name !== '') {\r\n partCatalougeBreadcrumbItems.push({\r\n displayName: treeNode.name,\r\n url: `${this.pageBaseUrl}/PartCatalogue/${treeNode.treeId}`,\r\n });\r\n }\r\n }\r\n\r\n currentBreadCrumb.items.push(...partCatalougeBreadcrumbItems.reverse());\r\n\r\n return currentBreadCrumb;\r\n }\r\n }\r\n\r\n return this.initialBreadCrumb;\r\n }\r\n}\r\n","export enum PartCatalogueTreeNodeType {\r\n None = 'None',\r\n Brand = 'Brand',\r\n ModelGroup = 'ModelGroup',\r\n Model = 'Model',\r\n Diagram = 'Diagram',\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueLandingPageBreadcrumb.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueLandingPageBreadcrumb.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartCatalogueLandingPageBreadcrumb.vue?vue&type=template&id=2b2fdf0c&\"\nimport script from \"./PartCatalogueLandingPageBreadcrumb.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartCatalogueLandingPageBreadcrumb.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\r\nimport { PartCatalogueTree } from '@/entities/part-catalogue/PartCatalogueTree';\r\nimport { BreadcrumbData } from '@/entities/breadcrumb/Breadcrumb';\r\nimport PartCatalogueLandingPageBreadcrumb from '../breadcrumb/PartCatalogueLandingPageBreadcrumb.vue';\r\nimport { PartCatalogueService } from '@/services/part-catalogue-service';\r\nimport { PartCatalogueTreeNodeType } from '@/entities/part-catalogue/PartCatalogueTreeNodeType';\r\nimport { isNullOrWhitespace } from '@/helper/isNullOrWhitespace';\r\n\r\n@Component({\r\n components: {\r\n PartCatalogueLandingPageBreadcrumb,\r\n },\r\n})\r\nexport default class PartCatalogueLandingPage extends Mixins(BaseMixin) {\r\n private readonly partCatalogueService: PartCatalogueService = new PartCatalogueService();\r\n\r\n @Prop()\r\n private readonly tree!: PartCatalogueTree;\r\n\r\n @Prop()\r\n private readonly breadCrumb!: BreadcrumbData;\r\n\r\n @Prop()\r\n private currentId!: string;\r\n\r\n private get currentTree(): PartCatalogueTree {\r\n if (this.currentId) {\r\n const currentTree = this.partCatalogueService.getTreeNodeById(this.tree, this.currentId);\r\n return currentTree ? currentTree : this.tree;\r\n }\r\n\r\n return this.tree;\r\n }\r\n\r\n private get showDiagramPage(): boolean {\r\n return this.currentTree.children.every((node) => node.type === PartCatalogueTreeNodeType.Diagram);\r\n }\r\n\r\n private get pageBaseUrl(): string {\r\n return this.breadCrumb.items[0] ? this.breadCrumb.items[0].url : '';\r\n }\r\n\r\n private get showNavigationBar(): boolean {\r\n return (\r\n this.currentTree.type === PartCatalogueTreeNodeType.ModelGroup ||\r\n this.currentTree.type === PartCatalogueTreeNodeType.Model\r\n );\r\n }\r\n\r\n private get previousId(): string | null {\r\n return this.currentTree.parentTreeId;\r\n }\r\n\r\n private get hasPreviousId(): boolean {\r\n return !isNullOrWhitespace(this.previousId);\r\n }\r\n\r\n private getThumbnailImageUrl(id: string, type: PartCatalogueTreeNodeType): string {\r\n switch (type) {\r\n case PartCatalogueTreeNodeType.Brand:\r\n return this.partCatalogueService.getGroupThumbnailUrl(id);\r\n case PartCatalogueTreeNodeType.ModelGroup:\r\n return this.partCatalogueService.getGroupThumbnailUrl(id);\r\n case PartCatalogueTreeNodeType.Model:\r\n return this.partCatalogueService.getProjectThumbnailUrl(id);\r\n case PartCatalogueTreeNodeType.Diagram:\r\n return this.partCatalogueService.getAssemblyThumbnailInLowQualityUrl(id);\r\n default:\r\n return this.partCatalogueService.getGroupThumbnailUrl('-1');\r\n }\r\n }\r\n\r\n private assemblyThumbnailUrl(id: string): string {\r\n return this.partCatalogueService.getAssemblyThumbnailInLowQualityUrl(id);\r\n }\r\n\r\n private assemblyUrl(id: string): string {\r\n return `/PartCatalogue/Assembly/${id}`;\r\n }\r\n\r\n private onPartCatalogueItemClicked(groupId: string): void {\r\n this.currentId = groupId;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueLandingPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PartCatalogueLandingPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartCatalogueLandingPage.vue?vue&type=template&id=3648e788&\"\nimport script from \"./PartCatalogueLandingPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartCatalogueLandingPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-dropdown',{staticClass:\"currency-select-box__dropdown\",attrs:{\"variant\":\"transparent\",\"right\":\"\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_vm._v(_vm._s(_vm.currentCurrency.currencyCode)+\" (\"),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.currentCurrency.htmlSymbol)}}),_vm._v(\")\")]},proxy:true}])},[_vm._l((_vm.selectionItems),function(item){return [_c('b-dropdown-item',{attrs:{\"disabled\":item.currencyCode === _vm.currentCode,\"href\":item.changeToThisCurrencyUrl}},[_vm._v(\"\\n \"+_vm._s(item.currencyCode)+\" (\"),_c('span',{domProps:{\"innerHTML\":_vm._s(item.htmlSymbol)}}),_vm._v(\")\\n \")])]})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Mixins, Prop } from 'vue-property-decorator';\r\nimport BaseMixin from '@/mixins/BaseMixin';\r\nimport { CurrencySelectBoxItem } from '@/entities/multi-currency/CurrencySelectBoxItem';\r\n\r\n@Component\r\nexport default class CurrencySelectBox extends Mixins(BaseMixin) {\r\n @Prop()\r\n private readonly selectionItems!: CurrencySelectBoxItem[];\r\n\r\n @Prop()\r\n private currentCode!: string;\r\n\r\n public get currentCurrency(): CurrencySelectBoxItem | undefined {\r\n return this.selectionItems.find((item) => item.currencyCode === this.currentCode);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CurrencySelectBox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CurrencySelectBox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CurrencySelectBox.vue?vue&type=template&id=5aa3b673&\"\nimport script from \"./CurrencySelectBox.vue?vue&type=script&lang=ts&\"\nexport * from \"./CurrencySelectBox.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\r\nimport VueMq from 'vue-mq';\r\nimport BootstrapVue from 'bootstrap-vue';\r\nimport vSelect from 'vue-select';\r\nimport Router from 'vue-router';\r\nimport VueScrollTo from 'vue-scrollto';\r\nimport './class-component-hooks';\r\nimport store from './store';\r\nimport './filters';\r\nimport Slideshow from './components/slideshow/Slideshow.vue';\r\nimport SlideshowItem from './components/slideshow/SlideshowItem.vue';\r\nimport PartTeaser from './components/part-teaser/PartTeaser.vue';\r\nimport QuickSearch from './components/quick-search/QuickSearch.vue';\r\nimport QuickSearchResult from './components/quick-search/QuickSearchResult.vue';\r\nimport VinSearchResult from './components/vin-search/VinSearchResult.vue';\r\nimport RelatedPartsContainer from './components/part-details/RelatedPartsContainer.vue';\r\nimport PartDetailsActions from './components/part-details/PartDetailsActions.vue';\r\nimport ShoppingCartActions from './components/shopping-cart/ShoppingCartActions.vue';\r\nimport ShoppingCartOverview from './components/shopping-cart/ShoppingCartOverview.vue';\r\nimport ShoppingCartUpload from './components/shopping-cart/upload/ShoppingCartUpload.vue';\r\nimport ShoppingCartMenu from './components/shopping-cart/menu/ShoppingCartMenu.vue';\r\nimport ShoppingCartItemActions from './components/shopping-cart/ShoppingCartItemActions.vue';\r\nimport Navigation from './components/navigation/Navigation.vue';\r\nimport AvailabilityClock from './components/availability-clock/AvailabilityClock.vue';\r\nimport NavigationItem from './components/navigation/NavigationItem.vue';\r\nimport CountryStateSelect from './components/country-state-select/CountryStateSelect.vue';\r\nimport ShoppingCartItemUserInfoText from './components/shopping-cart/ShoppingCartItemUserInfoText.vue';\r\nimport DynamicVisibilityContainer from './components/dynamic-visibility-container/DynamicVisibilityContainer.vue';\r\nimport DynamicVisibilityForValuesContainer from './components/dynamic-visibility-container/DynamicVisibilityForValuesContainer.vue';\r\nimport OrderList from './components/orders/OrderList.vue';\r\nimport PartSearch from './components/part-search/PartSearch.vue';\r\nimport CatalogueSearch from './components/catalogue-search/CatalogueSearch.vue';\r\nimport CookieDisclaimer from './components/cookie-disclaimer/CookieDisclaimer.vue';\r\nimport DepositPartInfoToolTip from './components/deposit-part-info-tooltip/DepositPartInfoToolTip.vue';\r\nimport { ShoppingCartModuleTypes } from './store/modules/shopping-cart';\r\nimport { MoreIcon } from '@/components/icons/MoreIcon';\r\nimport { LessIcon } from '@/components/icons/LessIcon';\r\nimport Breadcrumb from './components/breadcrumb/Breadcrumb.vue';\r\nimport GoogleMarkupData from './components/breadcrumb/GoogleMarkupData.vue';\r\nimport RandomPartsList from './components/car/RandomPartsList.vue';\r\nimport AvailablePartsList from './components/car/AvailablePartsList.vue';\r\nimport BrandPartsSearchBox from './components/brand-landing-page/BrandPartsSearchBox.vue';\r\nimport PartCatalogueAssembly from './components/part-catalogue/PartCatalogueAssembly.vue';\r\nimport PartCatalogueLandingPage from './components/part-catalogue/PartCatalogueLandingPage.vue';\r\nimport CurrencySelectBox from './components/multi-currency/CurrencySelectBox.vue';\r\n\r\n// activate devtools support if dev mode is active\r\nVue.config.devtools = process.env.VUE_APP_MODE === 'dev';\r\n\r\n// Setup vue-mq which enables easy detection of breakpoints by using the css variables defined by bootstrap\r\nVue.use(VueMq, {\r\n breakpoints: {\r\n xs: parseInt(\r\n getComputedStyle(document.body)\r\n .getPropertyValue('--breakpoint-sm')\r\n .replace('px', ''),\r\n 10\r\n ),\r\n sm: parseInt(\r\n getComputedStyle(document.body)\r\n .getPropertyValue('--breakpoint-md')\r\n .replace('px', ''),\r\n 10\r\n ),\r\n md: parseInt(\r\n getComputedStyle(document.body)\r\n .getPropertyValue('--breakpoint-lg')\r\n .replace('px', ''),\r\n 10\r\n ),\r\n lg: parseInt(\r\n getComputedStyle(document.body)\r\n .getPropertyValue('--breakpoint-xl')\r\n .replace('px', ''),\r\n 10\r\n ),\r\n xl: Infinity,\r\n },\r\n});\r\n\r\n// Programmatic Scrolling\r\nVue.use(VueScrollTo);\r\n\r\n// Bootstrap components for vue\r\nVue.use(BootstrapVue);\r\n\r\n// select for vue\r\nVue.component('v-select', vSelect);\r\n\r\nVue.config.productionTip = false;\r\n\r\nmountIfDOMElementExists(\r\n '#header',\r\n () =>\r\n new Vue({\r\n template: '#header-template',\r\n store,\r\n components: {\r\n Navigation,\r\n NavigationItem,\r\n QuickSearch,\r\n ShoppingCartMenu,\r\n AvailabilityClock,\r\n CurrencySelectBox,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#slideshow',\r\n () =>\r\n new Vue({\r\n template: '#slideshow-template',\r\n components: {\r\n Slideshow,\r\n SlideshowItem,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#vin-search-result',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#vin-search-result-template',\r\n components: {\r\n VinSearchResult,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#quick-search-result',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#quick-search-result-template',\r\n components: {\r\n QuickSearchResult,\r\n ShoppingCartActions,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#teaser-container',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#teaser-container-template',\r\n components: {\r\n PartTeaser,\r\n ShoppingCartActions,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#content-section-container',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#content-section-container-template',\r\n components: {\r\n PartTeaser,\r\n ShoppingCartActions,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#related-parts-container',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#related-parts-container-template',\r\n components: {\r\n RelatedPartsContainer,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#part-details-actions',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#part-details-actions-template',\r\n components: {\r\n PartDetailsActions,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#register-form',\r\n () =>\r\n new Vue({\r\n template: '#register-form-template',\r\n store,\r\n components: {\r\n CountryStateSelect,\r\n DynamicVisibilityForValuesContainer,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#address-settings-form',\r\n () =>\r\n new Vue({\r\n template: '#address-settings-form-template',\r\n store,\r\n components: {\r\n CountryStateSelect,\r\n DynamicVisibilityContainer,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#password-settings-form',\r\n () =>\r\n new Vue({\r\n template: '#password-settings-form-template',\r\n store,\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#shopping-cart-overview',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#shopping-cart-overview-template',\r\n components: {\r\n ShoppingCartOverview,\r\n ShoppingCartItemActions,\r\n ShoppingCartItemUserInfoText,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#order-personal-data-form',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#order-personal-data-form-template',\r\n components: {\r\n DynamicVisibilityForValuesContainer,\r\n DynamicVisibilityContainer,\r\n CountryStateSelect,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#orders-list',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#orders-list-template',\r\n components: {\r\n OrderList,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#cookie-disclaimer',\r\n () =>\r\n new Vue({\r\n template: '#cookie-disclaimer-template',\r\n components: {\r\n CookieDisclaimer,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#part-catalogue-search',\r\n () =>\r\n new Vue({\r\n template: '#part-catalogue-search-template',\r\n store,\r\n components: {\r\n CatalogueSearch,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#part-search',\r\n () =>\r\n new Vue({\r\n template: '#part-search-template',\r\n store,\r\n components: {\r\n PartSearch,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#part-categories-overview',\r\n () =>\r\n new Vue({\r\n template: '#part-categories-overview-template',\r\n store,\r\n components: {\r\n MoreIcon,\r\n LessIcon,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#shopping-cart-upload',\r\n () =>\r\n new Vue({\r\n template: '#shopping-cart-upload-template',\r\n store,\r\n components: {\r\n ShoppingCartUpload,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#deposit-part-info-tooltip',\r\n () =>\r\n new Vue({\r\n template: '#deposit-part-info-tooltip-template',\r\n store,\r\n components: {\r\n DepositPartInfoToolTip,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#breadcrumb',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#breadcrumb-template',\r\n components: {\r\n Breadcrumb,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#google-breadcrumb-markup-data',\r\n () =>\r\n new Vue({\r\n store,\r\n template: '#google-breadcrumb-markup-data-template',\r\n components: {\r\n GoogleMarkupData,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#random-parts-list',\r\n () =>\r\n new Vue({\r\n template: '#random-parts-list-template',\r\n store,\r\n components: {\r\n RandomPartsList,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#available-parts-list',\r\n () =>\r\n new Vue({\r\n template: '#available-parts-list-template',\r\n store,\r\n components: {\r\n AvailablePartsList,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#brand-parts-search-box',\r\n () =>\r\n new Vue({\r\n template: '#brand-parts-search-box-template',\r\n store,\r\n components: {\r\n BrandPartsSearchBox,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#part-catalogue-assembly',\r\n () =>\r\n new Vue({\r\n template: '#part-catalogue-assembly-template',\r\n store,\r\n components: {\r\n PartCatalogueAssembly,\r\n },\r\n })\r\n);\r\n\r\nmountIfDOMElementExists(\r\n '#part-catalogue-landing-page',\r\n () =>\r\n new Vue({\r\n template: '#part-catalogue-landing-page-template',\r\n store,\r\n components: {\r\n PartCatalogueLandingPage,\r\n },\r\n })\r\n);\r\n\r\nstore.dispatch(ShoppingCartModuleTypes.actions.loadShoppingCarts);\r\n\r\n/**\r\n * Create a Vue instance with the given function if an element with the given id exists in the DOM.\r\n * @param id of the DOM element in the format: #element-id\r\n * @param createInstance function that is used to create the instance that should be mounted\r\n */\r\nfunction mountIfDOMElementExists(id: string, createInstance: () => Vue): void {\r\n if (window.document.querySelector(id)) {\r\n createInstance().$mount(id);\r\n }\r\n}\r\n"],"sourceRoot":""}