{"version":3,"sources":["webpack:///./src/pages/ProductPage.vue?d687","webpack:///./src/components/Other/BlogCard.vue?72f0","webpack:///./src/components/Other/BlogCard.vue?10f3","webpack:///./src/components/Other/BlogCard.vue?9bca","webpack:///./src/components/Other/BlogCard.vue","webpack:///./src/containers/ProductSidebar.vue?0996","webpack:///./src/containers/ProductSidebar.vue?f7c0","webpack:///./src/containers/ProductSidebar.vue?e642","webpack:///./src/containers/ProductSidebar.vue","webpack:///./src/pages/ProductPage.vue?e98e","webpack:///./src/pages/ProductPage.vue?7771","webpack:///./src/pages/ProductPage.vue","webpack:///./src/pages/ProductPage.vue?2fba"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","productsPageUrl","_v","_s","$t","data","fields","title","images","length","contentfulImageUrlByWidth","_e","iZettleProduct","contactUsPageUrl","findUsPageUrl","text","relatedBlogItems","_l","blogItem","index","key","relatedProducts","relatedProductsSwiperOptions","scopedSlots","_u","fn","ref","item","staticRenderFns","url","image","type","component","components","BlogCard","relatedMaxCount","slug","0","slidesPerView","420","576","768","992","1200","1440","$route","params","getContent","newVal","EventBus","$emit","Config","PageIsLoadingEvent","GetFirstEntry","ProductPage","then","result","Consoler","debugLog","setDocumentTitle","getRelatedProducts","getRelatedBlogItems","finally","GetEntries","sys","id","items","content_type","BlogItemPage","links_to_entry","limit","order","document","DocumentTitleBase","orderable","izettleproduct","product","ProductsPageSlug","Settings","contactUsPage","findUsPage","immediate","deep","Content","ProductSidebar","RichTextRenderer","InfoCards","ProductSlideCard","IZettleProductBuyButton","IZettleCartEmbed"],"mappings":"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","file":"assets/js/ProductPage.c242cb09.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data)?_c('div',[_c('div',{staticClass:\"section home subpage thin-hero\"}),_c('div',{staticClass:\"section first-in-sections blog-post\",attrs:{\"id\":\"firstContent\"}},[_c('b-container',[_c('b-row',[_c('b-colxx',{staticClass:\"mb-4\",attrs:{\"xxs\":\"12\"}},[_c('router-link',{attrs:{\"to\":_vm.productsPageUrl}},[_c('i',{staticClass:\"icon-arrow-left\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"pages.productPage.backText\"))+\"\\n \")])],1),_c('b-colxx',{staticClass:\"d-md-none\",attrs:{\"xxs\":\"12\"}},[_c('h1',{staticClass:\"product-title\"},[_vm._v(_vm._s(_vm.data.fields.title))])])],1),_c('b-row',[_c('b-colxx',{staticClass:\"mb-5 mb-md-5\",attrs:{\"xxs\":\"12\",\"md\":\"6\"}},[(_vm.data.fields.images && _vm.data.fields.images.length)?_c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-body',{staticClass:\"p-0\"},[_c('img',{staticClass:\"main-image img-fluid\",attrs:{\"alt\":_vm.data.fields.title,\"src\":_vm.contentfulImageUrlByWidth(_vm.data.fields.images[0], 540)}})])],1):_vm._e()],1),_c('b-colxx',{staticClass:\"side-bar mt-2 mb-4 mt-md-0 mb-md-5\",attrs:{\"xxs\":\"12\",\"md\":\"5\",\"offset-md\":\"1\"}},[_c('div',{staticClass:\"side-bar-content mb-0\"},[_c('h1',{staticClass:\"product-title d-none d-md-block\"},[_vm._v(\"\\n \"+_vm._s(_vm.data.fields.title)+\"\\n \")]),_c('div',[(_vm.orderable)?[(_vm.iZettleProduct !== null)?_c('IZettleProductBuyButton',{attrs:{\"iZettleProduct\":_vm.iZettleProduct,\"logos\":true}}):[_vm._v(_vm._s(_vm.$t(\"pages.productPage.missingInfo\")))]]:[_c('div',{staticClass:\"d-flex flex-row align-items-center\"},[_c('i',{staticClass:\"iconsmind-Shop large-icon pr-4\"}),_c('span',[_vm._v(\"\\n Denna produkt kan tyvärr inte beställas online, men köp\\n den gärna\\n \"),_c('router-link',{attrs:{\"to\":_vm.contactUsPageUrl}},[_vm._v(\"på plats hos oss\")]),_vm._v(\"\\n eller på någon av de\\n \"),_c('router-link',{attrs:{\"to\":_vm.findUsPageUrl}},[_vm._v(\"reko-ringar vi medverkar i\")]),_vm._v(\".\")],1)])],(_vm.data.fields.text)?_c('div',{staticClass:\"description-container mt-5\"},[_c('RichTextRenderer',{attrs:{\"document\":_vm.data.fields.text}})],1):_vm._e()],2),(_vm.relatedBlogItems.length)?_c('div',{staticClass:\"mt-5\"},[_c('h2',[_vm._v(\"Relaterade inlägg\")]),_vm._l((_vm.relatedBlogItems),function(blogItem,index){return _c('BlogCard',{key:index,attrs:{\"data\":blogItem}})})],2):_vm._e()])])],1)],1)],1),(_vm.relatedProducts.length)?_c('div',{staticClass:\"section background last-in-sections\"},[_c('b-container',[_c('b-row',[_c('b-colxx',{staticClass:\"text-center mb-4\",attrs:{\"xxs\":\"12\"}},[_c('h3',{staticClass:\"section-title\"},[_vm._v(\"Liknande produkter\")])]),_c('b-colxx',{staticClass:\"mt-4\",attrs:{\"xxs\":\"12\"}},[_c('InfoCards',{attrs:{\"items\":_vm.relatedProducts,\"customSwiperOptions\":_vm.relatedProductsSwiperOptions},scopedSlots:_vm._u([{key:\"slide\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('ProductSlideCard',{attrs:{\"product\":item,\"imageAsThumbnails\":false}})]}}],null,false,3063600667)})],1)],1)],1)],1):_vm._e(),_c('IZettleCartEmbed')],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('b-card',{staticClass:\"flex-row mb-4\",attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"w-30 position-relative\"},[(_vm.data.fields.image)?[_c('router-link',{attrs:{\"to\":_vm.url}},[_c('img',{staticClass:\"card-img-left\",attrs:{\"src\":_vm.contentfulImageUrlByWidth(_vm.data.fields.image, 153),\"alt\":_vm.data.fields.title}})])]:_vm._e(),_c('router-link',{attrs:{\"to\":_vm.url}},[_c('b-badge',{staticClass:\"position-absolute badge-top-left\",attrs:{\"pill\":\"\"}},[_vm._v(_vm._s(_vm.data.fields.type))])],1)],2),_c('div',{staticClass:\"w-70 d-flex align-items-center\"},[_c('b-card-body',[_c('router-link',{attrs:{\"to\":_vm.url}},[_c('h6',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.data.fields.title))])])],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\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { BlogItemPageData } from '@/models/pages';\r\nimport linkResolver from '@/contentful/link-resolver';\r\n\r\n@Component\r\nexport default class BlogCard extends Vue {\r\n @Prop() private data!: BlogItemPageData;\r\n\r\n private get url(): string {\r\n return linkResolver(this.data);\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!./BlogCard.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!./BlogCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BlogCard.vue?vue&type=template&id=69e3edda&\"\nimport script from \"./BlogCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./BlogCard.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-colxx',{staticClass:\"side-bar\",attrs:{\"xxs\":\"12\",\"lg\":\"4\",\"offset-lg\":\"1\"}},[_c('div',{staticClass:\"side-bar-content\"},[_c('h2',[_vm._v(\"Relaterade produkter\")]),_vm._l((_vm.products),function(item,index){return _c('BlogCard',{key:index,attrs:{\"data\":item}})})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { ProductPageData } from '@/models/pages';\r\nimport BlogCard from '@/components/Other/BlogCard.vue';\r\n\r\n@Component({\r\n components: {\r\n BlogCard\r\n }\r\n})\r\nexport default class ProductSidebar extends Vue {\r\n @Prop() private products!: ProductPageData[];\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!./ProductSidebar.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!./ProductSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductSidebar.vue?vue&type=template&id=3db50288&\"\nimport script from \"./ProductSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductSidebar.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 { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport Content from '@/components/Sections/Content.vue';\r\nimport RichTextRenderer from 'contentful-rich-text-vue-renderer';\r\nimport InfoCards from '@/components/Other/InfoCards.vue';\r\nimport ProductSlideCard from '@/components/Other/ProductSlideCard.vue';\r\nimport BlogCard from '@/components/Other/BlogCard.vue';\r\nimport IZettleProductBuyButton from '@/components/Other/IZettleProductBuyButton.vue';\r\nimport IZettleCartEmbed from '@/components/Other/IZettleCartEmbed.vue';\r\nimport {\r\n ProductPageData,\r\n PageContentTypes,\r\n BlogItemPageData\r\n} from '@/models/pages';\r\nimport { ContentfulHelper } from '@/helpers/contentful-helper';\r\nimport ProductSidebar from '@/containers/ProductSidebar.vue';\r\nimport { Config } from '../utils/Config';\r\nimport { EventBus } from '@/utils/EventBus';\r\nimport { Product } from '@/models/selz-product';\r\nimport { generateSwiperOptions } from '@/models/swiper';\r\nimport linkResolver from '@/contentful/link-resolver';\r\nimport { Consoler } from '@/utils/Consoler';\r\n\r\n@Component({\r\n components: {\r\n Content,\r\n ProductSidebar,\r\n RichTextRenderer,\r\n InfoCards,\r\n ProductSlideCard,\r\n BlogCard,\r\n IZettleProductBuyButton,\r\n IZettleCartEmbed\r\n }\r\n})\r\nexport default class ProductPage extends Vue {\r\n private readonly relatedMaxCount: number = 5;\r\n\r\n private slug: string = '';\r\n private data: ProductPageData | null = null;\r\n private relatedProducts: ProductPageData[] = [];\r\n private relatedBlogItems: BlogItemPageData[] = [];\r\n\r\n private relatedProductsSwiperOptions = generateSwiperOptions(4, {\r\n 0: { slidesPerView: 1 },\r\n 420: { slidesPerView: 1 },\r\n 576: { slidesPerView: 2 },\r\n 768: { slidesPerView: 3 },\r\n 992: { slidesPerView: 3 },\r\n 1200: { slidesPerView: 4 },\r\n 1440: { slidesPerView: 4 }\r\n });\r\n\r\n private get orderable(): boolean {\r\n return this.data !== null && this.data.fields.orderable === true;\r\n }\r\n\r\n private get iZettleProduct(): Product | null {\r\n return this.data !== null && this.data.fields.izettleproduct !== null\r\n ? this.data.fields.izettleproduct.product\r\n : null;\r\n }\r\n\r\n private get productsPageUrl(): string {\r\n return '/' + Config.ProductsPageSlug;\r\n }\r\n\r\n private get contactUsPageUrl(): string | null {\r\n return Config.Settings !== null\r\n ? linkResolver(Config.Settings.contactUsPage)\r\n : null;\r\n }\r\n private get findUsPageUrl(): string | null {\r\n return Config.Settings !== null\r\n ? linkResolver(Config.Settings.findUsPage)\r\n : null;\r\n }\r\n\r\n private created() {\r\n this.slug = this.$route.params.slug;\r\n this.getContent();\r\n }\r\n\r\n // Watch url change\r\n @Watch('$route', { immediate: false, deep: true })\r\n private onUrlChange(newVal: any) {\r\n if (this.slug !== this.$route.params.slug) {\r\n this.slug = this.$route.params.slug;\r\n this.getContent();\r\n }\r\n }\r\n\r\n private getContent() {\r\n this.data = null;\r\n EventBus.$emit(Config.PageIsLoadingEvent, true);\r\n\r\n ContentfulHelper.GetFirstEntry(this.$route, {\r\n 'content_type': PageContentTypes.ProductPage,\r\n 'fields.slug[in]': this.slug,\r\n 'order': 'sys.createdAt'\r\n })\r\n .then(result => {\r\n this.data = result as ProductPageData;\r\n Consoler.debugLog('Fetched product page', this.data);\r\n this.setDocumentTitle();\r\n this.getRelatedProducts();\r\n this.getRelatedBlogItems();\r\n })\r\n .finally(() => {\r\n EventBus.$emit(Config.PageIsLoadingEvent, false);\r\n });\r\n }\r\n\r\n private getRelatedProducts() {\r\n this.relatedProducts = [];\r\n\r\n ContentfulHelper.GetEntries(this.$route, {\r\n 'content_type': PageContentTypes.ProductPage,\r\n 'sys.id[ne]': this.data !== null ? this.data.sys.id : '',\r\n 'limit': this.relatedMaxCount,\r\n 'order': '-sys.createdAt'\r\n }).then(result => {\r\n this.relatedProducts = result.items as ProductPageData[];\r\n Consoler.debugLog(\r\n 'Related product items fetched successfully.',\r\n this.relatedProducts\r\n );\r\n });\r\n }\r\n\r\n private getRelatedBlogItems() {\r\n this.relatedBlogItems = [];\r\n\r\n if (this.data === null) {\r\n return;\r\n }\r\n\r\n ContentfulHelper.GetEntries(this.$route, {\r\n content_type: PageContentTypes.BlogItemPage,\r\n // 'sys.id[ne]': this.data !== null ? this.data.sys.id : '',\r\n // 'fields.relatedProducts': '',\r\n links_to_entry: this.data.sys.id,\r\n limit: this.relatedMaxCount,\r\n order: '-sys.createdAt'\r\n }).then(result => {\r\n this.relatedBlogItems = result.items as BlogItemPageData[];\r\n Consoler.debugLog(\r\n 'Related blog items fetched successfully.',\r\n this.relatedBlogItems\r\n );\r\n });\r\n }\r\n\r\n private setDocumentTitle() {\r\n document.title =\r\n Config.DocumentTitleBase +\r\n (this.data !== null ? ' - Produkt: ' + this.data.fields.title : '');\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!./ProductPage.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!./ProductPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductPage.vue?vue&type=template&id=66254ef2&scoped=true&\"\nimport script from \"./ProductPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductPage.vue?vue&type=style&index=0&id=66254ef2&scoped=true&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 \"66254ef2\",\n null\n \n)\n\nexport default component.exports","import mod 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!./ProductPage.vue?vue&type=style&index=0&id=66254ef2&scoped=true&lang=scss&\"; export default mod; 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!./ProductPage.vue?vue&type=style&index=0&id=66254ef2&scoped=true&lang=scss&\""],"sourceRoot":""}