hemfixarna-web-components 1.3.5 → 1.3.7

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.
Files changed (86) hide show
  1. package/dist/cjs/{hemfixarna-address_22.cjs.entry.js → hemfixarna-address_24.cjs.entry.js} +201 -33
  2. package/dist/{esm/hemfixarna-address_22.entry.js.map → cjs/hemfixarna-address_24.cjs.entry.js.map} +1 -1
  3. package/dist/cjs/hemfixarna-components.cjs.js +2 -2
  4. package/dist/cjs/{index-d9e286dc.js → index-83c1daf2.js} +5 -1
  5. package/dist/{esm/index-9863db6c.js.map → cjs/index-83c1daf2.js.map} +1 -1
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/collection/assets/drag-drop.svg +3 -0
  8. package/dist/collection/collection-manifest.json +10 -8
  9. package/dist/collection/components/{hemfixarna-byggmax → customers/hemfixarna-byggmax}/hemfixarna-byggmax.js +2 -2
  10. package/dist/collection/components/customers/hemfixarna-byggmax/hemfixarna-byggmax.js.map +1 -0
  11. package/dist/collection/components/{hemfixarna-doro → customers/hemfixarna-doro}/hemfixarna-doro.js +2 -2
  12. package/dist/collection/components/customers/hemfixarna-doro/hemfixarna-doro.js.map +1 -0
  13. package/dist/collection/components/customers/hemfixarna-elfa/hemfixarna-elfa.js +123 -0
  14. package/dist/collection/components/customers/hemfixarna-elfa/hemfixarna-elfa.js.map +1 -0
  15. package/dist/collection/components/{hemfixarna-forebygg → customers/hemfixarna-forebygg}/hemfixarna-forebygg.js +2 -2
  16. package/dist/collection/components/customers/hemfixarna-forebygg/hemfixarna-forebygg.js.map +1 -0
  17. package/dist/collection/components/{hemfixarna-hornbach → customers/hemfixarna-hornbach}/hemfixarna-hornbach.js +2 -2
  18. package/dist/collection/components/customers/hemfixarna-hornbach/hemfixarna-hornbach.js.map +1 -0
  19. package/dist/collection/components/{hemfixarna-kund → customers/hemfixarna-kund}/hemfixarna-kund.js +2 -2
  20. package/dist/collection/components/customers/hemfixarna-kund/hemfixarna-kund.js.map +1 -0
  21. package/dist/collection/components/{hemfixarna-skanska → customers/hemfixarna-skanska}/hemfixarna-skanska.js +2 -2
  22. package/dist/collection/components/customers/hemfixarna-skanska/hemfixarna-skanska.js.map +1 -0
  23. package/dist/collection/components/{hemfixarna-string → customers/hemfixarna-string}/hemfixarna-string-furniture.js +2 -2
  24. package/dist/collection/components/customers/hemfixarna-string/hemfixarna-string-furniture.js.map +1 -0
  25. package/dist/collection/components/customers/hemfixarna-string/hemfixarna-string.css +0 -0
  26. package/dist/collection/components/hemfixarna-box/hemfixarna-box.js +1 -1
  27. package/dist/collection/components/hemfixarna-box/hemfixarna-box.js.map +1 -1
  28. package/dist/collection/components/hemfixarna-category.tsx/hemfixarna-category.js.map +1 -1
  29. package/dist/collection/components/hemfixarna-component/hemfixarna-component.js +5 -5
  30. package/dist/collection/components/hemfixarna-component/hemfixarna-component.js.map +1 -1
  31. package/dist/collection/components/hemfixarna-demo/hemfixarna-demo.js +1 -1
  32. package/dist/collection/components/hemfixarna-demo/hemfixarna-demo.js.map +1 -1
  33. package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.css +76 -0
  34. package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.js +164 -0
  35. package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.js.map +1 -0
  36. package/dist/collection/components/hemfixarna-order/hemfixarna-order.js +1 -1
  37. package/dist/collection/components/hemfixarna-order/hemfixarna-order.js.map +1 -1
  38. package/dist/collection/components/hemfixarna-product/hemfixarna-product.js +3 -3
  39. package/dist/collection/components/hemfixarna-product/hemfixarna-product.js.map +1 -1
  40. package/dist/collection/components/hemfixarna-service/hemfixarna-service.js +1 -1
  41. package/dist/collection/components/hemfixarna-service/hemfixarna-service.js.map +1 -1
  42. package/dist/collection/components/hemfixarna-start/hemfixarna-start.js.map +1 -1
  43. package/dist/collection/store/index.js +1 -0
  44. package/dist/collection/store/index.js.map +1 -1
  45. package/dist/collection/types/index.js +1 -0
  46. package/dist/collection/types/index.js.map +1 -1
  47. package/dist/esm/{hemfixarna-address_22.entry.js → hemfixarna-address_24.entry.js} +197 -31
  48. package/dist/{cjs/hemfixarna-address_22.cjs.entry.js.map → esm/hemfixarna-address_24.entry.js.map} +1 -1
  49. package/dist/esm/hemfixarna-components.js +3 -3
  50. package/dist/esm/{index-9863db6c.js → index-1fd61928.js} +5 -1
  51. package/dist/{cjs/index-d9e286dc.js.map → esm/index-1fd61928.js.map} +1 -1
  52. package/dist/esm/loader.js +3 -3
  53. package/dist/hemfixarna-components/assets/drag-drop.svg +3 -0
  54. package/dist/hemfixarna-components/hemfixarna-components.esm.js +1 -1
  55. package/dist/hemfixarna-components/{p-62a7c1a2.js → p-33d37833.js} +3 -3
  56. package/dist/hemfixarna-components/p-e1950643.entry.js +2 -0
  57. package/dist/types/components/{hemfixarna-byggmax → customers/hemfixarna-byggmax}/hemfixarna-byggmax.d.ts +1 -1
  58. package/dist/types/components/{hemfixarna-doro → customers/hemfixarna-doro}/hemfixarna-doro.d.ts +1 -1
  59. package/dist/types/components/customers/hemfixarna-elfa/hemfixarna-elfa.d.ts +9 -0
  60. package/dist/types/components/{hemfixarna-forebygg → customers/hemfixarna-forebygg}/hemfixarna-forebygg.d.ts +1 -1
  61. package/dist/types/components/{hemfixarna-hornbach → customers/hemfixarna-hornbach}/hemfixarna-hornbach.d.ts +1 -1
  62. package/dist/types/components/{hemfixarna-kund → customers/hemfixarna-kund}/hemfixarna-kund.d.ts +1 -1
  63. package/dist/types/components/{hemfixarna-skanska → customers/hemfixarna-skanska}/hemfixarna-skanska.d.ts +1 -1
  64. package/dist/types/components/{hemfixarna-string → customers/hemfixarna-string}/hemfixarna-string-furniture.d.ts +1 -1
  65. package/dist/types/components/hemfixarna-demo/hemfixarna-demo.d.ts +1 -1
  66. package/dist/types/components/hemfixarna-invoice/hemfixarna-invoice.d.ts +17 -0
  67. package/dist/types/components.d.ts +36 -0
  68. package/dist/types/store/index.d.ts +1 -0
  69. package/dist/types/types/index.d.ts +6 -1
  70. package/package.json +1 -1
  71. package/dist/collection/components/hemfixarna-byggmax/hemfixarna-byggmax.js.map +0 -1
  72. package/dist/collection/components/hemfixarna-doro/hemfixarna-doro.js.map +0 -1
  73. package/dist/collection/components/hemfixarna-forebygg/hemfixarna-forebygg.js.map +0 -1
  74. package/dist/collection/components/hemfixarna-hornbach/hemfixarna-hornbach.js.map +0 -1
  75. package/dist/collection/components/hemfixarna-kund/hemfixarna-kund.js.map +0 -1
  76. package/dist/collection/components/hemfixarna-skanska/hemfixarna-skanska.js.map +0 -1
  77. package/dist/collection/components/hemfixarna-string/hemfixarna-string-furniture.js.map +0 -1
  78. package/dist/hemfixarna-components/p-d5da3c5b.entry.js +0 -2
  79. /package/dist/collection/components/{hemfixarna-byggmax → customers/hemfixarna-byggmax}/hemfixarna-byggmax.css +0 -0
  80. /package/dist/collection/components/{hemfixarna-doro → customers/hemfixarna-doro}/hemfixarna-doro.css +0 -0
  81. /package/dist/collection/components/{hemfixarna-forebygg/hemfixarna-forebygg.css → customers/hemfixarna-elfa/hemfixarna-elfa.css} +0 -0
  82. /package/dist/collection/components/{hemfixarna-hornbach/hemfixarna-hornbach.css → customers/hemfixarna-forebygg/hemfixarna-forebygg.css} +0 -0
  83. /package/dist/collection/components/{hemfixarna-skanska/hemfixarna-skanska.css → customers/hemfixarna-hornbach/hemfixarna-hornbach.css} +0 -0
  84. /package/dist/collection/components/{hemfixarna-string/hemfixarna-string.css → customers/hemfixarna-skanska/hemfixarna-skanska.css} +0 -0
  85. /package/dist/hemfixarna-components/{p-62a7c1a2.js.map → p-33d37833.js.map} +0 -0
  86. /package/dist/hemfixarna-components/{p-d5da3c5b.entry.js.map → p-e1950643.entry.js.map} +0 -0
@@ -109,7 +109,7 @@ export class MyComponent {
109
109
  }
110
110
  render() {
111
111
  const copy = getAssetPath(`./assets/copy.png`);
112
- return (h("div", null, h("div", null, h("div", { onClick: () => this.copyExample(), class: "hemfixarna_example" }, h("p", null, this.getExample()), h("img", { src: copy, height: 20 }), h("span", { class: "hemfixarna_example--tooltip" }, this.tooltipText)), process.env.BUSINESS === Business.byggmax && (h("hemfixarna-byggmax", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, forceOldTree: Boolean(process.env.FORCE_OLD_TREE), slug: this.selectedSlug, id: this.selectedID })), process.env.BUSINESS === Business.skanska && (h("hemfixarna-skanska", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.string && (h("hemfixarna-string-furniture", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.hornbach && (h("hemfixarna-hornbach", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.forebygg && (h("hemfixarna-forebygg", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.doro && (h("hemfixarna-doro", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.kund && (h("hemfixarna-kund", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), h("div", { class: "hemfixarna_install" }, h("div", { onClick: () => this.copyCdn(), class: "hemfixarna_example" }, h("p", null, this.cdnLink), h("span", { class: "hemfixarna_example--tooltip" }, this.tooltipText), h("img", { src: copy, height: 20 }))), h("div", { class: "hemfixarna_widgetstyles" }, h("h5", null, "Widget styles"), h("div", null, Object.values(WidgetStyle).map(style => (h("label", { key: style }, h("input", { type: "radio", value: style, checked: this.widgetStyle === style, onChange: () => (this.widgetStyle = style) }), style)))), h("div", null, h("div", null, h("h5", null, "Button background color"), h("input", { type: "text", value: this.buttonBg, onInput: e => (this.buttonBg = e.target.value) })), h("div", null, h("h5", null, "Button text color"), h("input", { type: "text", value: this.buttonColor, onInput: e => (this.buttonColor = e.target.value) })))), h("span", null, "Write an hexa code no # needed"), this.colorAccessibility ? (h("div", null, h("h5", null, "Tillg\u00E4nglighetsrapport"), h("div", null, h("strong", null, "Liten text:"), h("span", { style: { color: this.getColor(this.colorAccessibility.small) } }, this.colorAccessibility.small), h("br", null), h("strong", null, "Fet text:"), h("span", { style: { color: this.getColor(this.colorAccessibility.bold) } }, this.colorAccessibility.bold), h("br", null), h("strong", null, "Stor text:"), h("span", { style: { color: this.getColor(this.colorAccessibility.large) } }, this.colorAccessibility.large), h("br", null), h("strong", null, "Kontrastf\u00F6rh\u00E5llande:"), " ", this.colorAccessibility.contrast))) : null), h("ul", { class: "hemfixarna_categories" }, this.customer ? (h("div", null, this.customer.categories.map(c => (h("li", null, h("div", { class: "hemfixarna_categories--label hemfixarna_categories--label--big" }, h("div", null, h("p", null, c.name), h("span", null, `c-${c.id}`)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(`c-${c.id}`) }, "Kopiera ID"), h("button", { onClick: () => (this.selectedID = `c-${c.id}`) }, "Ladda kategori"))), c.show_products && c.products ? (h("ul", null, c.products.map(p => (h("li", null, h("div", { class: "hemfixarna_categories--label hemfixarna_product--label" }, h("div", null, h("p", null, p.fields.post_title), h("span", null, p.fields.ID)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(String(p.fields.ID)) }, "Kopiera ID"), h("button", { onClick: () => (this.selectedID = String(p.fields.ID)) }, "Ladda produkt")))))))) : (h("ul", null, c.sub_categories &&
112
+ return (h("div", null, h("div", null, h("div", { onClick: () => this.copyExample(), class: "hemfixarna_example" }, h("p", null, this.getExample()), h("img", { src: copy, height: 20 }), h("span", { class: "hemfixarna_example--tooltip" }, this.tooltipText)), process.env.BUSINESS === Business.byggmax && (h("hemfixarna-byggmax", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, forceOldTree: Boolean(process.env.FORCE_OLD_TREE), slug: this.selectedSlug, id: this.selectedID })), process.env.BUSINESS === Business.skanska && (h("hemfixarna-skanska", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.string && (h("hemfixarna-string-furniture", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.hornbach && (h("hemfixarna-hornbach", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.forebygg && (h("hemfixarna-forebygg", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.doro && (h("hemfixarna-doro", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.elfa && (h("hemfixarna-elfa", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), process.env.BUSINESS === Business.kund && (h("hemfixarna-kund", { buttonColor: this.buttonColor, buttonBg: this.buttonBg, widgetStyle: this.widgetStyle, id: this.selectedID })), h("div", { class: "hemfixarna_install" }, h("div", { onClick: () => this.copyCdn(), class: "hemfixarna_example" }, h("p", null, this.cdnLink), h("span", { class: "hemfixarna_example--tooltip" }, this.tooltipText), h("img", { src: copy, height: 20 }))), h("div", { class: "hemfixarna_widgetstyles" }, h("h5", null, "Widget styles"), h("div", null, Object.values(WidgetStyle).map(style => (h("label", { key: style }, h("input", { type: "radio", value: style, checked: this.widgetStyle === style, onChange: () => (this.widgetStyle = style) }), style)))), h("div", null, h("div", null, h("h5", null, "Button background color"), h("input", { type: "text", value: this.buttonBg, onInput: e => (this.buttonBg = e.target.value) })), h("div", null, h("h5", null, "Button text color"), h("input", { type: "text", value: this.buttonColor, onInput: e => (this.buttonColor = e.target.value) })))), h("span", null, "Write an hexa code no # needed"), this.colorAccessibility ? (h("div", null, h("h5", null, "Tillg\u00E4nglighetsrapport"), h("div", null, h("strong", null, "Liten text:"), h("span", { style: { color: this.getColor(this.colorAccessibility.small) } }, this.colorAccessibility.small), h("br", null), h("strong", null, "Fet text:"), h("span", { style: { color: this.getColor(this.colorAccessibility.bold) } }, this.colorAccessibility.bold), h("br", null), h("strong", null, "Stor text:"), h("span", { style: { color: this.getColor(this.colorAccessibility.large) } }, this.colorAccessibility.large), h("br", null), h("strong", null, "Kontrastf\u00F6rh\u00E5llande:"), " ", this.colorAccessibility.contrast))) : null), h("ul", { class: "hemfixarna_categories" }, this.customer ? (h("div", null, this.customer.categories.map(c => (h("li", null, h("div", { class: "hemfixarna_categories--label hemfixarna_categories--label--big" }, h("div", null, h("p", null, c.name), h("span", null, `c-${c.id}`)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(`c-${c.id}`) }, "Kopiera ID"), h("button", { onClick: () => (this.selectedID = `c-${c.id}`) }, "Ladda kategori"))), c.show_products && c.products ? (h("ul", null, c.products.map(p => (h("li", null, h("div", { class: "hemfixarna_categories--label hemfixarna_product--label" }, h("div", null, h("p", null, p.fields.post_title), h("span", null, p.fields.ID)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(String(p.fields.ID)) }, "Kopiera ID"), h("button", { onClick: () => (this.selectedID = String(p.fields.ID)) }, "Ladda produkt")))))))) : (h("ul", null, c.sub_categories &&
113
113
  c.sub_categories.map(sc => (h("li", null, h("div", { class: "hemfixarna_categories--label" }, h("div", null, h("p", null, sc.name), h("span", null, `c-${sc.id}`)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(`c-${sc.id}`) }, "Kopiera ID"), h("button", { onClick: () => (this.selectedID = `c-${sc.id}`) }, "Ladda kategori"))), h("ul", null, sc.products.map(p => (h("li", null, h("div", { class: "hemfixarna_categories--label hemfixarna_product--label" }, h("div", null, h("p", null, p.fields.post_title), h("span", null, p.fields.ID)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(String(p.fields.ID)) }, "Kopiera ID"), h("button", { onClick: () => (this.selectedID = String(p.fields.ID)) }, "Ladda produkt"))))))))))))))))) : this.tree ? (h("div", null, this.tree.sub_cats.map(c => (h("li", null, h("div", { class: "hemfixarna_categories--label hemfixarna_categories--label--big" }, h("div", null, h("p", null, c.name), h("span", null, `category/${c.slug}`)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(`category/${c.slug}`) }, "Kopiera slug"), h("button", { onClick: () => (this.selectedSlug = `category/${c.slug}`) }, "Ladda kategori"))), h("ul", null, c.services.map(sc => (h("li", null, h("div", { class: "hemfixarna_categories--label" }, h("div", null, h("p", null, sc.post_title), h("span", null, `service/${sc.post_name}`)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(`service/${sc.post_name}`) }, "Kopiera slug"), h("button", { onClick: () => (this.selectedSlug = `service/${sc.post_name}`) }, "Ladda kategori"))), h("ul", null, sc.products.map(sc => (h("li", null, h("div", { class: "hemfixarna_categories--label" }, h("div", null, h("p", null, sc.post_title), h("span", null, `product/${sc.post_name}`)), h("div", null, h("button", { onClick: () => navigator.clipboard.writeText(`product/${sc.post_name}`) }, "Kopiera slug"), h("button", { onClick: () => (this.selectedSlug = `product/${sc.post_name}`) }, "Ladda kategori")))))))))))))))) : null)));
114
114
  }
115
115
  static get is() { return "hemfixarna-demo"; }
@@ -1 +1 @@
1
- {"version":3,"file":"hemfixarna-demo.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-demo/hemfixarna-demo.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, Watch, getAssetPath, h } from '@stencil/core';\nimport { Business, Category, Customer, TopCategory, WidgetStyle } from '../../types';\nimport { getCustomer, getTaxonomy } from '../../utils/api';\n\ninterface ColorAccessibility {\n small: string;\n bold: string;\n large: string;\n overall: string;\n contrast: string;\n}\n\n@Component({\n tag: 'hemfixarna-demo',\n styleUrl: 'hemfixarna-demo.scss',\n shadow: true,\n})\nexport class MyComponent {\n @State() selectedSlug: string;\n @State() selectedID: string;\n @State() tooltipText: string = 'Kopiera till urklipp';\n @State() tree: Category | null = null;\n @State() customer: Customer | null = null;\n @State() widgetStyle: WidgetStyle = WidgetStyle.standard;\n @State() buttonBg: string = '';\n @State() buttonColor: string = '';\n @State() colorAccessibility?: ColorAccessibility = undefined;\n private debounce?: number = null;\n\n @Watch('buttonBg')\n @Watch('buttonColor')\n debouncedFunction() {\n if (this.debounce !== null) {\n clearTimeout(this.debounce);\n this.debounce = null;\n }\n\n this.debounce = window.setTimeout(() => {\n this.checkColorAccessibility();\n this.debounce = null;\n }, 1500);\n }\n\n async checkColorAccessibility() {\n const defaultTextColor = '#fff';\n const defaultBgColor = '#c84e18';\n const firstColor = this.buttonBg.length ? (this.buttonBg.startsWith('#') ? this.buttonBg : `#${this.buttonBg}`) : defaultBgColor;\n const secondColor = this.buttonColor.length ? (this.buttonColor.startsWith('#') ? this.buttonColor : `#${this.buttonColor}`) : defaultTextColor;\n fetch('https://www.aremycolorsaccessible.com/api/are-they', {\n mode: 'cors',\n method: 'POST',\n body: JSON.stringify({ colors: [firstColor, secondColor] }),\n })\n .then(response => response.json())\n .then(json => {\n console.log(json);\n if (json && (json satisfies ColorAccessibility)) {\n this.colorAccessibility = json;\n }\n });\n // Your color accessibility logic here\n }\n\n getTopLevelCategory() {\n switch (process.env.BUSINESS as Business) {\n case Business.byggmax:\n return TopCategory.byggmax;\n default:\n return '';\n }\n }\n\n getColor(rating: string) {\n switch (rating) {\n case 'AAA':\n return 'green';\n case 'AA':\n return 'orange';\n case 'A':\n return 'yellow';\n case 'Fail':\n return 'red';\n default:\n return 'black';\n }\n }\n\n async componentWillLoad() {\n if (process.env.FORCE_OLD_TREE) {\n const tree = await getTaxonomy(this.getTopLevelCategory());\n if ((tree as any)?.code === 'not_found') {\n // console.warn('tree not found');\n } else if (tree) {\n this.tree = tree as Category;\n }\n } else {\n const customer = await getCustomer(process.env.BUSINESS);\n if (customer.code !== 'not_found' && customer) {\n this.customer = customer;\n }\n }\n }\n\n getExample() {\n return `<hemfixarna-${process.env.BUSINESS}${this.selectedSlug ? ` slug=\"${this.selectedSlug}\" ` : ''}${this.selectedID ? ` id=\"${this.selectedID}\" ` : ''} ${\n this.widgetStyle === WidgetStyle.standard ? '' : `widgetStyle=\"${this.widgetStyle}\"`\n } ${this.buttonColor.length ? `buttonColor=\"${this.buttonColor}\"` : ''} ${this.buttonBg.length ? `buttonBg=\"${this.buttonBg}\"` : ''}></hemfixarna-${process.env.BUSINESS}>`;\n }\n\n copyExample() {\n navigator.clipboard.writeText(this.getExample());\n this.tooltipText = 'Snippet kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n cdnLink = '<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm//hemfixarna-web-components@latest/dist/hemfixarna-components/hemfixarna-components.esm.js\"></script>';\n\n copyCdn() {\n navigator.clipboard.writeText(this.cdnLink);\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n copyNpmInstall() {\n navigator.clipboard.writeText('npm i hemfixarna-web-components');\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n render() {\n const copy = getAssetPath(`./assets/copy.png`);\n\n return (\n <div>\n <div>\n <div onClick={() => this.copyExample()} class=\"hemfixarna_example\">\n <p>{this.getExample()}</p>\n <img src={copy} height={20} />\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n </div>\n {(process.env.BUSINESS as Business) === Business.byggmax && (\n <hemfixarna-byggmax\n buttonColor={this.buttonColor}\n buttonBg={this.buttonBg}\n widgetStyle={this.widgetStyle}\n forceOldTree={Boolean(process.env.FORCE_OLD_TREE)}\n slug={this.selectedSlug}\n id={this.selectedID}\n />\n )}\n {(process.env.BUSINESS as Business) === Business.skanska && (\n <hemfixarna-skanska buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.string && (\n <hemfixarna-string-furniture buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.hornbach && (\n <hemfixarna-hornbach buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.forebygg && (\n <hemfixarna-forebygg buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.doro && (\n <hemfixarna-doro buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.kund && (\n <hemfixarna-kund buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n <div class=\"hemfixarna_install\">\n <div onClick={() => this.copyCdn()} class=\"hemfixarna_example\">\n <p>{this.cdnLink}</p>\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n <img src={copy} height={20} />\n </div>\n </div>\n <div class=\"hemfixarna_widgetstyles\">\n <h5>Widget styles</h5>\n <div>\n {Object.values(WidgetStyle).map(style => (\n <label key={style}>\n <input type=\"radio\" value={style} checked={this.widgetStyle === style} onChange={() => (this.widgetStyle = style)} />\n {style}\n </label>\n ))}\n </div>\n <div>\n <div>\n <h5>Button background color</h5>\n <input type=\"text\" value={this.buttonBg} onInput={e => (this.buttonBg = (e.target as HTMLInputElement).value)} />\n </div>\n <div>\n <h5>Button text color</h5>\n <input type=\"text\" value={this.buttonColor} onInput={e => (this.buttonColor = (e.target as HTMLInputElement).value)} />\n </div>\n </div>\n </div>\n <span>Write an hexa code no # needed</span>\n {this.colorAccessibility ? (\n <div>\n <h5>Tillgänglighetsrapport</h5>\n <div>\n <strong>Liten text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.small) }}>{this.colorAccessibility.small}</span>\n <br />\n <strong>Fet text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.bold) }}>{this.colorAccessibility.bold}</span>\n <br />\n <strong>Stor text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.large) }}>{this.colorAccessibility.large}</span>\n <br />\n <strong>Kontrastförhållande:</strong> {this.colorAccessibility.contrast}\n </div>\n </div>\n ) : null}\n </div>\n <ul class=\"hemfixarna_categories\">\n {this.customer ? (\n <div>\n {this.customer.categories.map(c => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>{c.name}</p>\n <span>{`c-${c.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${c.id}`)}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = `c-${c.id}`)}>Ladda kategori</button>\n </div>\n </div>\n {c.show_products && c.products ? (\n <ul>\n {c.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.post_title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n </div>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <ul>\n {c.sub_categories &&\n c.sub_categories.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.name}</p>\n <span>{`c-${sc.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${sc.id}`)}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = `c-${sc.id}`)}>Ladda kategori</button>\n </div>\n </div>\n <ul>\n {sc.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.post_title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </div>\n ) : this.tree ? (\n <div>\n {this.tree.sub_cats.map(c => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>{c.name}</p>\n <span>{`category/${c.slug}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`category/${c.slug}`)}>Kopiera slug</button>\n <button onClick={() => (this.selectedSlug = `category/${c.slug}`)}>Ladda kategori</button>\n </div>\n </div>\n <ul>\n {c.services.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.post_title}</p>\n <span>{`service/${sc.post_name}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`service/${sc.post_name}`)}>Kopiera slug</button>\n <button onClick={() => (this.selectedSlug = `service/${sc.post_name}`)}>Ladda kategori</button>\n </div>\n </div>\n <ul>\n {sc.products.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.post_title}</p>\n <span>{`product/${sc.post_name}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`product/${sc.post_name}`)}>Kopiera slug</button>\n <button onClick={() => (this.selectedSlug = `product/${sc.post_name}`)}>Ladda kategori</button>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </div>\n ) : null}\n </ul>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"hemfixarna-demo.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-demo/hemfixarna-demo.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, Watch, getAssetPath, h } from '@stencil/core';\nimport { Business, Category, Customer, TopCategory, WidgetStyle } from '../../types';\nimport { getCustomer, getTaxonomy } from '../../utils/api';\n\ninterface ColorAccessibility {\n small: string;\n bold: string;\n large: string;\n overall: string;\n contrast: string;\n}\n\n@Component({\n tag: 'hemfixarna-demo',\n styleUrl: 'hemfixarna-demo.scss',\n shadow: true,\n})\nexport class MyComponent {\n @State() selectedSlug: string;\n @State() selectedID: string;\n @State() tooltipText: string = 'Kopiera till urklipp';\n @State() tree: Category | null = null;\n @State() customer: Customer | null = null;\n @State() widgetStyle: WidgetStyle = WidgetStyle.standard;\n @State() buttonBg: string = '';\n @State() buttonColor: string = '';\n @State() colorAccessibility?: ColorAccessibility = undefined;\n private debounce?: number = null;\n\n @Watch('buttonBg')\n @Watch('buttonColor')\n debouncedFunction() {\n if (this.debounce !== null) {\n clearTimeout(this.debounce);\n this.debounce = null;\n }\n\n this.debounce = window.setTimeout(() => {\n this.checkColorAccessibility();\n this.debounce = null;\n }, 1500);\n }\n\n async checkColorAccessibility() {\n const defaultTextColor = '#fff';\n const defaultBgColor = '#c84e18';\n const firstColor = this.buttonBg.length ? (this.buttonBg.startsWith('#') ? this.buttonBg : `#${this.buttonBg}`) : defaultBgColor;\n const secondColor = this.buttonColor.length ? (this.buttonColor.startsWith('#') ? this.buttonColor : `#${this.buttonColor}`) : defaultTextColor;\n fetch('https://www.aremycolorsaccessible.com/api/are-they', {\n mode: 'cors',\n method: 'POST',\n body: JSON.stringify({ colors: [firstColor, secondColor] }),\n })\n .then(response => response.json())\n .then(json => {\n console.log(json);\n if (json && (json satisfies ColorAccessibility)) {\n this.colorAccessibility = json;\n }\n });\n // Your color accessibility logic here\n }\n\n getTopLevelCategory() {\n switch (process.env.BUSINESS as Business) {\n case Business.byggmax:\n return TopCategory.byggmax;\n default:\n return '';\n }\n }\n\n getColor(rating: string) {\n switch (rating) {\n case 'AAA':\n return 'green';\n case 'AA':\n return 'orange';\n case 'A':\n return 'yellow';\n case 'Fail':\n return 'red';\n default:\n return 'black';\n }\n }\n\n async componentWillLoad() {\n if (process.env.FORCE_OLD_TREE) {\n const tree = await getTaxonomy(this.getTopLevelCategory());\n if ((tree as any)?.code === 'not_found') {\n // console.warn('tree not found');\n } else if (tree) {\n this.tree = tree as Category;\n }\n } else {\n const customer = await getCustomer(process.env.BUSINESS);\n if (customer.code !== 'not_found' && customer) {\n this.customer = customer;\n }\n }\n }\n\n getExample() {\n return `<hemfixarna-${process.env.BUSINESS}${this.selectedSlug ? ` slug=\"${this.selectedSlug}\" ` : ''}${this.selectedID ? ` id=\"${this.selectedID}\" ` : ''} ${\n this.widgetStyle === WidgetStyle.standard ? '' : `widgetStyle=\"${this.widgetStyle}\"`\n } ${this.buttonColor.length ? `buttonColor=\"${this.buttonColor}\"` : ''} ${this.buttonBg.length ? `buttonBg=\"${this.buttonBg}\"` : ''}></hemfixarna-${process.env.BUSINESS}>`;\n }\n\n copyExample() {\n navigator.clipboard.writeText(this.getExample());\n this.tooltipText = 'Snippet kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n cdnLink = '<script type=\"module\" src=\"https://cdn.jsdelivr.net/npm//hemfixarna-web-components@latest/dist/hemfixarna-components/hemfixarna-components.esm.js\"></script>';\n\n copyCdn() {\n navigator.clipboard.writeText(this.cdnLink);\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n copyNpmInstall() {\n navigator.clipboard.writeText('npm i hemfixarna-web-components');\n this.tooltipText = 'Text kopierad';\n setTimeout(() => {\n this.tooltipText = 'Kopiera till urklipp';\n }, 2000);\n }\n\n render() {\n const copy = getAssetPath(`./assets/copy.png`);\n\n return (\n <div>\n <div>\n <div onClick={() => this.copyExample()} class=\"hemfixarna_example\">\n <p>{this.getExample()}</p>\n <img src={copy} height={20} />\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n </div>\n {(process.env.BUSINESS as Business) === Business.byggmax && (\n <hemfixarna-byggmax\n buttonColor={this.buttonColor}\n buttonBg={this.buttonBg}\n widgetStyle={this.widgetStyle}\n forceOldTree={Boolean(process.env.FORCE_OLD_TREE)}\n slug={this.selectedSlug}\n id={this.selectedID}\n />\n )}\n {(process.env.BUSINESS as Business) === Business.skanska && (\n <hemfixarna-skanska buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.string && (\n <hemfixarna-string-furniture buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.hornbach && (\n <hemfixarna-hornbach buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.forebygg && (\n <hemfixarna-forebygg buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.doro && (\n <hemfixarna-doro buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.elfa && (\n <hemfixarna-elfa buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n {(process.env.BUSINESS as Business) === Business.kund && (\n <hemfixarna-kund buttonColor={this.buttonColor} buttonBg={this.buttonBg} widgetStyle={this.widgetStyle} id={this.selectedID} />\n )}\n <div class=\"hemfixarna_install\">\n <div onClick={() => this.copyCdn()} class=\"hemfixarna_example\">\n <p>{this.cdnLink}</p>\n <span class=\"hemfixarna_example--tooltip\">{this.tooltipText}</span>\n <img src={copy} height={20} />\n </div>\n </div>\n <div class=\"hemfixarna_widgetstyles\">\n <h5>Widget styles</h5>\n <div>\n {Object.values(WidgetStyle).map(style => (\n <label key={style}>\n <input type=\"radio\" value={style} checked={this.widgetStyle === style} onChange={() => (this.widgetStyle = style)} />\n {style}\n </label>\n ))}\n </div>\n <div>\n <div>\n <h5>Button background color</h5>\n <input type=\"text\" value={this.buttonBg} onInput={e => (this.buttonBg = (e.target as HTMLInputElement).value)} />\n </div>\n <div>\n <h5>Button text color</h5>\n <input type=\"text\" value={this.buttonColor} onInput={e => (this.buttonColor = (e.target as HTMLInputElement).value)} />\n </div>\n </div>\n </div>\n <span>Write an hexa code no # needed</span>\n {this.colorAccessibility ? (\n <div>\n <h5>Tillgänglighetsrapport</h5>\n <div>\n <strong>Liten text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.small) }}>{this.colorAccessibility.small}</span>\n <br />\n <strong>Fet text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.bold) }}>{this.colorAccessibility.bold}</span>\n <br />\n <strong>Stor text:</strong>\n <span style={{ color: this.getColor(this.colorAccessibility.large) }}>{this.colorAccessibility.large}</span>\n <br />\n <strong>Kontrastförhållande:</strong> {this.colorAccessibility.contrast}\n </div>\n </div>\n ) : null}\n </div>\n <ul class=\"hemfixarna_categories\">\n {this.customer ? (\n <div>\n {this.customer.categories.map(c => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>{c.name}</p>\n <span>{`c-${c.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${c.id}`)}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = `c-${c.id}`)}>Ladda kategori</button>\n </div>\n </div>\n {c.show_products && c.products ? (\n <ul>\n {c.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.post_title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n </div>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n <ul>\n {c.sub_categories &&\n c.sub_categories.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.name}</p>\n <span>{`c-${sc.id}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`c-${sc.id}`)}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = `c-${sc.id}`)}>Ladda kategori</button>\n </div>\n </div>\n <ul>\n {sc.products.map(p => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_product--label\">\n <div>\n <p>{p.fields.post_title}</p>\n <span>{p.fields.ID}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(String(p.fields.ID))}>Kopiera ID</button>\n <button onClick={() => (this.selectedID = String(p.fields.ID))}>Ladda produkt</button>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </div>\n ) : this.tree ? (\n <div>\n {this.tree.sub_cats.map(c => (\n <li>\n <div class=\"hemfixarna_categories--label hemfixarna_categories--label--big\">\n <div>\n <p>{c.name}</p>\n <span>{`category/${c.slug}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`category/${c.slug}`)}>Kopiera slug</button>\n <button onClick={() => (this.selectedSlug = `category/${c.slug}`)}>Ladda kategori</button>\n </div>\n </div>\n <ul>\n {c.services.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.post_title}</p>\n <span>{`service/${sc.post_name}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`service/${sc.post_name}`)}>Kopiera slug</button>\n <button onClick={() => (this.selectedSlug = `service/${sc.post_name}`)}>Ladda kategori</button>\n </div>\n </div>\n <ul>\n {sc.products.map(sc => (\n <li>\n <div class=\"hemfixarna_categories--label\">\n <div>\n <p>{sc.post_title}</p>\n <span>{`product/${sc.post_name}`}</span>\n </div>\n <div>\n <button onClick={() => navigator.clipboard.writeText(`product/${sc.post_name}`)}>Kopiera slug</button>\n <button onClick={() => (this.selectedSlug = `product/${sc.post_name}`)}>Ladda kategori</button>\n </div>\n </div>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </li>\n ))}\n </div>\n ) : null}\n </ul>\n </div>\n );\n }\n}\n"]}
@@ -0,0 +1,76 @@
1
+ :host .invoice {
2
+ gap: 16px;
3
+ display: grid;
4
+ }
5
+ :host .invoice form > span {
6
+ text-align: center;
7
+ padding: 16px 0;
8
+ }
9
+ :host .invoice img {
10
+ right: unset;
11
+ left: unset;
12
+ position: initial;
13
+ transform: none;
14
+ }
15
+ :host .invoice label {
16
+ cursor: pointer;
17
+ font-size: 14px;
18
+ display: flex;
19
+ align-items: flex-start;
20
+ padding: 16px 0;
21
+ }
22
+ :host .invoice label input {
23
+ margin: 0 5px 0 0;
24
+ accent-color: #ea662c;
25
+ }
26
+ :host .invoice-preview {
27
+ display: flex;
28
+ gap: 4px;
29
+ }
30
+ :host .invoice-preview div {
31
+ position: relative;
32
+ }
33
+ :host .invoice-preview div button {
34
+ position: absolute;
35
+ top: 0;
36
+ right: 0;
37
+ padding: 0;
38
+ }
39
+ :host .invoice-preview div button img {
40
+ width: 24px;
41
+ height: 24px;
42
+ }
43
+ :host .invoice-preview div > img {
44
+ width: 100px;
45
+ height: 80px;
46
+ object-fit: cover;
47
+ }
48
+ :host .invoice input[type=email],
49
+ :host .invoice input[type=tel],
50
+ :host .invoice textarea {
51
+ padding: 16px;
52
+ border: 1px solid #fcd9c9;
53
+ font-size: 16px;
54
+ }
55
+ :host .invoice textarea {
56
+ resize: none;
57
+ height: 200px;
58
+ font-family: "Inter", sans-serif;
59
+ }
60
+ :host .invoice div:has(> input[type=file]) {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: center;
64
+ cursor: pointer;
65
+ background: #fff;
66
+ border: 1px solid #fcd9c9;
67
+ padding: 32px 16px;
68
+ gap: 16px;
69
+ }
70
+ :host .invoice div:has(> input[type=file]) span {
71
+ color: #000;
72
+ font-size: 12px;
73
+ }
74
+ :host .invoice input[type=file] {
75
+ display: none;
76
+ }
@@ -0,0 +1,164 @@
1
+ import { getAssetPath, h } from '@stencil/core';
2
+ import state from '../../store';
3
+ const base = process.env.API_URL ? `${process.env.API_URL}/wp-json/headless` : 'https://hemfixarna.se/wp-json/headless';
4
+ export class HemfixarnaInvoice {
5
+ constructor() {
6
+ this.formError = null;
7
+ this.displayImages = [];
8
+ this.formImages = [];
9
+ this.formState = 'initial';
10
+ }
11
+ isValidEmail(email) {
12
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
13
+ return emailRegex.test(email);
14
+ }
15
+ componentDidRender() {
16
+ const form = this.el.querySelector('form');
17
+ if (form) {
18
+ form.addEventListener('input', () => {
19
+ this.formError = null;
20
+ });
21
+ }
22
+ }
23
+ disconnectedCallback() {
24
+ const form = this.el.querySelector('form');
25
+ if (form) {
26
+ form.removeEventListener('input', () => {
27
+ this.formError = null;
28
+ });
29
+ }
30
+ }
31
+ async submit(e) {
32
+ var _a;
33
+ e.preventDefault();
34
+ this.formState = 'loading';
35
+ this.formError = null;
36
+ const form = e.currentTarget.elements;
37
+ const values = {
38
+ description: form.descriptionInput.value.length ? form.descriptionInput.value : null,
39
+ email: form.emailInput.value.length ? form.emailInput.value : null,
40
+ tel: form.telInput.value.length ? form.telInput.value : null,
41
+ terms: (_a = form.termsInput) === null || _a === void 0 ? void 0 : _a.checked,
42
+ };
43
+ if (!values.description) {
44
+ this.formError = 'Vänligen fyll i formulärtexten';
45
+ this.formState = 'initial';
46
+ return;
47
+ }
48
+ if (!values.email || !this.isValidEmail(values.email)) {
49
+ this.formError = 'Vänligen ange en giltig e-postadress';
50
+ this.formState = 'initial';
51
+ return;
52
+ }
53
+ if (!values.tel) {
54
+ this.formError = 'Vänligen ange ditt telefonnummer';
55
+ this.formState = 'initial';
56
+ return;
57
+ }
58
+ if (state.selectedProduct.terms_show_checkbox && !values.terms) {
59
+ this.formError = 'Vänligen acceptera villkoren';
60
+ this.formState = 'initial';
61
+ return;
62
+ }
63
+ const formData = new FormData();
64
+ formData.append('text', values.description);
65
+ formData.append('email', values.email);
66
+ formData.append('tel', values.tel);
67
+ formData.append('customer', state.business);
68
+ this.formImages.forEach(file => {
69
+ formData.append('images[]', file);
70
+ });
71
+ formData.append('product', JSON.stringify({
72
+ title: state.selectedProduct.post_title,
73
+ amount: 1,
74
+ has_rut: state.selectedProduct.rut,
75
+ has_rot: state.selectedProduct.rot,
76
+ ID: state.selectedProduct.ID,
77
+ parts: [],
78
+ }));
79
+ try {
80
+ const res = await fetch(`${base}/saveinvoiceproduct`, {
81
+ method: 'POST',
82
+ body: formData,
83
+ });
84
+ const { response } = await res.json();
85
+ if (response.code === 200) {
86
+ state.checkoutInvoice = true;
87
+ state.step = 6;
88
+ }
89
+ else {
90
+ this.formError = 'Vi kan inte ta emot din beställning just nu';
91
+ this.formState = 'initial';
92
+ }
93
+ }
94
+ catch (error) {
95
+ this.formError = 'Vi kan inte ta emot din beställning just nu';
96
+ this.formState = 'initial';
97
+ }
98
+ }
99
+ handleImageDrop(e) {
100
+ e.preventDefault();
101
+ const files = e.dataTransfer.files;
102
+ for (let i = 0; i < files.length; i++) {
103
+ const file = files[i];
104
+ if (file.type.startsWith('image/')) {
105
+ const reader = new FileReader();
106
+ reader.onload = () => {
107
+ this.displayImages = [...this.displayImages, reader.result];
108
+ this.formImages = [...this.formImages, file];
109
+ };
110
+ reader.readAsDataURL(file);
111
+ }
112
+ }
113
+ }
114
+ handleFileInputChange(e) {
115
+ e.preventDefault();
116
+ const files = e.target.files;
117
+ for (let i = 0; i < files.length; i++) {
118
+ const file = files[i];
119
+ if (file.type.startsWith('image/')) {
120
+ const reader = new FileReader();
121
+ reader.onload = () => {
122
+ this.displayImages = [...this.displayImages, reader.result];
123
+ this.formImages = [...this.formImages, file];
124
+ };
125
+ reader.readAsDataURL(file);
126
+ }
127
+ }
128
+ }
129
+ handleImageClick() {
130
+ this.el.querySelector('.hemfixarna-file-upload').click();
131
+ }
132
+ preventDragOver(e) {
133
+ e.preventDefault();
134
+ }
135
+ removeImage(index) {
136
+ this.displayImages = this.displayImages.filter((_, i) => i !== index);
137
+ this.formImages = this.formImages.filter((_, i) => i !== index);
138
+ }
139
+ render() {
140
+ const upload = getAssetPath(`./assets/drag-drop.svg`);
141
+ return (h("div", { class: "invoice" }, h("p", null, state.selectedProduct.invoice_description), h("form", { onSubmit: e => this.submit(e) }, h("textarea", { name: "descriptionInput", placeholder: "Beskriv ditt \u00E4rende" }), h("div", { role: "button", "aria-label": "upload image", onDragOver: e => this.preventDragOver(e), onDrop: e => this.handleImageDrop(e), onClick: () => this.handleImageClick() }, h("img", { src: upload, alt: "hemfixarna_logo", width: 24 }), h("div", null, h("p", null, "Bifoga ev bilder"), h("span", null, "(dra bilder hit)")), h("input", { onChange: e => this.handleFileInputChange(e), class: "hemfixarna-file-upload", accept: "image/*", type: "file", multiple: true, name: "fileInput" })), h("div", { class: "invoice-preview" }, this.displayImages.map((img, i) => (h("div", { key: i }, h("img", { src: img, alt: "uploaded image" }), h("button", { onClick: () => this.removeImage(i) }, h("img", { src: getAssetPath(`./assets/close.svg`), alt: "close" })))))), h("input", { placeholder: "E-post", type: "email", name: "emailInput" }), h("input", { placeholder: "Telefonnummer", type: "tel", name: "telInput" }), state.selectedProduct.terms_show_checkbox ? (h("label", null, h("input", { type: "checkbox", name: "termsInput" }), state.selectedProduct.terms)) : null, this.formError ? h("span", null, this.formError) : null, h("input", { type: "submit", value: this.formState === 'loading' ? 'Skickar' : 'Kontakta mig' }))));
142
+ }
143
+ static get is() { return "hemfixarna-invoice"; }
144
+ static get originalStyleUrls() {
145
+ return {
146
+ "$": ["hemfixarna-invoice.scss"]
147
+ };
148
+ }
149
+ static get styleUrls() {
150
+ return {
151
+ "$": ["hemfixarna-invoice.css"]
152
+ };
153
+ }
154
+ static get states() {
155
+ return {
156
+ "formError": {},
157
+ "displayImages": {},
158
+ "formImages": {},
159
+ "formState": {}
160
+ };
161
+ }
162
+ static get elementRef() { return "el"; }
163
+ }
164
+ //# sourceMappingURL=hemfixarna-invoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hemfixarna-invoice.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-invoice/hemfixarna-invoice.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\n\nconst base = process.env.API_URL ? `${process.env.API_URL}/wp-json/headless` : 'https://hemfixarna.se/wp-json/headless';\n\ninterface FormElements extends HTMLCollection {\n descriptionInput: {\n value: string;\n };\n emailInput: {\n value: string;\n };\n telInput: {\n value: string;\n };\n termsInput: {\n checked: boolean;\n };\n}\n\n@Component({\n tag: 'hemfixarna-invoice',\n styleUrl: 'hemfixarna-invoice.scss',\n shadow: false,\n})\nexport class HemfixarnaInvoice {\n @State() formError: string | null = null;\n @Element() private el: HTMLElement;\n @State() displayImages: Array<string | ArrayBuffer> = [];\n @State() formImages: Array<File> = [];\n @State() formState: 'initial' | 'loading' = 'initial';\n\n isValidEmail(email: string) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n }\n\n componentDidRender() {\n const form = this.el.querySelector('form') as HTMLFormElement;\n if (form) {\n form.addEventListener('input', () => {\n this.formError = null;\n });\n }\n }\n\n disconnectedCallback() {\n const form = this.el.querySelector('form') as HTMLFormElement;\n if (form) {\n form.removeEventListener('input', () => {\n this.formError = null;\n });\n }\n }\n\n async submit(e: Event) {\n e.preventDefault();\n this.formState = 'loading';\n this.formError = null;\n const form = (e.currentTarget as HTMLFormElement).elements as FormElements;\n const values = {\n description: form.descriptionInput.value.length ? form.descriptionInput.value : null,\n email: form.emailInput.value.length ? form.emailInput.value : null,\n tel: form.telInput.value.length ? form.telInput.value : null,\n terms: form.termsInput?.checked,\n };\n\n if (!values.description) {\n this.formError = 'Vänligen fyll i formulärtexten';\n this.formState = 'initial';\n return;\n }\n if (!values.email || !this.isValidEmail(values.email)) {\n this.formError = 'Vänligen ange en giltig e-postadress';\n this.formState = 'initial';\n return;\n }\n if (!values.tel) {\n this.formError = 'Vänligen ange ditt telefonnummer';\n this.formState = 'initial';\n return;\n }\n if (state.selectedProduct.terms_show_checkbox && !values.terms) {\n this.formError = 'Vänligen acceptera villkoren';\n this.formState = 'initial';\n return;\n }\n\n const formData = new FormData();\n formData.append('text', values.description);\n formData.append('email', values.email);\n formData.append('tel', values.tel);\n formData.append('customer', state.business);\n\n this.formImages.forEach(file => {\n formData.append('images[]', file);\n });\n\n formData.append(\n 'product',\n JSON.stringify({\n title: state.selectedProduct.post_title,\n amount: 1,\n has_rut: state.selectedProduct.rut,\n has_rot: state.selectedProduct.rot,\n ID: state.selectedProduct.ID,\n parts: [],\n }),\n );\n\n try {\n const res = await fetch(`${base}/saveinvoiceproduct`, {\n method: 'POST',\n body: formData,\n });\n const { response } = await res.json();\n if (response.code === 200) {\n state.checkoutInvoice = true;\n state.step = 6;\n } else {\n this.formError = 'Vi kan inte ta emot din beställning just nu';\n this.formState = 'initial';\n }\n } catch (error) {\n this.formError = 'Vi kan inte ta emot din beställning just nu';\n this.formState = 'initial';\n }\n }\n\n handleImageDrop(e: DragEvent) {\n e.preventDefault();\n const files = e.dataTransfer.files;\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n\n reader.onload = () => {\n this.displayImages = [...this.displayImages, reader.result];\n this.formImages = [...this.formImages, file];\n };\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n handleFileInputChange(e: Event) {\n e.preventDefault();\n const files = (e.target as HTMLInputElement).files;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (file.type.startsWith('image/')) {\n const reader = new FileReader();\n reader.onload = () => {\n this.displayImages = [...this.displayImages, reader.result];\n this.formImages = [...this.formImages, file];\n };\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n handleImageClick() {\n (this.el.querySelector('.hemfixarna-file-upload') as HTMLInputElement).click();\n }\n\n preventDragOver(e: DragEvent) {\n e.preventDefault();\n }\n\n removeImage(index: number) {\n this.displayImages = this.displayImages.filter((_, i) => i !== index);\n this.formImages = this.formImages.filter((_, i) => i !== index);\n }\n\n render() {\n const upload = getAssetPath(`./assets/drag-drop.svg`);\n return (\n <div class=\"invoice\">\n <p>{state.selectedProduct.invoice_description}</p>\n <form onSubmit={e => this.submit(e)}>\n <textarea name=\"descriptionInput\" placeholder=\"Beskriv ditt ärende\" />\n <div role=\"button\" aria-label=\"upload image\" onDragOver={e => this.preventDragOver(e)} onDrop={e => this.handleImageDrop(e)} onClick={() => this.handleImageClick()}>\n <img src={upload} alt=\"hemfixarna_logo\" width={24} />\n <div>\n <p>Bifoga ev bilder</p>\n <span>(dra bilder hit)</span>\n </div>\n <input onChange={e => this.handleFileInputChange(e)} class=\"hemfixarna-file-upload\" accept=\"image/*\" type=\"file\" multiple name=\"fileInput\" />\n </div>\n <div class=\"invoice-preview\">\n {this.displayImages.map((img, i) => (\n <div key={i}>\n <img src={img as string} alt=\"uploaded image\" />\n <button onClick={() => this.removeImage(i)}>\n <img src={getAssetPath(`./assets/close.svg`)} alt=\"close\" />\n </button>\n </div>\n ))}\n </div>\n <input placeholder=\"E-post\" type=\"email\" name=\"emailInput\" />\n <input placeholder=\"Telefonnummer\" type=\"tel\" name=\"telInput\" />\n {state.selectedProduct.terms_show_checkbox ? (\n <label>\n <input type=\"checkbox\" name=\"termsInput\" />\n {state.selectedProduct.terms}\n </label>\n ) : null}\n {this.formError ? <span>{this.formError}</span> : null}\n <input type=\"submit\" value={this.formState === 'loading' ? 'Skickar' : 'Kontakta mig'} />\n </form>\n </div>\n );\n }\n}\n"]}
@@ -3,7 +3,7 @@ import state from '../../store';
3
3
  export class HemfixarnaOrder {
4
4
  constructor() {
5
5
  this.render = () => {
6
- return (h("div", { style: { background: `url(${state.options.thank_you_image})` }, class: "hemfixarna_order" }, h("div", null), h("div", null, h("h2", null, "Tack f\u00F6r din bokning"), h("hemfixarna-orderrows", { tree: this.tree, cart: false }), h("span", { onClick: () => this.resetShop() }, h("button", null, "G\u00F6r en ny bokning")), h("hemfixarna-info", { list: [
6
+ return (h("div", { style: { background: `url(${state.options.thank_you_image})` }, class: "hemfixarna_order" }, h("div", null), h("div", null, h("h2", null, state.checkoutInvoice ? 'Tack för din förfrågan' : 'Tack för din bokning'), state.checkoutInvoice ? h("p", null, "Vi \u00E5terkommer inom kort till dig p\u00E5 angivet telefonnummer eller epost") : null, state.checkoutInvoice ? h("div", null) : h("hemfixarna-orderrows", { tree: this.tree, cart: false }), h("span", { onClick: () => this.resetShop() }, h("button", null, "G\u00F6r en ny bokning")), h("hemfixarna-info", { list: [
7
7
  { trust_badge: 'Du kommer bli kontaktad av en Hemfixare för bokning av tid.' },
8
8
  { trust_badge: 'När jobbet är klart kommer du få en faktura med RUT/ROT-avdrag.' },
9
9
  ] }))));
@@ -1 +1 @@
1
- {"version":3,"file":"hemfixarna-order.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-order/hemfixarna-order.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,MAAM,OAAO,eAAe;;IAgB1B,WAAM,GAAG,GAAG,EAAE;MACZ,OAAO,CACL,WAAK,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,GAAG,EAAE,EAAE,KAAK,EAAC,kBAAkB;QAC3F,cAAW;QACX;UACE,0CAA6B;UAC7B,4BAAsB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAyB;UAC3E,YAAM,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACnC,2CAAkC,CAC7B;UACP,uBACE,IAAI,EAAE;cACJ,EAAE,WAAW,EAAE,6DAA6D,EAAE;cAC9E,EAAE,WAAW,EAAE,iEAAiE,EAAE;aACnF,GACD,CACE,CACF,CACP,CAAC;IACJ,CAAC,CAAC;;;EAhCF,SAAS;IACP,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;EACzB,CAAC;EAED,oBAAoB;IAClB,IAAI,CAAC,SAAS,EAAE,CAAC;EACnB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAsBF","sourcesContent":["import { Component, Prop, h } from '@stencil/core';\nimport state from '../../store';\nimport { Category } from '../../types';\n\n@Component({\n tag: 'hemfixarna-order',\n shadow: false,\n})\nexport class HemfixarnaOrder {\n @Prop() tree: Category;\n\n resetShop() {\n state.step = 1;\n state.cart = [];\n state.selectedCategory = null;\n state.selectedService = null;\n state.selectedProduct = null;\n state.checkoutStep = 1;\n }\n\n disconnectedCallback() {\n this.resetShop();\n }\n\n render = () => {\n return (\n <div style={{ background: `url(${state.options.thank_you_image})` }} class=\"hemfixarna_order\">\n <div></div>\n <div>\n <h2>Tack för din bokning</h2>\n <hemfixarna-orderrows tree={this.tree} cart={false}></hemfixarna-orderrows>\n <span onClick={() => this.resetShop()}>\n <button>Gör en ny bokning</button>\n </span>\n <hemfixarna-info\n list={[\n { trust_badge: 'Du kommer bli kontaktad av en Hemfixare för bokning av tid.' },\n { trust_badge: 'När jobbet är klart kommer du få en faktura med RUT/ROT-avdrag.' },\n ]}\n />\n </div>\n </div>\n );\n };\n}\n"]}
1
+ {"version":3,"file":"hemfixarna-order.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-order/hemfixarna-order.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,MAAM,OAAO,eAAe;;IAgB1B,WAAM,GAAG,GAAG,EAAE;MACZ,OAAO,CACL,WAAK,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,GAAG,EAAE,EAAE,KAAK,EAAC,kBAAkB;QAC3F,cAAW;QACX;UACE,cAAK,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB,CAAM;UACnF,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,+FAA4E,CAAC,CAAC,CAAC,IAAI;UAC3G,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,cAAW,CAAC,CAAC,CAAC,4BAAsB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAyB;UAClH,YAAM,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACnC,2CAAkC,CAC7B;UACP,uBACE,IAAI,EAAE;cACJ,EAAE,WAAW,EAAE,6DAA6D,EAAE;cAC9E,EAAE,WAAW,EAAE,iEAAiE,EAAE;aACnF,GACD,CACE,CACF,CACP,CAAC;IACJ,CAAC,CAAC;;;EAjCF,SAAS;IACP,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;EACzB,CAAC;EAED,oBAAoB;IAClB,IAAI,CAAC,SAAS,EAAE,CAAC;EACnB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAuBF","sourcesContent":["import { Component, Prop, h } from '@stencil/core';\nimport state from '../../store';\nimport { Category } from '../../types';\n\n@Component({\n tag: 'hemfixarna-order',\n shadow: false,\n})\nexport class HemfixarnaOrder {\n @Prop() tree: Category;\n\n resetShop() {\n state.step = 1;\n state.cart = [];\n state.selectedCategory = null;\n state.selectedService = null;\n state.selectedProduct = null;\n state.checkoutStep = 1;\n }\n\n disconnectedCallback() {\n this.resetShop();\n }\n\n render = () => {\n return (\n <div style={{ background: `url(${state.options.thank_you_image})` }} class=\"hemfixarna_order\">\n <div></div>\n <div>\n <h2>{state.checkoutInvoice ? 'Tack för din förfrågan' : 'Tack för din bokning'}</h2>\n {state.checkoutInvoice ? <p>Vi återkommer inom kort till dig på angivet telefonnummer eller epost</p> : null}\n {state.checkoutInvoice ? <div></div> : <hemfixarna-orderrows tree={this.tree} cart={false}></hemfixarna-orderrows>}\n <span onClick={() => this.resetShop()}>\n <button>Gör en ny bokning</button>\n </span>\n <hemfixarna-info\n list={[\n { trust_badge: 'Du kommer bli kontaktad av en Hemfixare för bokning av tid.' },\n { trust_badge: 'När jobbet är klart kommer du få en faktura med RUT/ROT-avdrag.' },\n ]}\n />\n </div>\n </div>\n );\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { getAssetPath, h } from '@stencil/core';
1
+ import { Fragment, getAssetPath, h } from '@stencil/core';
2
2
  import state from '../../store';
3
3
  import { getPartPrice, getProductPrice } from '../../utils/calc';
4
4
  import { scrollToTop } from '../../utils/scroll';
@@ -111,11 +111,11 @@ export class HemfixarnaProduct {
111
111
  const checked = getAssetPath(`./assets/checked.svg`);
112
112
  const plus = getAssetPath(`./assets/plus.svg`);
113
113
  const minus = getAssetPath(`./assets/minus.svg`);
114
- return (h("div", { class: "hemfixarna_product" }, h("div", { class: "hemfixarna_product--top" }, state.selectedProduct.icon && (h("img", { width: 80, src: (_a = state.selectedProduct.icon.url) !== null && _a !== void 0 ? _a : state.selectedProduct.icon, alt: state.selectedProduct.post_title })), h("div", null, h("h1", null, state.selectedProduct.post_title), h("h2", null, "Fr\u00E5n: ", getProductPrice(state.selectedProduct), " kr"))), h("div", { class: "hemfixarna_product--grid" }, h("div", { class: "hemfixarna_product--left" }, ((_b = state.selectedProduct.list) === null || _b === void 0 ? void 0 : _b.length) && (h("ul", { class: "hemfixarna_features" }, state.selectedProduct.list.map(l => (h("li", { key: l.bullet }, h("img", { src: checked, alt: "checked" }), h("p", null, l.bullet)))))), state.selectedProduct.description && (h("p", { onClick: () => (this.hideDescription = false), class: `hemfixarna_description ${this.hideDescription ? 'hemfixarna_description--hidden' : ''}`, innerHTML: state.selectedProduct.description }))), h("div", { class: "hemfixarna_product--right" }, h("ul", null, h("li", { class: "hemfixarna_product--item" }, h("div", null, h("p", null, "Antal ", state.selectedProduct.post_title), h("p", { class: "hemfixarna_product--price" }, getProductPrice(state.selectedProduct), "kr/st")), h("div", { class: "hemfixarna_counter" }, h("img", { class: `${this.getAmount() === 0 ? 'disabled' : ''}`, src: minus, onClick: () => this.removeProduct() }), h("span", null, this.getAmount()), h("img", { src: plus, onClick: () => this.addProduct() }))), ((_c = state.selectedProduct.parts) === null || _c === void 0 ? void 0 : _c.length) &&
114
+ return (h("div", { class: "hemfixarna_product" }, h("div", { class: "hemfixarna_product--top" }, state.selectedProduct.icon && (h("img", { width: 80, src: (_a = state.selectedProduct.icon.url) !== null && _a !== void 0 ? _a : state.selectedProduct.icon, alt: state.selectedProduct.post_title })), h("div", null, h("h1", null, state.selectedProduct.post_title), !state.selectedProduct.invoice ? h("h2", null, getProductPrice(state.selectedProduct), " kr/st") : h("h2", null, state.selectedProduct.invoice_price))), h("div", { class: "hemfixarna_product--grid" }, h("div", { class: "hemfixarna_product--left" }, ((_b = state.selectedProduct.list) === null || _b === void 0 ? void 0 : _b.length) && (h("ul", { class: "hemfixarna_features" }, state.selectedProduct.list.map(l => (h("li", { key: l.bullet }, h("img", { src: checked, alt: "checked" }), h("p", null, l.bullet)))))), state.selectedProduct.description && (h("p", { onClick: () => (this.hideDescription = false), class: `hemfixarna_description ${this.hideDescription ? 'hemfixarna_description--hidden' : ''}`, innerHTML: state.selectedProduct.description }))), h("div", { class: "hemfixarna_product--right" }, state.selectedProduct.invoice ? (h("hemfixarna-invoice", null)) : (h(Fragment, null, h("ul", null, h("li", { class: "hemfixarna_product--item" }, h("div", null, h("p", null, "Antal ", state.selectedProduct.post_title), h("p", { class: "hemfixarna_product--price" }, getProductPrice(state.selectedProduct), "kr/st")), h("div", { class: "hemfixarna_counter" }, h("img", { class: `${this.getAmount() === 0 ? 'disabled' : ''}`, src: minus, onClick: () => this.removeProduct() }), h("span", null, this.getAmount()), h("img", { src: plus, onClick: () => this.addProduct() }))), ((_c = state.selectedProduct.parts) === null || _c === void 0 ? void 0 : _c.length) &&
115
115
  state.selectedProduct.parts.map(p => {
116
116
  var _a;
117
117
  return (h("li", { class: "hemfixarna_part" }, h("div", null, h("p", null, (_a = p.title) !== null && _a !== void 0 ? _a : p.post_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) }))));
118
- })), 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 && (state.selectedProduct.rot || state.selectedProduct.rut) && state.rutOptions && state.rotOptions && (h("p", { class: "hemfixarna_terms" }, h("strong", null, state.selectedProduct.rot ? state.rotOptions.rot_start_fee_heading : state.rutOptions.rut_start_fee_heading), h("br", null), h("span", { innerHTML: state.selectedProduct.rot ? state.rotOptions.rot_start_fee_text : state.rutOptions.rut_start_fee_text }))), state.options && h("hemfixarna-info", { list: state.options.trust })))));
118
+ })), 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 && (state.selectedProduct.rot || state.selectedProduct.rut) && state.rutOptions && state.rotOptions && (h("p", { class: "hemfixarna_terms" }, h("strong", null, state.selectedProduct.rot ? state.rotOptions.rot_start_fee_heading : state.rutOptions.rut_start_fee_heading), h("br", null), h("span", { innerHTML: state.selectedProduct.rot ? state.rotOptions.rot_start_fee_text : state.rutOptions.rut_start_fee_text }))), state.options && h("hemfixarna-info", { list: state.options.trust })))));
119
119
  }
120
120
  static get is() { return "hemfixarna-product"; }
121
121
  static get states() {
@@ -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, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Icon, Part } from '../../types';\nimport { getPartPrice, getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-product',\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 amount: 1,\n parts: [],\n price: state.selectedProduct.price,\n name: state.selectedProduct.post_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.post_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 render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n const plus = getAssetPath(`./assets/plus.svg`);\n const minus = getAssetPath(`./assets/minus.svg`);\n\n return (\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.post_title} />\n )}\n <div>\n <h1>{state.selectedProduct.post_title}</h1>\n <h2>Från: {getProductPrice(state.selectedProduct)} kr</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 <ul>\n <li class=\"hemfixarna_product--item\">\n <div>\n <p>Antal {state.selectedProduct.post_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.post_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 {!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 list={state.options.trust} />}\n </div>\n </div>\n </div>\n );\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;AAEhC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMjD,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,MAAM,EAAE,CAAC;UACT,KAAK,EAAE,EAAE;UACT,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK;UAClC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,UAAU;UACtC,SAAS,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,cAAc;UAChD,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,cAAc;UACpD,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI;SACjC;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,UAAU,EAAE,CAAC,CAAC;OACpI;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,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,OAAO,CACL,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,UAAU,GAAI,CACnJ;QACD;UACE,cAAK,KAAK,CAAC,eAAe,CAAC,UAAU,CAAM;UAC1C,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;;oBAAU,KAAK,CAAC,eAAe,CAAC,UAAU,CAAK;kBAC/C,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,UAAU,CAAK;sBAChC,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,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,CAC5I,SAAG,KAAK,EAAC,kBAAkB;YACzB,kBAAS,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAU;YAC9H,aAAM;YACN,YAAM,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,GAAS,CAC7H,CACL;UACA,KAAK,CAAC,OAAO,IAAI,uBAAiB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,GAAI,CAC5D,CACF,CACF,CACP,CAAC;EACJ,CAAC;;;;;;;CACF","sourcesContent":["import { Component, Element, Fragment, State, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { Icon, Part } from '../../types';\nimport { getPartPrice, getProductPrice } from '../../utils/calc';\nimport { scrollToTop } from '../../utils/scroll';\n\n@Component({\n tag: 'hemfixarna-product',\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 amount: 1,\n parts: [],\n price: state.selectedProduct.price,\n name: state.selectedProduct.post_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.post_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 render() {\n const checked = getAssetPath(`./assets/checked.svg`);\n const plus = getAssetPath(`./assets/plus.svg`);\n const minus = getAssetPath(`./assets/minus.svg`);\n\n return (\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.post_title} />\n )}\n <div>\n <h1>{state.selectedProduct.post_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>Antal {state.selectedProduct.post_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.post_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 list={state.options.trust} />}\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
@@ -6,7 +6,7 @@ export class HemfixarnaService {
6
6
  .sort((a, b) => (a.post_title < b.post_title ? -1 : 1))
7
7
  .map(p => {
8
8
  var _a;
9
- return (h("hemfixarna-box", { post: p, icon: (_a = p.icon.url) !== null && _a !== void 0 ? _a : p.icon, postTitle: p.post_title }));
9
+ return (h("hemfixarna-box", { post: p, icon: (_a = p.icon.url) !== null && _a !== void 0 ? _a : p.icon, postTitle: p.title }));
10
10
  }))), h("hemfixarna-info", { list: state.options.trust }))));
11
11
  }
12
12
  static get is() { return "hemfixarna-service"; }
@@ -1 +1 @@
1
- {"version":3,"file":"hemfixarna-service.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-service/hemfixarna-service.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,MAAM,aAAa,CAAC;AAMhC,MAAM,OAAO,iBAAiB;EAC5B,MAAM;IACJ,OAAO,CACL;MACE,cAAK,KAAK,CAAC,eAAe,CAAC,UAAU,CAAM;MAC3C,WAAK,KAAK,EAAC,gCAAgC;QACzC;UACE,UAAI,KAAK,EAAC,uBAAuB,IAC9B,KAAK,CAAC,eAAe,CAAC,QAAQ;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAE;;YAAC,OAAA,CACR,sBAAgB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAC,CAAC,CAAC,IAAa,CAAC,GAAG,mCAAK,CAAC,CAAC,IAAe,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,GAAmB,CACtH,CAAA;WAAA,CAAC,CACD,CACD;QACN,uBAAiB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,GAAI,CAC1C,CACF,CACP,CAAC;EACJ,CAAC;;CACF","sourcesContent":["import { Component, h } from '@stencil/core';\nimport { Icon } from '../../types';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-service',\n shadow: false,\n})\nexport class HemfixarnaService {\n render() {\n return (\n <div>\n <h2>{state.selectedService.post_title}</h2>\n <div class=\"hemfixarna_categories--wrapper\">\n <div>\n <ul class=\"hemfixarna_categories\">\n {state.selectedService.products\n .sort((a, b) => (a.post_title < b.post_title ? -1 : 1))\n .map(p => (\n <hemfixarna-box post={p} icon={(p.icon as Icon).url ?? (p.icon as string)} postTitle={p.post_title}></hemfixarna-box>\n ))}\n </ul>\n </div>\n <hemfixarna-info list={state.options.trust} />\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"hemfixarna-service.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-service/hemfixarna-service.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,MAAM,OAAO,iBAAiB;EAC5B,MAAM;IACJ,OAAO,CACL;MACE,cAAK,KAAK,CAAC,eAAe,CAAC,UAAU,CAAM;MAC3C,WAAK,KAAK,EAAC,gCAAgC;QACzC;UACE,UAAI,KAAK,EAAC,uBAAuB,IAC9B,KAAK,CAAC,eAAe,CAAC,QAAQ;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,EAAE;;YAAC,OAAA,CACR,sBAAgB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAC,CAAC,CAAC,IAAa,CAAC,GAAG,mCAAK,CAAC,CAAC,IAAe,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,GAAmB,CACjH,CAAA;WAAA,CAAC,CACD,CACD;QACN,uBAAiB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,GAAI,CAC1C,CACF,CACP,CAAC;EACJ,CAAC;;CACF","sourcesContent":["import { Component, h } from '@stencil/core';\nimport state from '../../store';\nimport { Icon } from '../../types';\n\n@Component({\n tag: 'hemfixarna-service',\n shadow: false,\n})\nexport class HemfixarnaService {\n render() {\n return (\n <div>\n <h2>{state.selectedService.post_title}</h2>\n <div class=\"hemfixarna_categories--wrapper\">\n <div>\n <ul class=\"hemfixarna_categories\">\n {state.selectedService.products\n .sort((a, b) => (a.post_title < b.post_title ? -1 : 1))\n .map(p => (\n <hemfixarna-box post={p} icon={(p.icon as Icon).url ?? (p.icon as string)} postTitle={p.title}></hemfixarna-box>\n ))}\n </ul>\n </div>\n <hemfixarna-info list={state.options.trust} />\n </div>\n </div>\n );\n }\n}\n"]}