{"version":3,"file":"5262.js?id=6f178a1be0e74892","mappings":"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","sources":["webpack://website-js/./src/components/product-details/DetailsAddonProducts.vue?2694","webpack://website-js/./src/components/product-details/DetailsAddonProducts.vue","webpack://website-js/./src/components/product-details/DetailsAddonProducts.vue?d7c2","webpack://website-js/./src/components/product-details/DetailsAddonProducts.vue?ccba","webpack://website-js/./src/components/product-details/DetailsAddonProducts.vue?699c","webpack://website-js/./src/components/product-details/DetailsAddonProducts.vue?f0bb"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.details-addon-products{padding:15px}.details-addon-products-list{display:flex;flex-direction:column;gap:15px}.details-addon-products-list-item{display:flex;flex:1;gap:15px;align-items:center}.details-addon-products-list-item .image{width:75px;height:75px;flex:none;position:relative;overflow:hidden;border:1px solid #0000001a}.details-addon-products-list-item .image img{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.details-addon-products-list-item .bundle-image{width:150px;display:flex}.details-addon-products-list-item .bundle-image .image{flex:none;width:60px;height:60px}.details-addon-products-list-item .bundle-image .plus{display:flex;align-items:center;justify-content:center;flex:1;font-weight:700}.details-addon-products-list-item .info{flex:1}.details-addon-products-list-item .info .name a{color:inherit}.details-addon-products-list-item .info .price{font-size:1.2rem;font-weight:600}.details-addon-products-list-item .action{flex:none;max-width:150px}.details-addon-products-list-item .action .add-to-cart-button .uk-icon{margin-right:5px}.details-addon-products-list-item .action .colli{display:none}.details-addon-products-list-item .action .out-of-stock-msg{font-weight:600;color:var(--warning-color)}@media(max-width:640px){.details-addon-products-list-item{display:grid;grid-template-columns:auto 1fr auto;gap:0}.details-addon-products-list-item .image{grid-column:1;grid-row:1/3}.details-addon-products-list-item .bundle-image{width:60px;flex-direction:column;grid-column:1;grid-row-start:1;grid-row-end:3}.details-addon-products-list-item .info{padding-left:15px}.details-addon-products-list-item .action{grid-column:2;grid-row:2;padding-left:15px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.translationsReady && _vm.showAddonProducts)?_c('div',{staticClass:\"uk-overflow-auto cbx-border uk-margin-large-top\",class:{ 'details-addon-products' : _vm.showAddonProducts }},[_c('div',{staticClass:\"uk-h3\"},[_vm._v(_vm._s(_vm.title))]),_c('div',{staticClass:\"details-addon-products-list\"},_vm._l((_vm.addonProducts),function(prod){return _c('div',{key:prod.id,staticClass:\"details-addon-products-list-item\"},[(_vm.hasAddonPriceWithDiscount(prod.id))?_c('div',{staticClass:\"bundle-image\"},[_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.productImage,\"alt\":\"\"}})]),(_vm.hasAddonPriceWithDiscount(prod.id))?_c('div',{staticClass:\"plus\"},[_vm._v(\" + \")]):_vm._e(),_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":prod.image,\"alt\":prod.image ? prod.name : null}})])]):_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":prod.image,\"alt\":prod.image ? prod.name : null}})]),_c('div',{staticClass:\"info\"},[(_vm.hasAddonPriceWithDiscount(prod.id))?_c('div',{staticClass:\"price\"},[_vm._v(_vm._s(prod.price.currency)+\" \"+_vm._s(_vm.getPrice(_vm.getAddonPrice(prod.id)))+\", \"+_vm._s(_vm.$t('pricing.save', ['Save']))+\" \"+_vm._s(_vm.getAddonPrice(prod.id).discountpercentage)+\"%\")]):_c('div',{staticClass:\"price\"},[_vm._v(\"+ \"+_vm._s(_vm.getPrice(prod.price)))]),_c('div',{staticClass:\"name\"},[(prod.hascategories)?_c('a',{attrs:{\"href\":prod.url}},[_vm._v(_vm._s(prod.name))]):_c('span',[_vm._v(_vm._s(prod.name))])])]),(prod.allowpurchase)?_c('div',{staticClass:\"action\"},[(prod.allowpurchase)?_c('AddToCartButton',{attrs:{\"sku\":_vm.productId,\"variantid\":_vm.getVariantId(prod),\"addon-products\":[prod.id],\"unit\":prod.unit,\"quantity\":_vm.colli,\"colli\":_vm.colli}}):(prod.stockmessage && !prod.stockmessage.instock)?_c('div',{staticClass:\"out-of-stock-msg\"},[_vm._v(_vm._s(prod.stockmessage.message))]):_vm._e()],1):_vm._e()])}),0)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport { AddonPrice, DisplayPriceInfo, ProductSearchResultProduct } from '../../models/Product';\r\nimport ProductDetailsModule from '../../store/modules/ProductDetailsModule';\r\nimport ProductService from '../../services/ProductService';\r\n\r\n@Component({\r\n name: 'DetailsAddonProducts',\r\n components: {\r\n }\r\n})\r\nexport default class DetailsAddonProducts extends Vue {\r\n\r\n private ps: ProductService = new ProductService();\r\n private addonProducts: ProductSearchResultProduct[] = [];\r\n private addonPrices: AddonPrice[] = [];\r\n\r\n get translationsReady(): boolean {\r\n return this.$root.$data.translationsLoaded === true;\r\n }\r\n\r\n get showAddonProducts(): boolean {\r\n return this.showprices && this.addonProducts.length > 0 && this.addonPrices.length > 0;\r\n }\r\n\r\n get product(): ProductSearchResultProduct {\r\n return ProductDetailsModule.PRODUCT;\r\n }\r\n\r\n get productId(): string {\r\n if (ProductDetailsModule.VARIANTS?.length > 0) {\r\n return ProductDetailsModule.SELECTED_VARIANT?.sku;\r\n }\r\n return this.product?.id;\r\n }\r\n\r\n get productImage(): string {\r\n return this.product?.image;\r\n }\r\n\r\n get addonProductIds(): string[] {\r\n if (ProductDetailsModule.VARIANTS?.length > 0) {\r\n return ProductDetailsModule.SELECTED_VARIANT?.addonproducts ?? [];\r\n }\r\n return this.product?.addonproducts ?? [];\r\n }\r\n\r\n get colli(): number {\r\n if (ProductDetailsModule.VARIANTS?.length > 0) {\r\n return ProductDetailsModule.SELECTED_VARIANT?.colli;\r\n }\r\n return this.product?.colli;\r\n }\r\n\r\n get showprices(): boolean {\r\n return this.product?.showprices ?? false;\r\n }\r\n\r\n get allowpurchase(): boolean {\r\n if (ProductDetailsModule.VARIANTS?.length > 0) {\r\n return ProductDetailsModule.SELECTED_VARIANT?.allowpurchase;\r\n }\r\n return this.product?.allowpurchase;\r\n }\r\n\r\n get title(): any {\r\n return this.$t('product.' + (this.hasAddonPricesWithDiscounts() ? 'bundle' : 'addons'), [(this.hasAddonPricesWithDiscounts() ? 'Bundle' : 'Addons')])\r\n }\r\n\r\n private getVariantId(prod: ProductSearchResultProduct): string {\r\n return 'combination-' + this.productId + '-' + prod.id;\r\n }\r\n\r\n private hasAddonPricesWithDiscounts(): boolean {\r\n return this.addonPrices.some(item => item.price.ondiscount);\r\n }\r\n\r\n private hasAddonPriceWithDiscount(addonproductid: string): boolean {\r\n return this.addonPrices.some(item => item.addonproductid == addonproductid && item.price.ondiscount);\r\n }\r\n\r\n private getAddonPrice(addonproductid: string): DisplayPriceInfo {\r\n return this.addonPrices.find(item => item.addonproductid == addonproductid).price;\r\n }\r\n\r\n private getPrice(price: DisplayPriceInfo)\r\n {\r\n if (price.showpricesincvat)\r\n return price.priceincvat\r\n\r\n return price.priceexvat;\r\n }\r\n\r\n @Watch(\"addonProductIds\")\r\n private async onAddonProductIdsChange() {\r\n if (!this.addonProductIds.length)\r\n {\r\n this.addonProducts = [];\r\n this.addonPrices = [];\r\n }\r\n else\r\n {\r\n this.addonPrices = await this.ps.getAddonPrices(this.productId);\r\n this.addonProducts = await this.ps.getProductsById(this.addonProductIds);\r\n }\r\n}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./DetailsAddonProducts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./DetailsAddonProducts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DetailsAddonProducts.vue?vue&type=template&id=89416a5a&\"\nimport script from \"./DetailsAddonProducts.vue?vue&type=script&lang=ts&\"\nexport * from \"./DetailsAddonProducts.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DetailsAddonProducts.vue?vue&type=style&index=0&id=89416a5a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/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","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./DetailsAddonProducts.vue?vue&type=style&index=0&id=89416a5a&prod&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"647dd3d9\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["___CSS_LOADER_EXPORT___","push","module","id","render","_vm","this","_c","_self","_setupProxy","translationsReady","showAddonProducts","staticClass","class","_v","_s","title","_l","addonProducts","prod","key","hasAddonPriceWithDiscount","attrs","productImage","_e","image","name","price","currency","getPrice","getAddonPrice","$t","discountpercentage","hascategories","url","allowpurchase","productId","getVariantId","unit","colli","stockmessage","instock","message","staticRenderFns","DetailsAddonProducts","Vue","constructor","args","_defineProperty","ProductService","$root","$data","translationsLoaded","showprices","length","addonPrices","product","ProductDetailsModule","PRODUCT","VARIANTS","SELECTED_VARIANT","sku","addonProductIds","addonproducts","hasAddonPricesWithDiscounts","some","item","ondiscount","addonproductid","find","showpricesincvat","priceincvat","priceexvat","async","ps","getAddonPrices","getProductsById","__decorate","Watch","Component","components","component","content","__esModule","default","locals","exports","add"],"sourceRoot":""}