hemfixarna-web-components 1.7.3 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hemfixarna-address_15.cjs.entry.js +118 -53
- package/dist/cjs/hemfixarna-address_15.cjs.entry.js.map +1 -1
- package/dist/cjs/hemfixarna-byggmax.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-category.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-components.cjs.js +2 -2
- package/dist/cjs/hemfixarna-components.cjs.js.map +1 -1
- package/dist/cjs/hemfixarna-doro.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-elfa.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-fargvaruhuset.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-flyttsmart.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-forebygg.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-hornbach.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-kbygg.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-klint.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-kund.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-norrgavel.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-power.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-service.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-skanska.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-sparfonster.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-string-furniture.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-superfront.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-tesla.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-traningspartner.cjs.entry.js +2 -2
- package/dist/cjs/hemfixarna-zaptec.cjs.entry.js +2 -2
- package/dist/cjs/{index-6af772cf.js → index-3e8dcb29.js} +2 -2
- package/dist/cjs/{index-6af772cf.js.map → index-3e8dcb29.js.map} +1 -1
- package/dist/cjs/{index-8054ce93.js → index-739bf321.js} +3 -1
- package/dist/cjs/index-739bf321.js.map +1 -0
- package/dist/cjs/{index-b83343b9.js → index-e6926623.js} +74 -20
- package/dist/cjs/index-e6926623.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/hemfixarna-checkout/hemfixarna-checkout.js +19 -3
- package/dist/collection/components/hemfixarna-checkout/hemfixarna-checkout.js.map +1 -1
- package/dist/collection/components/hemfixarna-component/hemfixarna-component.js +11 -1
- package/dist/collection/components/hemfixarna-component/hemfixarna-component.js.map +1 -1
- package/dist/collection/components/hemfixarna-component/hemfixarna.css +17 -7
- package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.js +2 -1
- package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.js.map +1 -1
- package/dist/collection/components/hemfixarna-orderrows/hemfixarna-orderrows.js +30 -20
- package/dist/collection/components/hemfixarna-orderrows/hemfixarna-orderrows.js.map +1 -1
- package/dist/collection/components/hemfixarna-product/hemfixarna-product.js +3 -2
- package/dist/collection/components/hemfixarna-product/hemfixarna-product.js.map +1 -1
- package/dist/collection/store/index.js.map +1 -1
- package/dist/collection/types/index.js +2 -0
- package/dist/collection/types/index.js.map +1 -1
- package/dist/collection/utils/calc.js +52 -5
- package/dist/collection/utils/calc.js.map +1 -1
- package/dist/collection/utils/felixApi.js.map +1 -1
- package/dist/esm/hemfixarna-address_15.entry.js +118 -53
- package/dist/esm/hemfixarna-address_15.entry.js.map +1 -1
- package/dist/esm/hemfixarna-byggmax.entry.js +2 -2
- package/dist/esm/hemfixarna-category.entry.js +2 -2
- package/dist/esm/hemfixarna-components.js +3 -3
- package/dist/esm/hemfixarna-components.js.map +1 -1
- package/dist/esm/hemfixarna-doro.entry.js +2 -2
- package/dist/esm/hemfixarna-elfa.entry.js +2 -2
- package/dist/esm/hemfixarna-fargvaruhuset.entry.js +2 -2
- package/dist/esm/hemfixarna-flyttsmart.entry.js +2 -2
- package/dist/esm/hemfixarna-forebygg.entry.js +2 -2
- package/dist/esm/hemfixarna-hornbach.entry.js +2 -2
- package/dist/esm/hemfixarna-kbygg.entry.js +2 -2
- package/dist/esm/hemfixarna-klint.entry.js +2 -2
- package/dist/esm/hemfixarna-kund.entry.js +2 -2
- package/dist/esm/hemfixarna-norrgavel.entry.js +2 -2
- package/dist/esm/hemfixarna-power.entry.js +2 -2
- package/dist/esm/hemfixarna-service.entry.js +2 -2
- package/dist/esm/hemfixarna-skanska.entry.js +2 -2
- package/dist/esm/hemfixarna-sparfonster.entry.js +2 -2
- package/dist/esm/hemfixarna-string-furniture.entry.js +2 -2
- package/dist/esm/hemfixarna-superfront.entry.js +2 -2
- package/dist/esm/hemfixarna-tesla.entry.js +2 -2
- package/dist/esm/hemfixarna-traningspartner.entry.js +2 -2
- package/dist/esm/hemfixarna-zaptec.entry.js +2 -2
- package/dist/esm/{index-8282f88e.js → index-aa51ad9d.js} +2 -2
- package/dist/esm/{index-8282f88e.js.map → index-aa51ad9d.js.map} +1 -1
- package/dist/esm/{index-1fbc7a74.js → index-c8aebf0d.js} +3 -1
- package/dist/esm/index-c8aebf0d.js.map +1 -0
- package/dist/esm/{index-04bcf90e.js → index-ea1d222e.js} +74 -20
- package/dist/esm/index-ea1d222e.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/hemfixarna-components/hemfixarna-components.esm.js +1 -1
- package/dist/hemfixarna-components/hemfixarna-components.esm.js.map +1 -1
- package/dist/hemfixarna-components/{p-cb1634e8.entry.js → p-3a05b24c.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-3acd1346.entry.js → p-3b6bf910.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-b397b966.js → p-642db21e.js} +2 -2
- package/dist/hemfixarna-components/{p-b397b966.js.map → p-642db21e.js.map} +1 -1
- package/dist/hemfixarna-components/p-6aed6e88.entry.js +2 -0
- package/dist/hemfixarna-components/p-6aed6e88.entry.js.map +1 -0
- package/dist/hemfixarna-components/{p-1b80999e.entry.js → p-6d17838c.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-8d509bf1.entry.js → p-76cec215.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-1f875c7a.entry.js → p-7bdc4485.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-6f6601b8.entry.js → p-7f5b7e4d.entry.js} +2 -2
- package/dist/hemfixarna-components/p-85caa0b1.entry.js +2 -0
- package/dist/hemfixarna-components/p-89e35a2b.entry.js +2 -0
- package/dist/hemfixarna-components/{p-61b4597f.entry.js → p-a64997e6.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-8cc96dd9.entry.js → p-a66f910f.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-e0aad0ff.entry.js → p-ae532b1e.entry.js} +2 -2
- package/dist/hemfixarna-components/p-b250a909.entry.js +2 -0
- package/dist/hemfixarna-components/p-c707b937.js +3 -0
- package/dist/hemfixarna-components/p-c707b937.js.map +1 -0
- package/dist/hemfixarna-components/{p-8356796a.entry.js → p-c7a68aec.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-edac9f21.entry.js → p-d26af1b1.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-cfdc93e9.js → p-d297cb30.js} +2 -2
- package/dist/hemfixarna-components/p-d297cb30.js.map +1 -0
- package/dist/hemfixarna-components/{p-a63a6a56.entry.js → p-d96ab852.entry.js} +2 -2
- package/dist/hemfixarna-components/{p-dabad8a7.entry.js → p-e0c54744.entry.js} +2 -2
- package/dist/hemfixarna-components/p-e2c0ddb1.entry.js +2 -0
- package/dist/hemfixarna-components/{p-e8800c3b.entry.js → p-e2cd711c.entry.js} +2 -2
- package/dist/hemfixarna-components/p-e63f00b7.entry.js +2 -0
- package/dist/hemfixarna-components/{p-6c1d21dd.entry.js → p-eabbb263.entry.js} +2 -2
- package/dist/hemfixarna-components/p-fcb4a599.entry.js +2 -0
- package/dist/types/components/hemfixarna-orderrows/hemfixarna-orderrows.d.ts +2 -3
- package/dist/types/stencil-public-runtime.d.ts +3 -0
- package/dist/types/store/index.d.ts +1 -1
- package/dist/types/types/index.d.ts +15 -3
- package/dist/types/utils/calc.d.ts +9 -1
- package/dist/types/utils/felixApi.d.ts +7 -0
- package/package.json +1 -1
- package/dist/cjs/index-8054ce93.js.map +0 -1
- package/dist/cjs/index-b83343b9.js.map +0 -1
- package/dist/esm/index-04bcf90e.js.map +0 -1
- package/dist/esm/index-1fbc7a74.js.map +0 -1
- package/dist/hemfixarna-components/p-32a8152b.js +0 -3
- package/dist/hemfixarna-components/p-32a8152b.js.map +0 -1
- package/dist/hemfixarna-components/p-53afbc10.entry.js +0 -2
- package/dist/hemfixarna-components/p-53f0abfa.entry.js +0 -2
- package/dist/hemfixarna-components/p-8f0a688c.entry.js +0 -2
- package/dist/hemfixarna-components/p-ae3fc85c.entry.js +0 -2
- package/dist/hemfixarna-components/p-b6bc1537.entry.js +0 -2
- package/dist/hemfixarna-components/p-cfdc93e9.js.map +0 -1
- package/dist/hemfixarna-components/p-dfcefa54.entry.js +0 -2
- package/dist/hemfixarna-components/p-fb43b148.entry.js +0 -2
- package/dist/hemfixarna-components/p-fb43b148.entry.js.map +0 -1
- /package/dist/hemfixarna-components/{p-cb1634e8.entry.js.map → p-3a05b24c.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-3acd1346.entry.js.map → p-3b6bf910.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-1b80999e.entry.js.map → p-6d17838c.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-8d509bf1.entry.js.map → p-76cec215.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-1f875c7a.entry.js.map → p-7bdc4485.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-6f6601b8.entry.js.map → p-7f5b7e4d.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-8f0a688c.entry.js.map → p-85caa0b1.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-dfcefa54.entry.js.map → p-89e35a2b.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-61b4597f.entry.js.map → p-a64997e6.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-8cc96dd9.entry.js.map → p-a66f910f.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-e0aad0ff.entry.js.map → p-ae532b1e.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-b6bc1537.entry.js.map → p-b250a909.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-8356796a.entry.js.map → p-c7a68aec.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-edac9f21.entry.js.map → p-d26af1b1.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-a63a6a56.entry.js.map → p-d96ab852.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-dabad8a7.entry.js.map → p-e0c54744.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-53afbc10.entry.js.map → p-e2c0ddb1.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-e8800c3b.entry.js.map → p-e2cd711c.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-ae3fc85c.entry.js.map → p-e63f00b7.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-6c1d21dd.entry.js.map → p-eabbb263.entry.js.map} +0 -0
- /package/dist/hemfixarna-components/{p-53f0abfa.entry.js.map → p-fcb4a599.entry.js.map} +0 -0
@@ -29,6 +29,7 @@ export class HemfixarnaProduct {
|
|
29
29
|
start_fee: !state.selectedProduct.hide_start_fee,
|
30
30
|
terms_checkout: state.selectedProduct.terms_checkout,
|
31
31
|
icon: state.selectedProduct.icon,
|
32
|
+
start_fee_obj: state.selectedProduct.start_fee_obj,
|
32
33
|
},
|
33
34
|
];
|
34
35
|
}
|
@@ -128,7 +129,7 @@ export class HemfixarnaProduct {
|
|
128
129
|
checkAndInjectCSS();
|
129
130
|
}
|
130
131
|
render() {
|
131
|
-
var _a, _b, _c;
|
132
|
+
var _a, _b, _c, _d;
|
132
133
|
const checked = getAssetPath(`./assets/checked.svg`);
|
133
134
|
const plus = getAssetPath(`./assets/plus.svg`);
|
134
135
|
const minus = getAssetPath(`./assets/minus.svg`);
|
@@ -141,7 +142,7 @@ export class HemfixarnaProduct {
|
|
141
142
|
state.selectedProduct.parts.map(p => {
|
142
143
|
var _a;
|
143
144
|
return (h("li", { class: "hemfixarna_part" }, h("div", null, h("p", null, (_a = p.title) !== null && _a !== void 0 ? _a : p.title), h("p", { class: "hemfixarna_product--price" }, getPartPrice(p, state.selectedProduct), "kr/st")), h("div", { class: "hemfixarna_counter" }, h("img", { class: `${this.getPartAmount(p.ID) === 0 ? 'disabled' : ''}`, src: minus, onClick: () => this.removePart(p) }), h("span", null, this.getPartAmount(p.ID)), h("img", { class: `${this.getAmount() === 0 ? 'disabled' : ''}`, src: plus, onClick: () => this.addPart(p) }))));
|
144
|
-
})), h("h4", { class: "hemfixarna_product--total" }, "Totalt ", this.getTotalPrice(), " kr"), h("button", { onClick: () => this.goToCart(), class: `hemfixarna_buy ${this.getAmount() === 0 ? 'disabled' : ''}` }, "Forts\u00E4tt"))), !state.selectedProduct.hide_start_fee && (
|
145
|
+
})), h("h4", { class: "hemfixarna_product--total" }, "Totalt ", this.getTotalPrice(), " kr"), h("button", { onClick: () => this.goToCart(), class: `hemfixarna_buy ${this.getAmount() === 0 ? 'disabled' : ''}` }, "Forts\u00E4tt"))), !state.selectedProduct.hide_start_fee && ((_d = state.selectedProduct.start_fee_obj) === null || _d === void 0 ? void 0 : _d.title) && (h("p", { class: "hemfixarna_terms" }, h("strong", null, state.selectedProduct.start_fee_obj.title), h("br", null), h("span", { innerHTML: state.selectedProduct.start_fee_obj.description }))), state.options && h("hemfixarna-info", null))))) : null;
|
145
146
|
}
|
146
147
|
static get is() { return "hemfixarna-product"; }
|
147
148
|
static get originalStyleUrls() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hemfixarna-product.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-product/hemfixarna-product.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business, Icon, Part } from '../../types';\nimport { getPartPrice, getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-product',\n styleUrl: 'hemfixarna-product.scss',\n shadow: false,\n})\nexport class HemfixarnaProduct {\n @State() amount: number = 0;\n @State() hideDescription: boolean = true;\n @Element() private el: HTMLElement;\n\n addProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n productInCart.amount++;\n state.cart = [...state.cart];\n } else {\n state.cart = [\n ...state.cart,\n {\n id: state.selectedProduct.ID,\n rut: state.selectedProduct.rut,\n rot: state.selectedProduct.rot,\n green: state.selectedProduct.green,\n amount: 1,\n parts: [],\n price: state.selectedProduct.price,\n name: state.selectedProduct.title,\n start_fee: !state.selectedProduct.hide_start_fee,\n terms_checkout: state.selectedProduct.terms_checkout,\n icon: state.selectedProduct.icon,\n },\n ];\n }\n }\n\n removeProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart && productInCart.amount > 1) {\n productInCart.amount--;\n state.cart = [...state.cart];\n } else {\n state.cart = state.cart.filter(p => p.id !== state.selectedProduct.ID);\n }\n }\n\n //Handle cart and parts\n addPart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart) {\n partInCart.amount++;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = [...productInCart.parts, { id: part.ID, amount: 1, price: part.price, name: part.title ?? part.title }];\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n removePart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart && partInCart.amount > 1) {\n partInCart.amount--;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = productInCart.parts.filter(sp => sp.id !== part.ID);\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n goToCart() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n state.step = 5;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n\n getAmount() {\n return state.cart.find(p => p.id === state.selectedProduct.ID)?.amount || 0;\n }\n\n getPartAmount(partId: number) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n return productInCart?.parts.find(sp => sp.id === partId)?.amount || 0;\n }\n\n getTotalPrice() {\n let price = 0;\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partsPrice = productInCart.parts.reduce((acc, curr) => {\n const part = state.selectedProduct.parts.find(p => p.ID === curr.id);\n if (part) {\n return acc + part.price * curr.amount;\n }\n return acc;\n }, 0);\n price = state.selectedProduct.price * productInCart.amount + partsPrice;\n } else {\n price = state.selectedProduct.price;\n }\n return getProductPrice(state.selectedProduct, price);\n }\n\n componentDidRender() {\n const linkElem = document.createElement('link');\n linkElem.setAttribute('rel', 'stylesheet');\n linkElem.setAttribute('href', 'https://painting-frontend.vercel.app/static/css/main.css');\n const fonts = document.createElement('link');\n fonts.setAttribute('rel', 'stylesheet');\n fonts.setAttribute('href', 'https://painting-frontend.vercel.app/fonts.css');\n\n const checkAndInjectCSS = () => {\n const parents = this.el.getElementsByTagName('hemfixare-calculator');\n if (parents.length > 0 && parents[0].shadowRoot !== null) {\n parents[0].shadowRoot.appendChild(linkElem);\n parents[0].shadowRoot.appendChild(fonts);\n } else {\n setTimeout(checkAndInjectCSS, 1);\n }\n };\n\n checkAndInjectCSS();\n }\n\n render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n const plus = getAssetPath(`./assets/plus.svg`);\n const minus = getAssetPath(`./assets/minus.svg`);\n\n if (state.maleri) {\n return (\n <div class=\"hemfixarna_painting\">\n <script\n type=\"text/javascript\"\n src={\n ['localhost', 'vercel'].some(v => window.location.href.includes(v))\n ? 'https://painting-dev.vercel.app/static/js/main.js'\n : 'https://painting-frontend.vercel.app/static/js/main.js'\n }\n defer\n async\n ></script>\n <hemfixare-calculator\n title={state.options.maleri_title}\n subtitle={state.options.maleri_text}\n modal=\"true\"\n customer={state.business === Business.string ? 'string' : state.business}\n ></hemfixare-calculator>\n </div>\n );\n }\n\n return state.selectedProduct ? (\n <div class=\"hemfixarna_product\">\n <div class=\"hemfixarna_product--top\">\n {state.selectedProduct.icon && (\n <img width={80} src={(state.selectedProduct.icon as Icon).url ?? (state.selectedProduct.icon as string)} alt={state.selectedProduct.title} />\n )}\n <div>\n <h1>{state.selectedProduct.title}</h1>\n {!state.selectedProduct.invoice ? <h2>{getProductPrice(state.selectedProduct)} kr/st</h2> : <h2>{state.selectedProduct.invoice_price}</h2>}\n </div>\n </div>\n\n <div class=\"hemfixarna_product--grid\">\n <div class=\"hemfixarna_product--left\">\n {state.selectedProduct.list?.length && (\n <ul class=\"hemfixarna_features\">\n {state.selectedProduct.list.map(l => (\n <li key={l.bullet}>\n <img src={checked} alt=\"checked\" />\n <p>{l.bullet}</p>\n </li>\n ))}\n </ul>\n )}\n {state.selectedProduct.description && (\n <p\n onClick={() => (this.hideDescription = false)}\n class={`hemfixarna_description ${this.hideDescription ? 'hemfixarna_description--hidden' : ''}`}\n innerHTML={state.selectedProduct.description}\n ></p>\n )}\n </div>\n <div class=\"hemfixarna_product--right\">\n {state.selectedProduct.invoice ? (\n <hemfixarna-invoice />\n ) : (\n <Fragment>\n <ul>\n <li class=\"hemfixarna_product--item\">\n <div>\n <p>{state.selectedProduct.title}</p>\n <p class=\"hemfixarna_product--price\">{getProductPrice(state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removeProduct()} />\n <span>{this.getAmount()}</span>\n <img src={plus} onClick={() => this.addProduct()} />\n </div>\n </li>\n {state.selectedProduct.parts?.length &&\n state.selectedProduct.parts.map(p => (\n <li class=\"hemfixarna_part\">\n <div>\n <p>{p.title ?? p.title}</p>\n <p class=\"hemfixarna_product--price\">{getPartPrice(p, state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getPartAmount(p.ID) === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removePart(p)} />\n <span>{this.getPartAmount(p.ID)}</span>\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={plus} onClick={() => this.addPart(p)} />\n </div>\n </li>\n ))}\n </ul>\n <h4 class=\"hemfixarna_product--total\">Totalt {this.getTotalPrice()} kr</h4>\n <button onClick={() => this.goToCart()} class={`hemfixarna_buy ${this.getAmount() === 0 ? 'disabled' : ''}`}>\n Fortsätt\n </button>\n </Fragment>\n )}\n {!state.selectedProduct.hide_start_fee && (state.selectedProduct.rot || state.selectedProduct.rut) && state.rutOptions && state.rotOptions && (\n <p class=\"hemfixarna_terms\">\n <strong>{state.selectedProduct.rot ? state.rotOptions.rot_start_fee_heading : state.rutOptions.rut_start_fee_heading}</strong>\n <br />\n <span innerHTML={state.selectedProduct.rot ? state.rotOptions.rot_start_fee_text : state.rutOptions.rut_start_fee_text}></span>\n </p>\n )}\n {state.options && <hemfixarna-info />}\n </div>\n </div>\n </div>\n ) : null;\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"hemfixarna-product.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-product/hemfixarna-product.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD,MAAM,OAAO,iBAAiB;;kBACF,CAAC;2BACS,IAAI;;EAGxC,UAAU;IACR,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,aAAa,EAAE;MACjB,aAAa,CAAC,MAAM,EAAE,CAAC;MACvB,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;KAC9B;SAAM;MACL,KAAK,CAAC,IAAI,GAAG;QACX,GAAG,KAAK,CAAC,IAAI;QACb;UACE,EAAE,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE;UAC5B,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG;UAC9B,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG;UAC9B,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK;UAClC,MAAM,EAAE,CAAC;UACT,KAAK,EAAE,EAAE;UACT,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK;UAClC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK;UACjC,SAAS,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc;UAChD,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,cAAc;UACpD,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI;UAChC,aAAa,EAAE,KAAK,CAAC,eAAe,CAAC,aAAa;SACnD;OACF,CAAC;KACH;EACH,CAAC;EAED,aAAa;IACX,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;MAC7C,aAAa,CAAC,MAAM,EAAE,CAAC;MACvB,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;KAC9B;SAAM;MACL,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;KACxE;EACH,CAAC;EAED,uBAAuB;EACvB,OAAO,CAAC,IAAU;;IAChB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,aAAa,EAAE;MACjB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;MACrE,IAAI,UAAU,EAAE;QACd,UAAU,CAAC,MAAM,EAAE,CAAC;QACpB,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;OAChD;WAAM;QACL,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;OAC/H;MACD,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;KACpF;EACH,CAAC;EAED,UAAU,CAAC,IAAU;IACnB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,aAAa,EAAE;MACjB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;MACrE,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,UAAU,CAAC,MAAM,EAAE,CAAC;QACpB,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;OAChD;WAAM;QACL,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;OAC3E;MACD,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;KACpF;EACH,CAAC;EAED,QAAQ;IACN,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,aAAa,EAAE;MACjB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;MACf,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;MAClD,WAAW,CAAC,EAAE,CAAC,CAAC;KACjB;EACH,CAAC;EAED,SAAS;;IACP,OAAO,CAAA,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;EAC9E,CAAC;EAED,aAAa,CAAC,MAAc;;IAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,0CAAE,MAAM,KAAI,CAAC,CAAC;EACxE,CAAC;EAED,aAAa;IACX,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,aAAa,EAAE;MACjB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,IAAI,EAAE;UACR,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;SACvC;QACD,OAAO,GAAG,CAAC;MACb,CAAC,EAAE,CAAC,CAAC,CAAC;MACN,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC;KACzE;SAAM;MACL,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;KACrC;IACD,OAAO,eAAe,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;EACvD,CAAC;EAED,kBAAkB;IAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,0DAA0D,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACxC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,gDAAgD,CAAC,CAAC;IAE7E,MAAM,iBAAiB,GAAG,GAAG,EAAE;MAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;MACrE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE;QACxD,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;OAC1C;WAAM;QACL,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;OAClC;IACH,CAAC,CAAC;IAEF,iBAAiB,EAAE,CAAC;EACtB,CAAC;EAED,MAAM;;IACJ,MAAM,OAAO,GAAG,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAEjD,IAAI,KAAK,CAAC,MAAM,EAAE;MAChB,OAAO,CACL,WAAK,KAAK,EAAC,qBAAqB;QAC9B,cACE,IAAI,EAAC,iBAAiB,EACtB,GAAG,EACD,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,mDAAmD;YACrD,CAAC,CAAC,wDAAwD,EAE9D,KAAK,QACL,KAAK,SACG;QACV,4BACE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EACjC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,EACnC,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAClD,CACpB,CACP,CAAC;KACH;IAED,OAAO,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAC7B,WAAK,KAAK,EAAC,oBAAoB;MAC7B,WAAK,KAAK,EAAC,yBAAyB;QACjC,KAAK,CAAC,eAAe,CAAC,IAAI,IAAI,CAC7B,WAAK,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAC,KAAK,CAAC,eAAe,CAAC,IAAa,CAAC,GAAG,mCAAK,KAAK,CAAC,eAAe,CAAC,IAAe,EAAE,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK,GAAI,CAC9I;QACD;UACE,cAAK,KAAK,CAAC,eAAe,CAAC,KAAK,CAAM;UACrC,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAAK,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC;qBAAY,CAAC,CAAC,CAAC,cAAK,KAAK,CAAC,eAAe,CAAC,aAAa,CAAM,CACtI,CACF;MAEN,WAAK,KAAK,EAAC,0BAA0B;QACnC,WAAK,KAAK,EAAC,0BAA0B;UAClC,CAAA,MAAA,KAAK,CAAC,eAAe,CAAC,IAAI,0CAAE,MAAM,KAAI,CACrC,UAAI,KAAK,EAAC,qBAAqB,IAC5B,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACnC,UAAI,GAAG,EAAE,CAAC,CAAC,MAAM;YACf,WAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAC,SAAS,GAAG;YACnC,aAAI,CAAC,CAAC,MAAM,CAAK,CACd,CACN,CAAC,CACC,CACN;UACA,KAAK,CAAC,eAAe,CAAC,WAAW,IAAI,CACpC,SACE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,EAC7C,KAAK,EAAE,0BAA0B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/F,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,WAAW,GACzC,CACN,CACG;QACN,WAAK,KAAK,EAAC,2BAA2B;UACnC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAC/B,6BAAsB,CACvB,CAAC,CAAC,CAAC,CACF,EAAC,QAAQ;YACP;cACE,UAAI,KAAK,EAAC,0BAA0B;gBAClC;kBACE,aAAI,KAAK,CAAC,eAAe,CAAC,KAAK,CAAK;kBACpC,SAAG,KAAK,EAAC,2BAA2B;oBAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC;4BAAU,CAClF;gBACN,WAAK,KAAK,EAAC,oBAAoB;kBAC7B,WAAK,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,GAAI;kBAC9G,gBAAO,IAAI,CAAC,SAAS,EAAE,CAAQ;kBAC/B,WAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAI,CAChD,CACH;cACJ,CAAA,MAAA,KAAK,CAAC,eAAe,CAAC,KAAK,0CAAE,MAAM;gBAClC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;kBAAC,OAAA,CACnC,UAAI,KAAK,EAAC,iBAAiB;oBACzB;sBACE,aAAI,MAAA,CAAC,CAAC,KAAK,mCAAI,CAAC,CAAC,KAAK,CAAK;sBAC3B,SAAG,KAAK,EAAC,2BAA2B;wBAAE,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC;gCAAU,CAClF;oBACN,WAAK,KAAK,EAAC,oBAAoB;sBAC7B,WAAK,KAAK,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAI;sBACpH,gBAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAQ;sBACvC,WAAK,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAI,CACpG,CACH,CACN,CAAA;iBAAA,CAAC,CACD;YACL,UAAI,KAAK,EAAC,2BAA2B;;cAAS,IAAI,CAAC,aAAa,EAAE;oBAAS;YAC3E,cAAQ,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,kBAAkB,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,oBAElG,CACA,CACZ;UACA,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc,KAAI,MAAA,KAAK,CAAC,eAAe,CAAC,aAAa,0CAAE,KAAK,CAAA,IAAI,CACtF,SAAG,KAAK,EAAC,kBAAkB;YACzB,kBAAS,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAU;YAC5D,aAAM;YACN,YAAM,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW,GAAS,CACvE,CACL;UACA,KAAK,CAAC,OAAO,IAAI,0BAAmB,CACjC,CACF,CACF,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;EACX,CAAC;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Business, Icon, Part } from '../../types';\nimport { getPartPrice, getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-product',\n styleUrl: 'hemfixarna-product.scss',\n shadow: false,\n})\nexport class HemfixarnaProduct {\n @State() amount: number = 0;\n @State() hideDescription: boolean = true;\n @Element() private el: HTMLElement;\n\n addProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n productInCart.amount++;\n state.cart = [...state.cart];\n } else {\n state.cart = [\n ...state.cart,\n {\n id: state.selectedProduct.ID,\n rut: state.selectedProduct.rut,\n rot: state.selectedProduct.rot,\n green: state.selectedProduct.green,\n amount: 1,\n parts: [],\n price: state.selectedProduct.price,\n name: state.selectedProduct.title,\n start_fee: !state.selectedProduct.hide_start_fee,\n terms_checkout: state.selectedProduct.terms_checkout,\n icon: state.selectedProduct.icon,\n start_fee_obj: state.selectedProduct.start_fee_obj,\n },\n ];\n }\n }\n\n removeProduct() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart && productInCart.amount > 1) {\n productInCart.amount--;\n state.cart = [...state.cart];\n } else {\n state.cart = state.cart.filter(p => p.id !== state.selectedProduct.ID);\n }\n }\n\n //Handle cart and parts\n addPart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart) {\n partInCart.amount++;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = [...productInCart.parts, { id: part.ID, amount: 1, price: part.price, name: part.title ?? part.title }];\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n removePart(part: Part) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partInCart = productInCart.parts.find(sp => sp.id === part.ID);\n if (partInCart && partInCart.amount > 1) {\n partInCart.amount--;\n productInCart.parts = [...productInCart.parts];\n } else {\n productInCart.parts = productInCart.parts.filter(sp => sp.id !== part.ID);\n }\n state.cart = [...state.cart.filter(p => p.id !== productInCart.id), productInCart];\n }\n }\n\n goToCart() {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n state.step = 5;\n const el = this.el.closest('.hemfixarna_content');\n scrollToTop(el);\n }\n }\n\n getAmount() {\n return state.cart.find(p => p.id === state.selectedProduct.ID)?.amount || 0;\n }\n\n getPartAmount(partId: number) {\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n return productInCart?.parts.find(sp => sp.id === partId)?.amount || 0;\n }\n\n getTotalPrice() {\n let price = 0;\n const productInCart = state.cart.find(p => p.id === state.selectedProduct.ID);\n if (productInCart) {\n const partsPrice = productInCart.parts.reduce((acc, curr) => {\n const part = state.selectedProduct.parts.find(p => p.ID === curr.id);\n if (part) {\n return acc + part.price * curr.amount;\n }\n return acc;\n }, 0);\n price = state.selectedProduct.price * productInCart.amount + partsPrice;\n } else {\n price = state.selectedProduct.price;\n }\n return getProductPrice(state.selectedProduct, price);\n }\n\n componentDidRender() {\n const linkElem = document.createElement('link');\n linkElem.setAttribute('rel', 'stylesheet');\n linkElem.setAttribute('href', 'https://painting-frontend.vercel.app/static/css/main.css');\n const fonts = document.createElement('link');\n fonts.setAttribute('rel', 'stylesheet');\n fonts.setAttribute('href', 'https://painting-frontend.vercel.app/fonts.css');\n\n const checkAndInjectCSS = () => {\n const parents = this.el.getElementsByTagName('hemfixare-calculator');\n if (parents.length > 0 && parents[0].shadowRoot !== null) {\n parents[0].shadowRoot.appendChild(linkElem);\n parents[0].shadowRoot.appendChild(fonts);\n } else {\n setTimeout(checkAndInjectCSS, 1);\n }\n };\n\n checkAndInjectCSS();\n }\n\n render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n const plus = getAssetPath(`./assets/plus.svg`);\n const minus = getAssetPath(`./assets/minus.svg`);\n\n if (state.maleri) {\n return (\n <div class=\"hemfixarna_painting\">\n <script\n type=\"text/javascript\"\n src={\n ['localhost', 'vercel'].some(v => window.location.href.includes(v))\n ? 'https://painting-dev.vercel.app/static/js/main.js'\n : 'https://painting-frontend.vercel.app/static/js/main.js'\n }\n defer\n async\n ></script>\n <hemfixare-calculator\n title={state.options.maleri_title}\n subtitle={state.options.maleri_text}\n modal=\"true\"\n customer={state.business === Business.string ? 'string' : state.business}\n ></hemfixare-calculator>\n </div>\n );\n }\n\n return state.selectedProduct ? (\n <div class=\"hemfixarna_product\">\n <div class=\"hemfixarna_product--top\">\n {state.selectedProduct.icon && (\n <img width={80} src={(state.selectedProduct.icon as Icon).url ?? (state.selectedProduct.icon as string)} alt={state.selectedProduct.title} />\n )}\n <div>\n <h1>{state.selectedProduct.title}</h1>\n {!state.selectedProduct.invoice ? <h2>{getProductPrice(state.selectedProduct)} kr/st</h2> : <h2>{state.selectedProduct.invoice_price}</h2>}\n </div>\n </div>\n\n <div class=\"hemfixarna_product--grid\">\n <div class=\"hemfixarna_product--left\">\n {state.selectedProduct.list?.length && (\n <ul class=\"hemfixarna_features\">\n {state.selectedProduct.list.map(l => (\n <li key={l.bullet}>\n <img src={checked} alt=\"checked\" />\n <p>{l.bullet}</p>\n </li>\n ))}\n </ul>\n )}\n {state.selectedProduct.description && (\n <p\n onClick={() => (this.hideDescription = false)}\n class={`hemfixarna_description ${this.hideDescription ? 'hemfixarna_description--hidden' : ''}`}\n innerHTML={state.selectedProduct.description}\n ></p>\n )}\n </div>\n <div class=\"hemfixarna_product--right\">\n {state.selectedProduct.invoice ? (\n <hemfixarna-invoice />\n ) : (\n <Fragment>\n <ul>\n <li class=\"hemfixarna_product--item\">\n <div>\n <p>{state.selectedProduct.title}</p>\n <p class=\"hemfixarna_product--price\">{getProductPrice(state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removeProduct()} />\n <span>{this.getAmount()}</span>\n <img src={plus} onClick={() => this.addProduct()} />\n </div>\n </li>\n {state.selectedProduct.parts?.length &&\n state.selectedProduct.parts.map(p => (\n <li class=\"hemfixarna_part\">\n <div>\n <p>{p.title ?? p.title}</p>\n <p class=\"hemfixarna_product--price\">{getPartPrice(p, state.selectedProduct)}kr/st</p>\n </div>\n <div class=\"hemfixarna_counter\">\n <img class={`${this.getPartAmount(p.ID) === 0 ? 'disabled' : ''}`} src={minus} onClick={() => this.removePart(p)} />\n <span>{this.getPartAmount(p.ID)}</span>\n <img class={`${this.getAmount() === 0 ? 'disabled' : ''}`} src={plus} onClick={() => this.addPart(p)} />\n </div>\n </li>\n ))}\n </ul>\n <h4 class=\"hemfixarna_product--total\">Totalt {this.getTotalPrice()} kr</h4>\n <button onClick={() => this.goToCart()} class={`hemfixarna_buy ${this.getAmount() === 0 ? 'disabled' : ''}`}>\n Fortsätt\n </button>\n </Fragment>\n )}\n {!state.selectedProduct.hide_start_fee && state.selectedProduct.start_fee_obj?.title && (\n <p class=\"hemfixarna_terms\">\n <strong>{state.selectedProduct.start_fee_obj.title}</strong>\n <br />\n <span innerHTML={state.selectedProduct.start_fee_obj.description}></span>\n </p>\n )}\n {state.options && <hemfixarna-info />}\n </div>\n </div>\n </div>\n ) : null;\n }\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createStore } from '@stencil/store';\nimport { OnChangeHandler } from '@stencil/store/dist/types';\nimport { Business, CartItem, Category, Customer, CustomerCategory, CustomerSubCategory, GreenOptions, Product, RotOptions, RutOptions, Service, User, WpOptions } from '../types';\nimport { CreditSafeUser } from '../types/felixtypes';\n\ntype StateType = {\n step: number;\n selectedCategory: Category | null;\n selectedService: Service | null;\n selectedProduct: Product | null;\n cart: Array<CartItem>;\n business: Business | 'undefined';\n options: WpOptions | null;\n rut: boolean;\n rot: boolean;\n green: boolean;\n token: string | null;\n checkoutStep: number;\n checkoutEdit: boolean;\n user: User | null;\n creditSafeUser: CreditSafeUser | null;\n modal: {\n title?: string;\n text: string
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createStore } from '@stencil/store';\nimport { OnChangeHandler } from '@stencil/store/dist/types';\nimport { Business, CartItem, Category, Customer, CustomerCategory, CustomerSubCategory, GreenOptions, Product, RotOptions, RutOptions, Service, User, WpOptions } from '../types';\nimport { CreditSafeUser } from '../types/felixtypes';\n\ntype StateType = {\n step: number;\n selectedCategory: Category | null;\n selectedService: Service | null;\n selectedProduct: Product | null;\n cart: Array<CartItem>;\n business: Business | 'undefined';\n options: WpOptions | null;\n rut: boolean;\n rot: boolean;\n green: boolean;\n token: string | null;\n checkoutStep: number;\n checkoutEdit: boolean;\n user: User | null;\n creditSafeUser: CreditSafeUser | null;\n modal: {\n title?: string;\n text: string;\n } | null;\n rutOptions: RutOptions | null;\n rotOptions: RotOptions | null;\n greenOptions: GreenOptions | null;\n customer: Customer | null;\n selectedCustomerCategory: CustomerCategory | CustomerSubCategory | null;\n parentCategory: CustomerCategory | CustomerSubCategory;\n checkoutInvoice: boolean;\n maleri: boolean;\n selectSource: boolean;\n showSourcePasswordPrompt: boolean;\n};\n\nconst {\n state,\n onChange,\n}: {\n state: StateType;\n onChange: OnChangeHandler<StateType>;\n} = createStore({\n step: 1,\n checkoutStep: 1,\n checkoutEdit: false,\n selectedCategory: null,\n selectedService: null,\n selectedProduct: null,\n cart: [],\n business: 'undefined',\n options: null,\n rut: true,\n rot: true,\n green: true,\n token: null,\n user: null,\n modal: null,\n rutOptions: null,\n rotOptions: null,\n greenOptions: null,\n customer: null,\n selectedCustomerCategory: null,\n parentCategory: null,\n creditSafeUser: null,\n checkoutInvoice: false,\n maleri: false,\n sources: null,\n selectSource: false,\n showSourcePasswordPrompt: false,\n});\n\nonChange('cart', cart => {\n window.sessionStorage.setItem(`hemfixarna-${state.business}-cart`, JSON.stringify(cart));\n});\n\nonChange('user', user => {\n window.sessionStorage.setItem(`hemfixarna-${state.business}-user`, JSON.stringify(user));\n});\n\nonChange('creditSafeUser', user => {\n window.sessionStorage.setItem(`hemfixarna-${state.business}-creditSafeUser`, JSON.stringify(user));\n});\n\nonChange('selectSource', selectSource => {\n if (selectSource) {\n localStorage.setItem('select_source', 'true');\n }\n});\n\nonChange('selectedProduct', product => {\n if (!state.customer || !product) return;\n const categories = [...state.customer.categories, ...state.customer.categories.map(c => c.sub_categories ?? [])].flat();\n const category = categories.find(c => c && c.id === product.category);\n if (category) {\n state.parentCategory = category;\n return;\n }\n state.parentCategory = null;\n});\n\nonChange('selectedCustomerCategory', category => {\n if (!state.customer || !category) return;\n if ((category as CustomerSubCategory).parent) {\n const parent = state.customer.categories.find(c => c.id === (category as CustomerSubCategory).parent);\n if (parent) {\n state.parentCategory = parent;\n return;\n }\n }\n state.parentCategory = null;\n});\n\nexport default state;\n"]}
|
@@ -24,6 +24,8 @@ export var Business;
|
|
24
24
|
Business["traningspartner"] = "traningspartner";
|
25
25
|
Business["superfront"] = "superfront";
|
26
26
|
Business["inet"] = "inet";
|
27
|
+
Business["design24"] = "design24";
|
28
|
+
Business["netatonce"] = "netatonce";
|
27
29
|
})(Business || (Business = {}));
|
28
30
|
export var WidgetStyle;
|
29
31
|
(function (WidgetStyle) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAN,IAAY,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAN,IAAY,QAwBX;AAxBD,WAAY,QAAQ;EAClB,yBAAa,CAAA;EACb,+BAAmB,CAAA;EACnB,+BAAmB,CAAA;EACnB,uCAA2B,CAAA;EAC3B,iCAAqB,CAAA;EACrB,iCAAqB,CAAA;EACrB,yBAAa,CAAA;EACb,yBAAa,CAAA;EACb,4BAAgB,CAAA;EAChB,mCAAuB,CAAA;EACvB,2CAA+B,CAAA;EAC/B,6BAAiB,CAAA;EACjB,2BAAe,CAAA;EACf,2BAAe,CAAA;EACf,qCAAyB,CAAA;EACzB,qBAAS,CAAA;EACT,uCAA2B,CAAA;EAC3B,2BAAe,CAAA;EACf,+CAAmC,CAAA;EACnC,qCAAyB,CAAA;EACzB,yBAAa,CAAA;EACb,iCAAqB,CAAA;EACrB,mCAAuB,CAAA;AACzB,CAAC,EAxBW,QAAQ,KAAR,QAAQ,QAwBnB;AAqMD,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;EACrB,oCAAqB,CAAA;EACrB,0CAA2B,CAAA;EAC3B,8CAA+B,CAAA;EAC/B,8CAA+B,CAAA;AACjC,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAN,IAAY,WAEX;AAFD,WAAY,WAAW;EACrB,wCAAyB,CAAA;AAC3B,CAAC,EAFW,WAAW,KAAX,WAAW,QAEtB","sourcesContent":["// Match slug with partner slug in wp admin\n// Dont forget to add the partners url to cors for creditsafe\n// https://bitbucket.org/afonso-sweden/creditsafe-lookup/src/main/api/index.ts\n\nexport enum Business {\n kund = 'kund',\n byggmax = 'byggmax',\n skanska = 'skanska',\n string = 'string-furniture',\n hornbach = 'hornbach',\n forebygg = 'forebygg',\n doro = 'doro',\n elfa = 'elfa',\n kbygg = 'k-bygg',\n norrgavel = 'norrgavel',\n fargvaruhuset = 'fargvaruhuset',\n zaptec = 'zaptec',\n tesla = 'tesla',\n klint = 'klint',\n flyttsmart = 'flyttsmart',\n lg = 'lg',\n sparfonster = 'sparfonster',\n power = 'power',\n traningspartner = 'traningspartner',\n superfront = 'superfront',\n inet = 'inet',\n design24 = 'design24',\n netatonce = 'netatonce',\n}\n\ntype Icon = {\n url: string;\n};\n\ninterface Customer {\n ID: number;\n post_title: string;\n post_name: string;\n post_type: string;\n filter: string;\n categories: CustomerCategory[];\n logo?: Icon;\n partner_url?: string;\n at_hemfixarna: boolean;\n info_title: string;\n widget_title?: string;\n info_text: string;\n checkout_title: string;\n checkout_trust_badges: { text: string }[];\n trust_badges: { text: string }[];\n source?: Source;\n password_protected: boolean;\n}\n\ninterface CustomerCategory {\n id: string;\n name: string;\n widget_title?: string;\n icon: string;\n show_products: boolean;\n products: { fields: Product }[] | false;\n sub_categories: CustomerSubCategory[] | false;\n add_painting: boolean;\n}\n\ninterface CustomerSubCategory {\n id: string;\n name: string;\n widget_title?: string;\n icon: string;\n products: { fields: Product }[];\n parent: string;\n add_painting: boolean;\n}\n\ninterface Part {\n ID: number;\n post_author: number;\n post_date: Date;\n post_date_gmt: Date;\n post_content: string;\n post_title: string;\n post_excerpt: string;\n post_status: string;\n comment_status: string;\n ping_status: string;\n post_password: string;\n post_name: string;\n to_ping: string;\n pinged: string;\n post_modified: Date;\n post_modified_gmt: Date;\n post_content_filtered: string;\n post_parent: 0 | 1;\n guid: string;\n menu_order: 0;\n post_type: string;\n post_mime_type: string;\n comment_count: number;\n filter: string;\n price: number;\n title: string;\n}\n\ninterface Product {\n ID: number;\n post_author: string;\n post_date: Date;\n post_date_gmt: Date;\n post_content: string;\n post_title: string;\n post_excerpt: string;\n post_status: string;\n comment_status: string;\n ping_status: string;\n post_password: string;\n post_name: string;\n to_ping: string;\n pinged: string;\n post_modified: Date;\n post_modified_gmt: Date;\n post_content_filtered: string;\n post_parent: 0;\n guid: string;\n menu_order: 0;\n post_type: string;\n post_mime_type: string;\n comment_count: 0;\n filter: string;\n price: number;\n icon?: Icon | string;\n parts?: Array<Part>;\n list: Array<{ bullet: string }>;\n terms: string;\n terms_checkout: string;\n terms_show_checkbox: boolean;\n rut: boolean;\n rot: boolean;\n green: boolean;\n hide_start_fee: boolean;\n description: string;\n category: string;\n title: string;\n invoice: string;\n invoice_price: string;\n invoice_description?: string;\n start_fee_obj: StartFee | null;\n}\n\ninterface Service {\n ID: 41857;\n icon?: Icon | string;\n post_author: 34419;\n post_date: Date;\n post_date_gmt: Date;\n post_content: string;\n post_title: string;\n post_excerpt: string;\n post_status: string;\n comment_status: string;\n ping_status: string;\n post_password: string;\n post_name: string;\n to_ping: string;\n pinged: string;\n post_modified: Date;\n post_modified_gmt: Date;\n post_content_filtered: string;\n post_parent: 0;\n guid: string;\n menu_order: 0;\n post_type: 'service';\n post_mime_type: string;\n comment_count: 0;\n filter: string;\n products: Array<Product>;\n}\n\ninterface Category {\n count: number;\n description: string;\n name: string;\n icon?: Icon | string;\n parent: 0 | 1;\n slug: string;\n taxonomy: 'service_cat';\n term_group: 0 | 1;\n term_id: number;\n term_order: string;\n term_taxonomy_id: number;\n sub_cats?: Array<Category>;\n services?: Array<Service>;\n}\n\ninterface WpOptions {\n link: { title: string; url: string };\n trust: { trust_badge: string }[];\n thank_you_image: string;\n start_fee: number;\n terms: string;\n maleri_title: string;\n maleri_text: string;\n}\ninterface CartPart {\n id: number;\n amount: number;\n price: number;\n name: string;\n}\n\ninterface CartItem {\n id: number;\n price: number;\n name: string;\n amount: number;\n parts: CartPart[];\n rut: boolean;\n rot: boolean;\n green: boolean;\n start_fee: boolean;\n terms_checkout: string;\n icon?: Icon | string;\n start_fee_obj: StartFee | null;\n}\n\nexport enum WidgetStyle {\n standard = 'standard',\n alternative = 'alternative',\n alternative_2 = 'alternative_2',\n alternative_3 = 'alternative_3',\n}\n\nexport enum TopCategory {\n byggmax = 'category/bygg',\n}\n\ninterface User {\n email: string;\n phone: string;\n ssn: string;\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n}\n\ninterface RutOptions {\n rut_start_fee_heading: string;\n rut_start_fee_text: string;\n rut_start_fee_text_secondary: string;\n}\n\ninterface RotOptions {\n rot_start_fee_heading: string;\n rot_start_fee_text: string;\n rot_start_fee_text_secondary: string;\n}\n\ninterface GreenOptions {\n green_start_fee_heading: string;\n green_start_fee_text: string;\n green_start_fee_text_secondary: string;\n}\n\ninterface SubSource {\n 'recordId': string;\n 'So_SubSource::Sus01_Name': string;\n 'So_SubSource::_id': string;\n 'So_SubSource::_id_Source': string;\n 'modId': string;\n}\n\ninterface FieldData {\n _id: string;\n So01_Name: string;\n So457_Aktiv_ac: number;\n So40_WebSubSource: string | number;\n So39_WebSource: number;\n rec_id: number;\n}\n\ninterface Source {\n fieldData: FieldData;\n sub_sources: SubSource[];\n}\n\ninterface SourcesRespone {\n dataInfo: {\n database: string;\n layout: string;\n table: string;\n totalRecordCount: number;\n foundCount: number;\n returnedCount: number;\n };\n data: Source[];\n}\n\ninterface StartFee {\n ID: number;\n title: string;\n price: number;\n pop_up: string | null;\n discount_type: string | null;\n description: string;\n}\n\nexport type {\n CartItem,\n CartPart,\n Category,\n Customer,\n CustomerCategory,\n CustomerSubCategory,\n GreenOptions,\n Icon,\n Part,\n Product,\n RotOptions,\n RutOptions,\n Service,\n Source,\n SourcesRespone,\n StartFee,\n User,\n WpOptions,\n};\n"]}
|
@@ -60,10 +60,57 @@ const getPartPrice = (part, product, amount = 1) => {
|
|
60
60
|
else if (product.rut && state.rut) {
|
61
61
|
return getRutPrice(part.price * amount);
|
62
62
|
}
|
63
|
+
else if (product.green && state.green) {
|
64
|
+
return getGreenPrice(part.price * amount);
|
65
|
+
}
|
63
66
|
else {
|
64
67
|
return part.price * amount;
|
65
68
|
}
|
66
69
|
};
|
70
|
+
const groupCartItemsByStartFee = (cart) => {
|
71
|
+
return cart.reduce((groups, item) => {
|
72
|
+
var _a;
|
73
|
+
const startFeeID = ((_a = item.start_fee_obj) === null || _a === void 0 ? void 0 : _a.ID) || null;
|
74
|
+
if (!groups[startFeeID]) {
|
75
|
+
groups[startFeeID] = [];
|
76
|
+
}
|
77
|
+
groups[startFeeID].push(item);
|
78
|
+
return groups;
|
79
|
+
}, {});
|
80
|
+
};
|
81
|
+
const calculateStartFee = (cart = state.cart) => {
|
82
|
+
const uniqueStartFees = new Set();
|
83
|
+
let totalRut = 0;
|
84
|
+
let totalRot = 0;
|
85
|
+
let totalGreen = 0;
|
86
|
+
let totalDefault = 0;
|
87
|
+
cart.forEach(item => {
|
88
|
+
const startFee = item.start_fee_obj;
|
89
|
+
if (startFee && !uniqueStartFees.has(startFee.ID)) {
|
90
|
+
uniqueStartFees.add(startFee.ID);
|
91
|
+
if (item.rut) {
|
92
|
+
totalRut += state.rut ? getRutPrice(startFee.price) : startFee.price;
|
93
|
+
}
|
94
|
+
if (item.rot) {
|
95
|
+
totalRot += state.rot ? getRotPrice(startFee.price) : startFee.price;
|
96
|
+
}
|
97
|
+
if (item.green) {
|
98
|
+
totalGreen += state.green ? getGreenPrice(startFee.price) : startFee.price;
|
99
|
+
}
|
100
|
+
if (!item.rut && !item.rot && !item.green) {
|
101
|
+
totalDefault += startFee.price;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
});
|
105
|
+
const appliedDiscounts = [totalRut > 0, totalRot > 0, totalGreen > 0];
|
106
|
+
return {
|
107
|
+
rut: totalRut,
|
108
|
+
rot: totalRot,
|
109
|
+
green: totalGreen,
|
110
|
+
default: totalDefault,
|
111
|
+
length: appliedDiscounts.filter(Boolean).length,
|
112
|
+
};
|
113
|
+
};
|
67
114
|
const getStartFee = () => {
|
68
115
|
if (!state.cart)
|
69
116
|
return { rut: 0, rot: 0, green: 0 };
|
@@ -93,7 +140,7 @@ const getItemPrice = (item) => {
|
|
93
140
|
const calculateRot = () => {
|
94
141
|
const totalWithRot = state.cart.reduce((acc, curr) => {
|
95
142
|
return curr.rot ? acc + getItemPrice(curr) : acc;
|
96
|
-
}, 0) +
|
143
|
+
}, 0) + calculateStartFee().rot;
|
97
144
|
const totalWithoutRot = state.cart.reduce((acc, curr) => {
|
98
145
|
const partsPrice = curr.parts.reduce((acc, curr) => {
|
99
146
|
return acc + curr.price * curr.amount;
|
@@ -105,7 +152,7 @@ const calculateRot = () => {
|
|
105
152
|
const calculateRut = () => {
|
106
153
|
const totalWithRut = state.cart.reduce((acc, curr) => {
|
107
154
|
return curr.rut ? acc + getItemPrice(curr) : acc;
|
108
|
-
}, 0) +
|
155
|
+
}, 0) + calculateStartFee().rut;
|
109
156
|
const totalWithoutRut = state.cart.reduce((acc, curr) => {
|
110
157
|
const partsPrice = curr.parts.reduce((acc, curr) => {
|
111
158
|
return acc + curr.price * curr.amount;
|
@@ -117,7 +164,7 @@ const calculateRut = () => {
|
|
117
164
|
const calculateGreenDiscount = () => {
|
118
165
|
const totalWithGreen = state.cart.reduce((acc, curr) => {
|
119
166
|
return curr.green ? acc + getItemPrice(curr) : acc;
|
120
|
-
}, 0) +
|
167
|
+
}, 0) + calculateStartFee().green;
|
121
168
|
const totalWithoutGreen = state.cart.reduce((acc, curr) => {
|
122
169
|
const partsPrice = curr.parts.reduce((acc, curr) => {
|
123
170
|
return acc + curr.price * curr.amount;
|
@@ -127,7 +174,7 @@ const calculateGreenDiscount = () => {
|
|
127
174
|
return totalWithoutGreen - totalWithGreen;
|
128
175
|
};
|
129
176
|
const getTotalPrice = () => {
|
130
|
-
return state.cart.reduce((acc, curr) => acc + getItemPrice(curr), 0) +
|
177
|
+
return state.cart.reduce((acc, curr) => acc + getItemPrice(curr), 0) + calculateStartFee().rot + calculateStartFee().rut + calculateStartFee().green + calculateStartFee().default;
|
131
178
|
};
|
132
|
-
export { calculateGreenDiscount, calculateRot, calculateRut, getGreenPrice, getItemPrice, getPartPrice, getProductPrice, getProductPriceWithRotAndRut, getRotPrice, getRotStartFee, getRutPrice, getRutStartFee, getStartFee, getTotalPrice, };
|
179
|
+
export { calculateGreenDiscount, calculateRot, calculateRut, getGreenPrice, getItemPrice, getPartPrice, getProductPrice, getProductPriceWithRotAndRut, getRotPrice, getRotStartFee, getRutPrice, getRutStartFee, getStartFee, getTotalPrice, groupCartItemsByStartFee, calculateStartFee };
|
133
180
|
//# sourceMappingURL=calc.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"calc.js","sourceRoot":"","sources":["../../src/utils/calc.ts"],"names":[],"mappings":"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","sourcesContent":["import state from '../store';\nimport { CartItem, CartPart, Part, Product } from '../types';\n\nconst getRutPrice = (price: number) => {\n return Math.ceil(price / 2);\n};\n\nconst getRotPrice = (price: number) => {\n return Math.ceil(price * 0.7);\n};\n\nconst getGreenPrice = (price: number) => {\n return Math.ceil(price * 0.5);\n};\n\nconst getRutStartFee = () => {\n if (!state.options) return 448;\n if (state.rut) {\n return getRutPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getRotStartFee = () => {\n if (!state.options) return 448;\n if (state.rot) {\n return getRotPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getProductPrice = (product: Product | CartItem, price?: number, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice((price || product.price) * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice((price || product.price) * amount);\n } else if (product.green && state.green) {\n return getGreenPrice((price || product.price) * amount);\n } else {\n return (price || product.price) * amount;\n }\n};\n\nconst getProductPriceWithRotAndRut = (product: Product) => {\n if (product.rot) {\n return getRotPrice(product.price);\n } else if (product.rut && state.rut) {\n return getRutPrice(product.price);\n } else {\n return product.price;\n }\n};\n\nconst getPartPrice = (part: Part | CartPart, product: Product | CartItem, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice(part.price * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice(part.price * amount);\n } else {\n return part.price * amount;\n }\n};\n\nconst getStartFee = () => {\n if (!state.cart) return { rut: 0, rot: 0, green: 0 };\n const hasRut = state.cart.some(item => item.rut && item.start_fee);\n const hasRot = state.cart.some(item => item.rot && item.start_fee);\n const hasGreen = state.cart.some(item => item.green && item.start_fee);\n const rutPrice = state.rut ? getRutPrice(state.options.start_fee) : state.options.start_fee * 1;\n const rotPrice = state.rot ? getRotPrice(state.options.start_fee) : state.options.start_fee * 1;\n const greenPrice = state.green ? getGreenPrice(state.options.start_fee) : state.options.start_fee * 1;\n return { rut: hasRut ? rutPrice : 0, rot: hasRot ? rotPrice : 0, green: hasGreen ? greenPrice : 0, length: [hasRut, hasRot, hasGreen].filter(d => d).length };\n // if (hasRut && hasRot) {\n // return { rut: rutPrice, rot: rotPrice, length: 2 };\n // } else if (hasRut) {\n // return { rut: rutPrice, rot: 0, length: 1 };\n // } else if (hasRot) {\n // return { rut: 0, rot: rotPrice, length: 1 };\n // } else {\n // return { rut: 0, rot: 0, length: 0 };\n // }\n};\n\nconst getItemPrice = (item: CartItem) => {\n const partsPrice = item.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return getProductPrice(item, item.price * item.amount + partsPrice);\n};\n\nconst calculateRot = () => {\n const totalWithRot =\n state.cart.reduce((acc, curr) => {\n return curr.rot ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().rot;\n const totalWithoutRot =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rot ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRot - totalWithRot;\n};\n\nconst calculateRut = () => {\n const totalWithRut =\n state.cart.reduce((acc, curr) => {\n return curr.rut ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().rut;\n const totalWithoutRut =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rut ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRut - totalWithRut;\n};\n\nconst calculateGreenDiscount = () => {\n const totalWithGreen =\n state.cart.reduce((acc, curr) => {\n return curr.green ? acc + getItemPrice(curr) : acc;\n }, 0) + getStartFee().green;\n const totalWithoutGreen =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.green ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutGreen - totalWithGreen;\n};\n\nconst getTotalPrice = () => {\n return state.cart.reduce((acc, curr) => acc + getItemPrice(curr), 0) + getStartFee().rot + getStartFee().rut;\n};\n\nexport {\n calculateGreenDiscount,\n calculateRot,\n calculateRut,\n getGreenPrice,\n getItemPrice,\n getPartPrice,\n getProductPrice,\n getProductPriceWithRotAndRut,\n getRotPrice,\n getRotStartFee,\n getRutPrice,\n getRutStartFee,\n getStartFee,\n getTotalPrice,\n};\n"]}
|
1
|
+
{"version":3,"file":"calc.js","sourceRoot":"","sources":["../../src/utils/calc.ts"],"names":[],"mappings":"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","sourcesContent":["import state from '../store';\nimport { CartItem, CartPart, Part, Product } from '../types';\n\nconst getRutPrice = (price: number) => {\n return Math.ceil(price / 2);\n};\n\nconst getRotPrice = (price: number) => {\n return Math.ceil(price * 0.7);\n};\n\nconst getGreenPrice = (price: number) => {\n return Math.ceil(price * 0.5);\n};\n\nconst getRutStartFee = () => {\n if (!state.options) return 448;\n if (state.rut) {\n return getRutPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getRotStartFee = () => {\n if (!state.options) return 448;\n if (state.rot) {\n return getRotPrice(state.options.start_fee);\n } else {\n return state.options.start_fee;\n }\n};\n\nconst getProductPrice = (product: Product | CartItem, price?: number, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice((price || product.price) * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice((price || product.price) * amount);\n } else if (product.green && state.green) {\n return getGreenPrice((price || product.price) * amount);\n } else {\n return (price || product.price) * amount;\n }\n};\n\nconst getProductPriceWithRotAndRut = (product: Product) => {\n if (product.rot) {\n return getRotPrice(product.price);\n } else if (product.rut && state.rut) {\n return getRutPrice(product.price);\n } else {\n return product.price;\n }\n};\n\nconst getPartPrice = (part: Part | CartPart, product: Product | CartItem, amount: number = 1) => {\n if (product.rot && state.rot) {\n return getRotPrice(part.price * amount);\n } else if (product.rut && state.rut) {\n return getRutPrice(part.price * amount);\n } else if (product.green && state.green) {\n return getGreenPrice(part.price * amount);\n } else {\n return part.price * amount;\n }\n};\n\n\nconst groupCartItemsByStartFee = (cart: CartItem[]) => {\n return cart.reduce((groups, item) => {\n const startFeeID = item.start_fee_obj?.ID || null;\n if (!groups[startFeeID]) {\n groups[startFeeID] = [];\n }\n groups[startFeeID].push(item);\n return groups;\n }, {} as Record<string, CartItem[]>);\n};\n\nconst calculateStartFee = (cart: CartItem[] = state.cart) => {\n const uniqueStartFees = new Set<number>();\n let totalRut = 0;\n let totalRot = 0;\n let totalGreen = 0;\n let totalDefault = 0;\n\n cart.forEach(item => {\n const startFee = item.start_fee_obj;\n if (startFee && !uniqueStartFees.has(startFee.ID)) {\n uniqueStartFees.add(startFee.ID);\n\n if (item.rut) {\n totalRut += state.rut ? getRutPrice(startFee.price) : startFee.price;\n }\n if (item.rot) {\n totalRot += state.rot ? getRotPrice(startFee.price) : startFee.price;\n }\n if (item.green) {\n totalGreen += state.green ? getGreenPrice(startFee.price) : startFee.price;\n }\n if (!item.rut && !item.rot && !item.green) {\n totalDefault += startFee.price;\n }\n }\n });\n\n const appliedDiscounts = [totalRut > 0, totalRot > 0, totalGreen > 0];\n return {\n rut: totalRut,\n rot: totalRot,\n green: totalGreen,\n default: totalDefault,\n length: appliedDiscounts.filter(Boolean).length,\n };\n};\n\nconst getStartFee = () => {\n if (!state.cart) return { rut: 0, rot: 0, green: 0 };\n const hasRut = state.cart.some(item => item.rut && item.start_fee);\n const hasRot = state.cart.some(item => item.rot && item.start_fee);\n const hasGreen = state.cart.some(item => item.green && item.start_fee);\n const rutPrice = state.rut ? getRutPrice(state.options.start_fee) : state.options.start_fee * 1;\n const rotPrice = state.rot ? getRotPrice(state.options.start_fee) : state.options.start_fee * 1;\n const greenPrice = state.green ? getGreenPrice(state.options.start_fee) : state.options.start_fee * 1;\n return { rut: hasRut ? rutPrice : 0, rot: hasRot ? rotPrice : 0, green: hasGreen ? greenPrice : 0, length: [hasRut, hasRot, hasGreen].filter(d => d).length };\n // if (hasRut && hasRot) {\n // return { rut: rutPrice, rot: rotPrice, length: 2 };\n // } else if (hasRut) {\n // return { rut: rutPrice, rot: 0, length: 1 };\n // } else if (hasRot) {\n // return { rut: 0, rot: rotPrice, length: 1 };\n // } else {\n // return { rut: 0, rot: 0, length: 0 };\n // }\n};\n\nconst getItemPrice = (item: CartItem) => {\n const partsPrice = item.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return getProductPrice(item, item.price * item.amount + partsPrice);\n};\n\nconst calculateRot = () => {\n const totalWithRot =\n state.cart.reduce((acc, curr) => {\n return curr.rot ? acc + getItemPrice(curr) : acc;\n }, 0) + calculateStartFee().rot;\n const totalWithoutRot =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rot ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRot - totalWithRot;\n};\n\nconst calculateRut = () => {\n const totalWithRut =\n state.cart.reduce((acc, curr) => {\n return curr.rut ? acc + getItemPrice(curr) : acc;\n }, 0) + calculateStartFee().rut;\n const totalWithoutRut =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.rut ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutRut - totalWithRut;\n};\n\nconst calculateGreenDiscount = () => {\n const totalWithGreen =\n state.cart.reduce((acc, curr) => {\n return curr.green ? acc + getItemPrice(curr) : acc;\n }, 0) + calculateStartFee().green;\n const totalWithoutGreen =\n state.cart.reduce((acc, curr) => {\n const partsPrice = curr.parts.reduce((acc, curr) => {\n return acc + curr.price * curr.amount;\n }, 0);\n return curr.green ? acc + curr.price * curr.amount + partsPrice : acc;\n }, 0) + Number(state.options.start_fee);\n return totalWithoutGreen - totalWithGreen;\n};\n\nconst getTotalPrice = () => {\n return state.cart.reduce((acc, curr) => acc + getItemPrice(curr), 0) + calculateStartFee().rot + calculateStartFee().rut + calculateStartFee().green + calculateStartFee().default;\n};\n\nexport {\n calculateGreenDiscount,\n calculateRot,\n calculateRut,\n getGreenPrice,\n getItemPrice,\n getPartPrice,\n getProductPrice,\n getProductPriceWithRotAndRut,\n getRotPrice,\n getRotStartFee,\n getRutPrice,\n getRutStartFee,\n getStartFee,\n getTotalPrice,\n groupCartItemsByStartFee,\n calculateStartFee\n};\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"felixApi.js","sourceRoot":"","sources":["../../src/utils/felixApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAAG,GAAG,SAAS,EAAE,gBAAgB,CAAC;
|
1
|
+
{"version":3,"file":"felixApi.js","sourceRoot":"","sources":["../../src/utils/felixApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAAG,GAAG,SAAS,EAAE,gBAAgB,CAAC;AA6C5C,MAAM,UAAU,GAAG,KAAK,EAAE,UAAsB,EAAE,EAAE;EAClD,IAAI;IACF,OAAO,MAAM,aAAa,CAcxB,GAAG,IAAI,eAAe,EAAE;MACxB,MAAM,EAAE,MAAM;MACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;MAChC,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;OACnC;KACF,CAAC,CAAC;GACJ;EAAC,OAAO,KAAK,EAAE;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;GACpB;AACH,CAAC,CAAC;AAEF,OAAO,EAAc,UAAU,EAAE,CAAC","sourcesContent":["import { fetchWithType } from './api';\nimport { getApiUrl } from './enviroment';\n\nconst base = `${getApiUrl()}/wp-json/felix`;\n\ninterface FelixOrder {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n ssn: string;\n email: string;\n phone: string;\n url: string;\n date: string;\n notes?: string;\n wws?: string;\n referral_id?: string;\n id_source?: string;\n id_sub_source?: string;\n products: {\n id: string;\n name: string;\n quantity: number;\n rut: number;\n rot: number;\n }[];\n start_fees: {\n ID: number;\n price: number;\n rut: number;\n rot: number;\n green: number;\n }[];\n creditSafe: {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n };\n felixStatus?: 'success' | 'error';\n customer?: string;\n seller_id?: string;\n refferal_id?: string;\n}\n\nconst postPerson = async (felixOrder: FelixOrder) => {\n try {\n return await fetchWithType<\n | {\n response: {\n scriptResult: string;\n scriptError: string;\n };\n messages: [\n {\n code: string;\n message: string;\n },\n ];\n }\n | false\n >(`${base}/createperson`, {\n method: 'POST',\n body: JSON.stringify(felixOrder),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { FelixOrder, postPerson };\n"]}
|