hemfixarna-web-components 1.6.3 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{hemfixarna-address_36.cjs.entry.js → hemfixarna-address_15.cjs.entry.js} +341 -1030
- package/dist/cjs/hemfixarna-address_15.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-byggmax.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-byggmax.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-category.cjs.entry.js +28 -0
- package/dist/cjs/hemfixarna-category.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-components.cjs.js +1 -1
- package/dist/cjs/hemfixarna-components.cjs.js.map +1 -1
- package/dist/cjs/hemfixarna-doro.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-doro.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-elfa.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-elfa.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-fargvaruhuset.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-fargvaruhuset.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-flyttsmart.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-flyttsmart.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-forebygg.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-forebygg.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-hornbach.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-hornbach.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-kbygg.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-kbygg.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-klint.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-klint.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-kund.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-kund.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-norrgavel.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-norrgavel.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-power.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-power.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-service.cjs.entry.js +24 -0
- package/dist/cjs/hemfixarna-service.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-skanska.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-skanska.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-sparfonster.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-sparfonster.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-string-furniture.cjs.entry.js +26 -0
- package/dist/cjs/hemfixarna-string-furniture.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-superfront.cjs.entry.js +24 -0
- package/dist/cjs/hemfixarna-superfront.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-tesla.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-tesla.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-traningspartner.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-traningspartner.cjs.entry.js.map +1 -0
- package/dist/cjs/hemfixarna-zaptec.cjs.entry.js +23 -0
- package/dist/cjs/hemfixarna-zaptec.cjs.entry.js.map +1 -0
- package/dist/cjs/index-4695c475.js +258 -0
- package/dist/cjs/index-4695c475.js.map +1 -0
- package/dist/cjs/index-8054ce93.js +42 -0
- package/dist/cjs/index-8054ce93.js.map +1 -0
- package/dist/cjs/index-b83343b9.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-byggmax/hemfixarna-byggmax.js +2 -82
- package/dist/collection/components/customers/hemfixarna-byggmax/hemfixarna-byggmax.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-doro/hemfixarna-doro.js +1 -20
- package/dist/collection/components/customers/hemfixarna-doro/hemfixarna-doro.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-elfa/hemfixarna-elfa.js +1 -39
- package/dist/collection/components/customers/hemfixarna-elfa/hemfixarna-elfa.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-fargvaruhuset/hemfixarna-fargvaruhuset.js +1 -39
- package/dist/collection/components/customers/hemfixarna-fargvaruhuset/hemfixarna-fargvaruhuset.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-flyttsmart/hemfixarna-flyttsmart.js +1 -39
- package/dist/collection/components/customers/hemfixarna-flyttsmart/hemfixarna-flyttsmart.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-forebygg/hemfixarna-forebygg.js +1 -20
- package/dist/collection/components/customers/hemfixarna-forebygg/hemfixarna-forebygg.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-hornbach/hemfixarna-hornbach.js +1 -39
- package/dist/collection/components/customers/hemfixarna-hornbach/hemfixarna-hornbach.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-kbygg/hemfixarna-kbygg.js +1 -39
- package/dist/collection/components/customers/hemfixarna-kbygg/hemfixarna-kbygg.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-klint/hemfixarna-klint.js +1 -20
- package/dist/collection/components/customers/hemfixarna-klint/hemfixarna-klint.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-kund/hemfixarna-kund.js +1 -20
- package/dist/collection/components/customers/hemfixarna-kund/hemfixarna-kund.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-norrgavel/hemfixarna-norrgavel.js +1 -39
- package/dist/collection/components/customers/hemfixarna-norrgavel/hemfixarna-norrgavel.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-power/hemfixarna-power.js +1 -38
- package/dist/collection/components/customers/hemfixarna-power/hemfixarna-power.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-skanska/hemfixarna-skanska.js +1 -38
- package/dist/collection/components/customers/hemfixarna-skanska/hemfixarna-skanska.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-sparfonster/hemfixarna-sparfonster.js +1 -38
- package/dist/collection/components/customers/hemfixarna-sparfonster/hemfixarna-sparfonster.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-string/hemfixarna-string-furniture.js +1 -20
- package/dist/collection/components/customers/hemfixarna-string/hemfixarna-string-furniture.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-superfront.tsx/hemfixarna-superfront.js +1 -1
- package/dist/collection/components/customers/hemfixarna-superfront.tsx/hemfixarna-superfront.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-tesla/hemfixarna-tesla.js +1 -39
- package/dist/collection/components/customers/hemfixarna-tesla/hemfixarna-tesla.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-traningspartner/hemfixarna-traningspartner.js +1 -20
- package/dist/collection/components/customers/hemfixarna-traningspartner/hemfixarna-traningspartner.js.map +1 -1
- package/dist/collection/components/customers/hemfixarna-zaptec/hemfixarna-zaptec.js +1 -39
- package/dist/collection/components/customers/hemfixarna-zaptec/hemfixarna-zaptec.js.map +1 -1
- package/dist/collection/components/hemfixarna-breadcrumbs/hemfixarna-breadcrumbs.js +1 -60
- package/dist/collection/components/hemfixarna-breadcrumbs/hemfixarna-breadcrumbs.js.map +1 -1
- package/dist/collection/components/hemfixarna-cart/hemfixarna-cart.js +1 -28
- package/dist/collection/components/hemfixarna-cart/hemfixarna-cart.js.map +1 -1
- package/dist/collection/components/hemfixarna-component/hemfixarna-component.js +27 -236
- package/dist/collection/components/hemfixarna-component/hemfixarna-component.js.map +1 -1
- package/dist/collection/components/hemfixarna-demo/hemfixarna-demo.js +75 -39
- package/dist/collection/components/hemfixarna-demo/hemfixarna-demo.js.map +1 -1
- package/dist/collection/components/hemfixarna-info/hemfixarna-info.js +2 -2
- package/dist/collection/components/hemfixarna-info/hemfixarna-info.js.map +1 -1
- package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.js +2 -1
- package/dist/collection/components/hemfixarna-invoice/hemfixarna-invoice.js.map +1 -1
- package/dist/collection/components/hemfixarna-order/hemfixarna-order.js +1 -26
- package/dist/collection/components/hemfixarna-order/hemfixarna-order.js.map +1 -1
- package/dist/collection/components/hemfixarna-orderrows/hemfixarna-orderrows.js +7 -41
- package/dist/collection/components/hemfixarna-orderrows/hemfixarna-orderrows.js.map +1 -1
- package/dist/collection/types/index.js +4 -0
- package/dist/collection/types/index.js.map +1 -1
- package/dist/collection/utils/api.js +18 -2
- package/dist/collection/utils/api.js.map +1 -1
- package/dist/collection/utils/creditSafe.js +2 -2
- package/dist/collection/utils/creditSafe.js.map +1 -1
- package/dist/collection/utils/enviroment.js +31 -0
- package/dist/collection/utils/enviroment.js.map +1 -0
- package/dist/collection/utils/felixApi.js +2 -1
- package/dist/collection/utils/felixApi.js.map +1 -1
- package/dist/collection/utils/felixFunctions.js +0 -1
- package/dist/collection/utils/felixFunctions.js.map +1 -1
- package/dist/esm/{hemfixarna-address_36.entry.js → hemfixarna-address_15.entry.js} +150 -818
- package/dist/esm/hemfixarna-address_15.entry.js.map +1 -0
- package/dist/esm/hemfixarna-byggmax.entry.js +22 -0
- package/dist/esm/hemfixarna-byggmax.entry.js.map +1 -0
- package/dist/esm/hemfixarna-category.entry.js +24 -0
- package/dist/esm/hemfixarna-category.entry.js.map +1 -0
- package/dist/esm/hemfixarna-components.js +3 -3
- package/dist/esm/hemfixarna-components.js.map +1 -1
- package/dist/esm/hemfixarna-doro.entry.js +22 -0
- package/dist/esm/hemfixarna-doro.entry.js.map +1 -0
- package/dist/esm/hemfixarna-elfa.entry.js +22 -0
- package/dist/esm/hemfixarna-elfa.entry.js.map +1 -0
- package/dist/esm/hemfixarna-fargvaruhuset.entry.js +19 -0
- package/dist/esm/hemfixarna-fargvaruhuset.entry.js.map +1 -0
- package/dist/esm/hemfixarna-flyttsmart.entry.js +19 -0
- package/dist/esm/hemfixarna-flyttsmart.entry.js.map +1 -0
- package/dist/esm/hemfixarna-forebygg.entry.js +22 -0
- package/dist/esm/hemfixarna-forebygg.entry.js.map +1 -0
- package/dist/esm/hemfixarna-hornbach.entry.js +22 -0
- package/dist/esm/hemfixarna-hornbach.entry.js.map +1 -0
- package/dist/esm/hemfixarna-kbygg.entry.js +19 -0
- package/dist/esm/hemfixarna-kbygg.entry.js.map +1 -0
- package/dist/esm/hemfixarna-klint.entry.js +19 -0
- package/dist/esm/hemfixarna-klint.entry.js.map +1 -0
- package/dist/esm/hemfixarna-kund.entry.js +19 -0
- package/dist/esm/hemfixarna-kund.entry.js.map +1 -0
- package/dist/esm/hemfixarna-norrgavel.entry.js +19 -0
- package/dist/esm/hemfixarna-norrgavel.entry.js.map +1 -0
- package/dist/esm/hemfixarna-power.entry.js +19 -0
- package/dist/esm/hemfixarna-power.entry.js.map +1 -0
- package/dist/esm/hemfixarna-service.entry.js +20 -0
- package/dist/esm/hemfixarna-service.entry.js.map +1 -0
- package/dist/esm/hemfixarna-skanska.entry.js +22 -0
- package/dist/esm/hemfixarna-skanska.entry.js.map +1 -0
- package/dist/esm/hemfixarna-sparfonster.entry.js +19 -0
- package/dist/esm/hemfixarna-sparfonster.entry.js.map +1 -0
- package/dist/esm/hemfixarna-string-furniture.entry.js +22 -0
- package/dist/esm/hemfixarna-string-furniture.entry.js.map +1 -0
- package/dist/esm/hemfixarna-superfront.entry.js +20 -0
- package/dist/esm/hemfixarna-superfront.entry.js.map +1 -0
- package/dist/esm/hemfixarna-tesla.entry.js +19 -0
- package/dist/esm/hemfixarna-tesla.entry.js.map +1 -0
- package/dist/esm/hemfixarna-traningspartner.entry.js +19 -0
- package/dist/esm/hemfixarna-traningspartner.entry.js.map +1 -0
- package/dist/esm/hemfixarna-zaptec.entry.js +19 -0
- package/dist/esm/hemfixarna-zaptec.entry.js.map +1 -0
- package/dist/esm/{index-8c417125.js → index-04bcf90e.js} +2 -2
- package/dist/esm/index-04bcf90e.js.map +1 -0
- package/dist/esm/index-113a6b21.js +256 -0
- package/dist/esm/index-113a6b21.js.map +1 -0
- package/dist/esm/index-1fbc7a74.js +42 -0
- package/dist/esm/index-1fbc7a74.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/hemfixarna-components/hemfixarna-components.esm.js +1 -1
- package/dist/hemfixarna-components/hemfixarna-components.esm.js.map +1 -1
- package/dist/hemfixarna-components/p-12dbf4e6.entry.js +2 -0
- package/dist/hemfixarna-components/p-12dbf4e6.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-1b80999e.entry.js +2 -0
- package/dist/hemfixarna-components/p-1b80999e.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-1f875c7a.entry.js +2 -0
- package/dist/hemfixarna-components/p-1f875c7a.entry.js.map +1 -0
- package/dist/hemfixarna-components/{p-852e7173.js → p-32a8152b.js} +2 -2
- package/dist/hemfixarna-components/p-32a8152b.js.map +1 -0
- package/dist/hemfixarna-components/p-3acd1346.entry.js +2 -0
- package/dist/hemfixarna-components/p-3acd1346.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-53afbc10.entry.js +2 -0
- package/dist/hemfixarna-components/p-53afbc10.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-53f0abfa.entry.js +2 -0
- package/dist/hemfixarna-components/p-53f0abfa.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-61b4597f.entry.js +2 -0
- package/dist/hemfixarna-components/p-61b4597f.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-6c1d21dd.entry.js +2 -0
- package/dist/hemfixarna-components/p-6c1d21dd.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-6f6601b8.entry.js +2 -0
- package/dist/hemfixarna-components/p-6f6601b8.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-7c122f15.entry.js +2 -0
- package/dist/hemfixarna-components/p-7c122f15.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-8356796a.entry.js +2 -0
- package/dist/hemfixarna-components/p-8356796a.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-8d509bf1.entry.js +2 -0
- package/dist/hemfixarna-components/p-8d509bf1.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-8f0a688c.entry.js +2 -0
- package/dist/hemfixarna-components/p-8f0a688c.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-9b1e6bc2.entry.js +2 -0
- package/dist/hemfixarna-components/p-9b1e6bc2.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-a3d759d9.js +2 -0
- package/dist/hemfixarna-components/p-a3d759d9.js.map +1 -0
- package/dist/hemfixarna-components/p-a9845efc.entry.js +2 -0
- package/dist/hemfixarna-components/p-a9845efc.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-ae3fc85c.entry.js +2 -0
- package/dist/hemfixarna-components/p-ae3fc85c.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-b6bc1537.entry.js +2 -0
- package/dist/hemfixarna-components/p-b6bc1537.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-cb1634e8.entry.js +2 -0
- package/dist/hemfixarna-components/p-cb1634e8.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-cfdc93e9.js +2 -0
- package/dist/hemfixarna-components/p-cfdc93e9.js.map +1 -0
- package/dist/hemfixarna-components/p-dabad8a7.entry.js +2 -0
- package/dist/hemfixarna-components/p-dabad8a7.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-dfcefa54.entry.js +2 -0
- package/dist/hemfixarna-components/p-dfcefa54.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-e0aad0ff.entry.js +2 -0
- package/dist/hemfixarna-components/p-e0aad0ff.entry.js.map +1 -0
- package/dist/hemfixarna-components/p-edac9f21.entry.js +2 -0
- package/dist/hemfixarna-components/p-edac9f21.entry.js.map +1 -0
- package/dist/types/components/customers/hemfixarna-byggmax/hemfixarna-byggmax.d.ts +1 -6
- package/dist/types/components/customers/hemfixarna-doro/hemfixarna-doro.d.ts +0 -1
- package/dist/types/components/customers/hemfixarna-elfa/hemfixarna-elfa.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-fargvaruhuset/hemfixarna-fargvaruhuset.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-flyttsmart/hemfixarna-flyttsmart.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-forebygg/hemfixarna-forebygg.d.ts +0 -1
- package/dist/types/components/customers/hemfixarna-hornbach/hemfixarna-hornbach.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-kbygg/hemfixarna-kbygg.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-klint/hemfixarna-klint.d.ts +0 -1
- package/dist/types/components/customers/hemfixarna-kund/hemfixarna-kund.d.ts +0 -1
- package/dist/types/components/customers/hemfixarna-norrgavel/hemfixarna-norrgavel.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-power/hemfixarna-power.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-skanska/hemfixarna-skanska.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-sparfonster/hemfixarna-sparfonster.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-string/hemfixarna-string-furniture.d.ts +0 -1
- package/dist/types/components/customers/hemfixarna-tesla/hemfixarna-tesla.d.ts +0 -2
- package/dist/types/components/customers/hemfixarna-traningspartner/hemfixarna-traningspartner.d.ts +0 -1
- package/dist/types/components/customers/hemfixarna-zaptec/hemfixarna-zaptec.d.ts +0 -2
- package/dist/types/components/hemfixarna-breadcrumbs/hemfixarna-breadcrumbs.d.ts +0 -4
- package/dist/types/components/hemfixarna-cart/hemfixarna-cart.d.ts +0 -2
- package/dist/types/components/hemfixarna-component/hemfixarna-component.d.ts +2 -18
- package/dist/types/components/hemfixarna-demo/hemfixarna-demo.d.ts +4 -2
- package/dist/types/components/hemfixarna-order/hemfixarna-order.d.ts +0 -2
- package/dist/types/components/hemfixarna-orderrows/hemfixarna-orderrows.d.ts +1 -2
- package/dist/types/components.d.ts +2 -100
- package/dist/types/types/index.d.ts +24 -22
- package/dist/types/utils/api.d.ts +5 -1
- package/dist/types/utils/enviroment.d.ts +3 -0
- package/package.json +4 -3
- package/readme.md +22 -0
- package/dist/cjs/hemfixarna-address_36.cjs.entry.js.map +0 -1
- package/dist/esm/hemfixarna-address_36.entry.js.map +0 -1
- package/dist/esm/index-8c417125.js.map +0 -1
- package/dist/hemfixarna-components/p-852e7173.js.map +0 -1
- package/dist/hemfixarna-components/p-97461831.entry.js +0 -2
- package/dist/hemfixarna-components/p-97461831.entry.js.map +0 -1
@@ -1 +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('phone', 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.title,\n amount: 1,\n has_rut: state.selectedProduct.rut,\n has_rot: state.selectedProduct.rot,\n has_green: state.selectedProduct.green,\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"]}
|
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';\nimport { getApiUrl } from '../../utils/enviroment';\n\nconst base = `${getApiUrl()}/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('phone', 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.title,\n amount: 1,\n has_rut: state.selectedProduct.rut,\n has_rot: state.selectedProduct.rot,\n has_green: state.selectedProduct.green,\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,9 +3,8 @@ 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, 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", {
|
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", { cart: false }), h("span", { onClick: () => this.resetShop() }, h("button", null, "G\u00F6r en ny bokning")), h("hemfixarna-info", null))));
|
7
7
|
};
|
8
|
-
this.tree = undefined;
|
9
8
|
}
|
10
9
|
resetShop() {
|
11
10
|
state.step = 1;
|
@@ -20,29 +19,5 @@ export class HemfixarnaOrder {
|
|
20
19
|
this.resetShop();
|
21
20
|
}
|
22
21
|
static get is() { return "hemfixarna-order"; }
|
23
|
-
static get properties() {
|
24
|
-
return {
|
25
|
-
"tree": {
|
26
|
-
"type": "unknown",
|
27
|
-
"mutable": false,
|
28
|
-
"complexType": {
|
29
|
-
"original": "Category",
|
30
|
-
"resolved": "Category",
|
31
|
-
"references": {
|
32
|
-
"Category": {
|
33
|
-
"location": "import",
|
34
|
-
"path": "../../types"
|
35
|
-
}
|
36
|
-
}
|
37
|
-
},
|
38
|
-
"required": false,
|
39
|
-
"optional": false,
|
40
|
-
"docs": {
|
41
|
-
"tags": [],
|
42
|
-
"text": ""
|
43
|
-
}
|
44
|
-
}
|
45
|
-
};
|
46
|
-
}
|
47
22
|
}
|
48
23
|
//# sourceMappingURL=hemfixarna-order.js.map
|
@@ -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,
|
1
|
+
{"version":3,"file":"hemfixarna-order.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-order/hemfixarna-order.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,MAAM,aAAa,CAAC;AAMhC,MAAM,OAAO,eAAe;EAJ5B;IAmBE,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,KAAK,GAAyB;UACjG,YAAM,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;YACnC,2CAAkC,CAC7B;UACP,0BAAmB,CACf,CACF,CACP,CAAC;IACJ,CAAC,CAAC;GACH;EA9BC,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,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;EACzB,CAAC;EAED,oBAAoB;IAClB,IAAI,CAAC,SAAS,EAAE,CAAC;EACnB,CAAC;;CAkBF","sourcesContent":["import { Component, h } from '@stencil/core';\nimport state from '../../store';\n\n@Component({\n tag: 'hemfixarna-order',\n shadow: false,\n})\nexport class HemfixarnaOrder {\n resetShop() {\n state.step = 1;\n state.cart = [];\n state.selectedCategory = null;\n state.selectedService = null;\n state.selectedProduct = null;\n state.maleri = 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 cart={false}></hemfixarna-orderrows>}\n <span onClick={() => this.resetShop()}>\n <button>Gör en ny bokning</button>\n </span>\n <hemfixarna-info />\n </div>\n </div>\n );\n };\n}\n"]}
|
@@ -4,29 +4,15 @@ import { calculateGreenDiscount, calculateRot, calculateRut, getPartPrice, getPr
|
|
4
4
|
export class HemfixarnaOrderrows {
|
5
5
|
constructor() {
|
6
6
|
this.cart = true;
|
7
|
-
this.tree = undefined;
|
8
7
|
}
|
9
8
|
goToProduct(id) {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
state.selectedProduct = product.fields;
|
18
|
-
state.step = 4;
|
19
|
-
}
|
20
|
-
}
|
21
|
-
else {
|
22
|
-
const services = this.tree.sub_cats.map((c) => c.services).flat();
|
23
|
-
const products = services.map((s) => s.products).flat();
|
24
|
-
const product = products.find((p) => p.ID === id);
|
25
|
-
const service = services.find((s) => s.products.find((p) => p.ID === id));
|
26
|
-
const category = this.tree.sub_cats.find((c) => c.services.find((s) => s.products.find((p) => p.ID === id)));
|
27
|
-
state.selectedCategory = category;
|
28
|
-
state.selectedService = service;
|
29
|
-
state.selectedProduct = product;
|
9
|
+
const products = state.customer.categories
|
10
|
+
.map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))
|
11
|
+
.flat()
|
12
|
+
.flat();
|
13
|
+
const product = products.find(p => p && p.fields.ID === id);
|
14
|
+
if (product) {
|
15
|
+
state.selectedProduct = product.fields;
|
30
16
|
state.step = 4;
|
31
17
|
}
|
32
18
|
}
|
@@ -89,26 +75,6 @@ export class HemfixarnaOrderrows {
|
|
89
75
|
"attribute": "cart",
|
90
76
|
"reflect": false,
|
91
77
|
"defaultValue": "true"
|
92
|
-
},
|
93
|
-
"tree": {
|
94
|
-
"type": "unknown",
|
95
|
-
"mutable": false,
|
96
|
-
"complexType": {
|
97
|
-
"original": "Category",
|
98
|
-
"resolved": "Category",
|
99
|
-
"references": {
|
100
|
-
"Category": {
|
101
|
-
"location": "import",
|
102
|
-
"path": "../../types"
|
103
|
-
}
|
104
|
-
}
|
105
|
-
},
|
106
|
-
"required": false,
|
107
|
-
"optional": false,
|
108
|
-
"docs": {
|
109
|
-
"tags": [],
|
110
|
-
"text": ""
|
111
|
-
}
|
112
78
|
}
|
113
79
|
};
|
114
80
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hemfixarna-orderrows.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-orderrows/hemfixarna-orderrows.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Fragment, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { CartItem, Category, Icon } from '../../types';\nimport { calculateGreenDiscount, calculateRot, calculateRut, getPartPrice, getProductPrice, getStartFee, getTotalPrice } from '../../utils/calc';\n\n@Component({\n tag: 'hemfixarna-orderrows',\n shadow: false,\n})\nexport class HemfixarnaOrderrows {\n @Prop() cart: boolean = true;\n @Prop() tree: Category;\n\n goToProduct(id: number) {\n if (state.customer) {\n const products = state.customer.categories\n .map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))\n .flat()\n .flat();\n const product = products.find(p => p && p.fields.ID === id);\n if (product) {\n state.selectedProduct = product.fields;\n state.step = 4;\n }\n } else {\n const services = this.tree.sub_cats.map((c: Category) => c.services).flat();\n const products = services.map((s: any) => s.products).flat();\n const product = products.find((p: any) => p.ID === id);\n const service = services.find((s: any) => s.products.find((p: any) => p.ID === id));\n const category = this.tree.sub_cats.find((c: any) => c.services.find((s: any) => s.products.find((p: any) => p.ID === id)));\n state.selectedCategory = category;\n state.selectedService = service;\n state.selectedProduct = product;\n state.step = 4;\n }\n }\n\n openRot() {\n state.modal = {\n title: state.rotOptions.rot_start_fee_heading,\n text: [state.rotOptions.rot_start_fee_text, state.rotOptions.rot_start_fee_text_secondary],\n };\n }\n\n openRut() {\n state.modal = {\n title: state.rutOptions.rut_start_fee_heading,\n text: [state.rutOptions.rut_start_fee_text, state.rutOptions.rut_start_fee_text_secondary],\n };\n }\n\n openGreen() {\n state.modal = {\n title: state.greenOptions.green_start_fee_heading,\n text: [state.greenOptions.green_start_fee_text, state.greenOptions.green_start_fee_text_secondary],\n };\n }\n\n getDiscountedInfo(item: CartItem) {\n if (item.rut && state.rut) {\n return ' (efter RUT-avdrag)';\n } else if (item.rot && state.rot) {\n return ' (efter ROT-avdrag)';\n } else if (item.green && state.green) {\n return ' (efter Grön teknik avdrag)';\n } else {\n return '';\n }\n }\n\n render() {\n const info = getAssetPath(`./assets/info.svg`);\n\n return (\n <Fragment>\n <ul class=\"hemfixarna_cart--items\">\n {state.cart.map(item => (\n <li class=\"hemfixarna_cart--item\">\n <div>\n <div>\n {item.icon && <img width={30} src={(item.icon as Icon).url ?? (item.icon as string)} alt={item.name} />}\n <p>\n <strong>{item.amount}x </strong>\n {item.name}\n </p>\n </div>\n {this.cart && <button onClick={() => this.goToProduct(item.id)}>Ändra</button>}\n </div>\n <p>\n <strong>{getProductPrice(item, item.price, item.amount)}kr</strong>\n <span>{this.getDiscountedInfo(item)}</span>\n </p>\n {item.parts.length > 0 && (\n <ul>\n {item.parts.map(part => (\n <li>\n <p>\n <strong>{part.amount}x </strong>\n {part.name}\n </p>\n <p>\n <strong>{getPartPrice(part, item, part.amount)}kr</strong>\n </p>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n <div class=\"hemfixarna_cart--additional\">\n <div>\n {getStartFee().rot > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRot()}>\n {state.rotOptions.rot_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rot}kr</p>\n </div>\n )}\n {getStartFee().rut > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRut()}>\n {state.rutOptions.rut_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rut}kr</p>\n </div>\n )}\n {getStartFee().green > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openGreen()}>\n {state.greenOptions.green_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().green}kr</p>\n </div>\n )}\n </div>\n {state.cart.find((item: CartItem) => item.rot) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n {this.cart && (\n <label class=\"switch\">\n <input checked={state.rot} onChange={() => (state.rot = !state.rot)} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n )}\n <p>ROT-avdrag</p>\n </div>\n <p>(-{state.rot ? calculateRot() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.rut) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.rut = !state.rut)} checked={state.rut} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>RUT-avdrag</p>\n </div>\n <p>(-{state.rut ? calculateRut() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.green) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.green = !state.green)} checked={state.green} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>Grön teknik avdrag</p>\n </div>\n <p>(-{state.green ? calculateGreenDiscount() : 0}kr)</p>\n </div>\n )}\n </div>\n <div class=\"hemfixarna_cart--price\">\n <h2>Totalbelopp: </h2>\n <h2>{getTotalPrice()}kr</h2>\n </div>\n </Fragment>\n );\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"hemfixarna-orderrows.js","sourceRoot":"","sources":["../../../src/components/hemfixarna-orderrows/hemfixarna-orderrows.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Fragment, Prop, getAssetPath, h } from '@stencil/core';\nimport state from '../../store';\nimport { CartItem, Icon } from '../../types';\nimport { calculateGreenDiscount, calculateRot, calculateRut, getPartPrice, getProductPrice, getStartFee, getTotalPrice } from '../../utils/calc';\n\n@Component({\n tag: 'hemfixarna-orderrows',\n shadow: false,\n})\nexport class HemfixarnaOrderrows {\n @Prop() cart: boolean = true;\n\n goToProduct(id: number) {\n const products = state.customer.categories\n .map(c => (c.show_products ? c.products : c.sub_categories ? c.sub_categories.map(c => c.products) : []))\n .flat()\n .flat();\n const product = products.find(p => p && p.fields.ID === id);\n if (product) {\n state.selectedProduct = product.fields;\n state.step = 4;\n }\n }\n\n openRot() {\n state.modal = {\n title: state.rotOptions.rot_start_fee_heading,\n text: [state.rotOptions.rot_start_fee_text, state.rotOptions.rot_start_fee_text_secondary],\n };\n }\n\n openRut() {\n state.modal = {\n title: state.rutOptions.rut_start_fee_heading,\n text: [state.rutOptions.rut_start_fee_text, state.rutOptions.rut_start_fee_text_secondary],\n };\n }\n\n openGreen() {\n state.modal = {\n title: state.greenOptions.green_start_fee_heading,\n text: [state.greenOptions.green_start_fee_text, state.greenOptions.green_start_fee_text_secondary],\n };\n }\n\n getDiscountedInfo(item: CartItem) {\n if (item.rut && state.rut) {\n return ' (efter RUT-avdrag)';\n } else if (item.rot && state.rot) {\n return ' (efter ROT-avdrag)';\n } else if (item.green && state.green) {\n return ' (efter Grön teknik avdrag)';\n } else {\n return '';\n }\n }\n\n render() {\n const info = getAssetPath(`./assets/info.svg`);\n\n return (\n <Fragment>\n <ul class=\"hemfixarna_cart--items\">\n {state.cart.map(item => (\n <li class=\"hemfixarna_cart--item\">\n <div>\n <div>\n {item.icon && <img width={30} src={(item.icon as Icon).url ?? (item.icon as string)} alt={item.name} />}\n <p>\n <strong>{item.amount}x </strong>\n {item.name}\n </p>\n </div>\n {this.cart && <button onClick={() => this.goToProduct(item.id)}>Ändra</button>}\n </div>\n <p>\n <strong>{getProductPrice(item, item.price, item.amount)}kr</strong>\n <span>{this.getDiscountedInfo(item)}</span>\n </p>\n {item.parts.length > 0 && (\n <ul>\n {item.parts.map(part => (\n <li>\n <p>\n <strong>{part.amount}x </strong>\n {part.name}\n </p>\n <p>\n <strong>{getPartPrice(part, item, part.amount)}kr</strong>\n </p>\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n <div class=\"hemfixarna_cart--additional\">\n <div>\n {getStartFee().rot > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRot()}>\n {state.rotOptions.rot_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rot}kr</p>\n </div>\n )}\n {getStartFee().rut > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openRut()}>\n {state.rutOptions.rut_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().rut}kr</p>\n </div>\n )}\n {getStartFee().green > 0 && (\n <div class=\"hemfixarna_cart--startfee\">\n <p>\n <strong onClick={() => this.openGreen()}>\n {state.greenOptions.green_start_fee_heading}\n <img height={16} src={info} alt=\"info monteringsavgift\" />\n </strong>\n </p>\n <p>{getStartFee().green}kr</p>\n </div>\n )}\n </div>\n {state.cart.find((item: CartItem) => item.rot) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n {this.cart && (\n <label class=\"switch\">\n <input checked={state.rot} onChange={() => (state.rot = !state.rot)} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n )}\n <p>ROT-avdrag</p>\n </div>\n <p>(-{state.rot ? calculateRot() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.rut) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.rut = !state.rut)} checked={state.rut} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>RUT-avdrag</p>\n </div>\n <p>(-{state.rut ? calculateRut() : 0}kr)</p>\n </div>\n )}\n {state.cart.find((item: CartItem) => item.green) && (\n <div class=\"hemfixarna_cart--rutrot\">\n <div>\n <label class=\"switch\">\n <input onChange={() => (state.green = !state.green)} checked={state.green} type=\"checkbox\" />\n <span class=\"slider\"></span>\n </label>\n <p>Grön teknik avdrag</p>\n </div>\n <p>(-{state.green ? calculateGreenDiscount() : 0}kr)</p>\n </div>\n )}\n </div>\n <div class=\"hemfixarna_cart--price\">\n <h2>Totalbelopp: </h2>\n <h2>{getTotalPrice()}kr</h2>\n </div>\n </Fragment>\n );\n }\n}\n"]}
|
@@ -1,3 +1,6 @@
|
|
1
|
+
// Match slug with partner slug in wp admin
|
2
|
+
// Dont forget to add the partners url to cors for creditsafe
|
3
|
+
// https://bitbucket.org/afonso-sweden/creditsafe-lookup/src/main/api/index.ts
|
1
4
|
export var Business;
|
2
5
|
(function (Business) {
|
3
6
|
Business["kund"] = "kund";
|
@@ -20,6 +23,7 @@ export var Business;
|
|
20
23
|
Business["power"] = "power";
|
21
24
|
Business["traningspartner"] = "traningspartner";
|
22
25
|
Business["superfront"] = "superfront";
|
26
|
+
Business["inet"] = "inet";
|
23
27
|
})(Business || (Business = {}));
|
24
28
|
export var WidgetStyle;
|
25
29
|
(function (WidgetStyle) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,CAAN,IAAY,QAsBX;AAtBD,WAAY,QAAQ;EAClB,yBAAa,CAAA;EACb,+BAAmB,CAAA;EACnB,+BAAmB,CAAA;EACnB,uCAA2B,CAAA;EAC3B,iCAAqB,CAAA;EACrB,iCAAqB,CAAA;EACrB,yBAAa,CAAA;EACb,yBAAa,CAAA;EACb,4BAAgB,CAAA;EAChB,mCAAuB,CAAA;EACvB,2CAA+B,CAAA;EAC/B,6BAAiB,CAAA;EACjB,2BAAe,CAAA;EACf,2BAAe,CAAA;EACf,qCAAyB,CAAA;EACzB,qBAAS,CAAA;EACT,uCAA2B,CAAA;EAC3B,2BAAe,CAAA;EACf,+CAAmC,CAAA;EACnC,qCAAyB,CAAA;EACzB,yBAAa,CAAA;AACf,CAAC,EAtBW,QAAQ,KAAR,QAAQ,QAsBnB;AAmMD,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;EACrB,oCAAqB,CAAA;EACrB,0CAA2B,CAAA;EAC3B,8CAA+B,CAAA;EAC/B,8CAA+B,CAAA;AACjC,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,MAAM,CAAN,IAAY,WAEX;AAFD,WAAY,WAAW;EACrB,wCAAyB,CAAA;AAC3B,CAAC,EAFW,WAAW,KAAX,WAAW,QAEtB","sourcesContent":["// Match slug with partner slug in wp admin\n// Dont forget to add the partners url to cors for creditsafe\n// https://bitbucket.org/afonso-sweden/creditsafe-lookup/src/main/api/index.ts\n\nexport enum Business {\n kund = 'kund',\n byggmax = 'byggmax',\n skanska = 'skanska',\n string = 'string-furniture',\n hornbach = 'hornbach',\n forebygg = 'forebygg',\n doro = 'doro',\n elfa = 'elfa',\n kbygg = 'k-bygg',\n norrgavel = 'norrgavel',\n fargvaruhuset = 'fargvaruhuset',\n zaptec = 'zaptec',\n tesla = 'tesla',\n klint = 'klint',\n flyttsmart = 'flyttsmart',\n lg = 'lg',\n sparfonster = 'sparfonster',\n power = 'power',\n traningspartner = 'traningspartner',\n superfront = 'superfront',\n inet = 'inet',\n}\n\ntype Icon = {\n url: string;\n};\n\ninterface Customer {\n ID: number;\n post_title: string;\n post_name: string;\n post_type: string;\n filter: string;\n categories: CustomerCategory[];\n logo?: Icon;\n partner_url?: string;\n at_hemfixarna: boolean;\n info_title: string;\n widget_title?: string;\n info_text: string;\n checkout_title: string;\n checkout_trust_badges: { text: string }[];\n trust_badges: { text: string }[];\n source?: Source;\n password_protected: boolean;\n}\n\ninterface CustomerCategory {\n id: string;\n name: string;\n widget_title?: string;\n icon: string;\n show_products: boolean;\n products: { fields: Product }[] | false;\n sub_categories: CustomerSubCategory[] | false;\n add_painting: boolean;\n}\n\ninterface CustomerSubCategory {\n id: string;\n name: string;\n widget_title?: string;\n icon: string;\n products: { fields: Product }[];\n parent: string;\n add_painting: boolean;\n}\n\ninterface Part {\n ID: number;\n post_author: number;\n post_date: Date;\n post_date_gmt: Date;\n post_content: string;\n post_title: string;\n post_excerpt: string;\n post_status: string;\n comment_status: string;\n ping_status: string;\n post_password: string;\n post_name: string;\n to_ping: string;\n pinged: string;\n post_modified: Date;\n post_modified_gmt: Date;\n post_content_filtered: string;\n post_parent: 0 | 1;\n guid: string;\n menu_order: 0;\n post_type: string;\n post_mime_type: string;\n comment_count: number;\n filter: string;\n price: number;\n title: string;\n}\n\ninterface Product {\n ID: number;\n post_author: string;\n post_date: Date;\n post_date_gmt: Date;\n post_content: string;\n post_title: string;\n post_excerpt: string;\n post_status: string;\n comment_status: string;\n ping_status: string;\n post_password: string;\n post_name: string;\n to_ping: string;\n pinged: string;\n post_modified: Date;\n post_modified_gmt: Date;\n post_content_filtered: string;\n post_parent: 0;\n guid: string;\n menu_order: 0;\n post_type: string;\n post_mime_type: string;\n comment_count: 0;\n filter: string;\n price: number;\n icon?: Icon | string;\n parts?: Array<Part>;\n list: Array<{ bullet: string }>;\n terms: string;\n terms_checkout: string;\n terms_show_checkbox: boolean;\n rut: boolean;\n rot: boolean;\n green: boolean;\n hide_start_fee: boolean;\n description: string;\n category: string;\n title: string;\n invoice: string;\n invoice_price: string;\n invoice_description: string;\n}\n\ninterface Service {\n ID: 41857;\n icon?: Icon | string;\n post_author: 34419;\n post_date: Date;\n post_date_gmt: Date;\n post_content: string;\n post_title: string;\n post_excerpt: string;\n post_status: string;\n comment_status: string;\n ping_status: string;\n post_password: string;\n post_name: string;\n to_ping: string;\n pinged: string;\n post_modified: Date;\n post_modified_gmt: Date;\n post_content_filtered: string;\n post_parent: 0;\n guid: string;\n menu_order: 0;\n post_type: 'service';\n post_mime_type: string;\n comment_count: 0;\n filter: string;\n products: Array<Product>;\n}\n\ninterface Category {\n count: number;\n description: string;\n name: string;\n icon?: Icon | string;\n parent: 0 | 1;\n slug: string;\n taxonomy: 'service_cat';\n term_group: 0 | 1;\n term_id: number;\n term_order: string;\n term_taxonomy_id: number;\n sub_cats?: Array<Category>;\n services?: Array<Service>;\n}\n\ninterface WpOptions {\n link: { title: string; url: string };\n trust: { trust_badge: string }[];\n thank_you_image: string;\n start_fee: number;\n terms: string;\n maleri_title: string;\n maleri_text: string;\n}\ninterface CartPart {\n id: number;\n amount: number;\n price: number;\n name: string;\n}\n\ninterface CartItem {\n id: number;\n price: number;\n name: string;\n amount: number;\n parts: CartPart[];\n rut: boolean;\n rot: boolean;\n green: boolean;\n start_fee: boolean;\n terms_checkout: string;\n icon?: Icon | string;\n}\n\nexport enum WidgetStyle {\n standard = 'standard',\n alternative = 'alternative',\n alternative_2 = 'alternative_2',\n alternative_3 = 'alternative_3',\n}\n\nexport enum TopCategory {\n byggmax = 'category/bygg',\n}\n\ninterface User {\n email: string;\n phone: string;\n ssn: string;\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n}\n\ninterface RutOptions {\n rut_start_fee_heading: string;\n rut_start_fee_text: string;\n rut_start_fee_text_secondary: string;\n}\n\ninterface RotOptions {\n rot_start_fee_heading: string;\n rot_start_fee_text: string;\n rot_start_fee_text_secondary: string;\n}\n\ninterface GreenOptions {\n green_start_fee_heading: string;\n green_start_fee_text: string;\n green_start_fee_text_secondary: string;\n}\n\ninterface SubSource {\n 'recordId': string;\n 'So_SubSource::Sus01_Name': string;\n 'So_SubSource::_id': string;\n 'So_SubSource::_id_Source': string;\n 'modId': string;\n}\n\ninterface FieldData {\n _id: string;\n So01_Name: string;\n So457_Aktiv_ac: number;\n So40_WebSubSource: string | number;\n So39_WebSource: number;\n rec_id: number;\n}\n\ninterface Source {\n fieldData: FieldData;\n sub_sources: SubSource[];\n}\n\ninterface SourcesRespone {\n dataInfo: {\n database: string;\n layout: string;\n table: string;\n totalRecordCount: number;\n foundCount: number;\n returnedCount: number;\n };\n data: Source[];\n}\n\nexport type {\n CartItem,\n CartPart,\n Category,\n Customer,\n CustomerCategory,\n CustomerSubCategory,\n GreenOptions,\n Icon,\n Part,\n Product,\n RotOptions,\n RutOptions,\n Service,\n Source,\n SourcesRespone,\n User,\n WpOptions,\n};\n"]}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
import { getApiUrl } from './enviroment';
|
2
|
+
const base = `${getApiUrl()}/wp-json/headless`;
|
2
3
|
export async function fetchWithType(request, options) {
|
3
4
|
const response = await fetch(request, options);
|
4
5
|
const body = await response.json();
|
@@ -27,6 +28,21 @@ const getCustomer = async (slug) => {
|
|
27
28
|
console.log(error);
|
28
29
|
}
|
29
30
|
};
|
31
|
+
const loginCustomer = async ({ id, password }) => {
|
32
|
+
try {
|
33
|
+
const res = await fetch(`${base}/customer/login`, {
|
34
|
+
method: 'POST',
|
35
|
+
body: JSON.stringify({ id, password }),
|
36
|
+
headers: {
|
37
|
+
'Content-Type': 'application/json',
|
38
|
+
},
|
39
|
+
});
|
40
|
+
return res.status;
|
41
|
+
}
|
42
|
+
catch (error) {
|
43
|
+
console.log(error);
|
44
|
+
}
|
45
|
+
};
|
30
46
|
const getOptions = async () => {
|
31
47
|
try {
|
32
48
|
const res = await fetch(`${base}/webcoptions`);
|
@@ -78,5 +94,5 @@ const postOrder = async (data) => {
|
|
78
94
|
console.log(error);
|
79
95
|
}
|
80
96
|
};
|
81
|
-
export { getCustomer, getGreenDiscount, getOptions, getRot, getRut, getTaxonomy, postOrder };
|
97
|
+
export { getCustomer, getGreenDiscount, getOptions, getRot, getRut, getTaxonomy, loginCustomer, postOrder };
|
82
98
|
//# sourceMappingURL=api.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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","sourcesContent":["import { RotOptions, RutOptions, WpOptions } from '../types';\nimport { getApiUrl } from './enviroment';\nimport { FelixOrder } from './felixApi';\n\nconst base = `${getApiUrl()}/wp-json/headless`;\n\nexport async function fetchWithType<T>(request: RequestInfo, options?: RequestInit): Promise<T> {\n const response = await fetch(request, options);\n const body = await response.json();\n return body;\n}\n\nconst getTaxonomy = async (endpoint: string) => {\n if (!endpoint) {\n return;\n }\n const type = endpoint.split('/')[0];\n const slug = endpoint.split('/')[1];\n try {\n const res = await fetch(`${base}/${type}/${slug}`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getCustomer = async (slug: string) => {\n try {\n const res = await fetch(`${base}/customer/${slug}`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst loginCustomer = async ({ id, password }: { id: number; password: string }) => {\n try {\n const res = await fetch(`${base}/customer/login`, {\n method: 'POST',\n body: JSON.stringify({ id, password }),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return res.status;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getOptions = async () => {\n try {\n const res = await fetch(`${base}/webcoptions`);\n return (await res.json()) as WpOptions;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getRut = async () => {\n try {\n const data = await fetchWithType<RutOptions>(`${base}/rut`);\n return data;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getRot = async () => {\n try {\n const res = await fetch(`${base}/rot`);\n return (await res.json()) as RotOptions;\n } catch (error) {\n console.log(error);\n }\n};\n\nconst getGreenDiscount = async () => {\n try {\n const res = await fetch(`${base}/green-discount`);\n return await res.json();\n } catch (error) {\n console.log(error);\n }\n};\n\nconst postOrder = async (data: FelixOrder) => {\n try {\n const res = await fetch(`${base}/weborder`, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return (await res.json()) as { message: string; post_id: number; data: FelixOrder; status?: number };\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { getCustomer, getGreenDiscount, getOptions, getRot, getRut, getTaxonomy, loginCustomer, postOrder };\n"]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { MD5 } from 'md5-js-tools';
|
2
|
+
import { getCreditSafeApiUrl } from './enviroment';
|
2
3
|
const apiSearch = async (query) => {
|
3
|
-
|
4
|
-
const res = await fetch((_a = process.env.CREDIT_SAFE_API_URL) !== null && _a !== void 0 ? _a : 'https://hemfixare-lookup.vercel.app/api', {
|
4
|
+
const res = await fetch(getCreditSafeApiUrl(), {
|
5
5
|
method: 'POST',
|
6
6
|
headers: {
|
7
7
|
'Content-Type': 'application/json',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"creditSafe.js","sourceRoot":"","sources":["../../src/utils/creditSafe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"creditSafe.js","sourceRoot":"","sources":["../../src/utils/creditSafe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,SAAS,GAAG,KAAK,EAAE,KAAa,EAA2B,EAAE;EACjE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE,EAAE;IAC7C,MAAM,EAAE,MAAM;IACd,OAAO,EAAE;MACP,cAAc,EAAE,kBAAkB;KACnC;IACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;MACnB,KAAK;MACL,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;KAC3E,CAAC;GACH,CAAC,CAAC;EACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;EAC9B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import { MD5 } from 'md5-js-tools';\nimport { CreditSafeUser } from '../types/felixtypes';\nimport { getCreditSafeApiUrl } from './enviroment';\n\nconst apiSearch = async (query: string): Promise<CreditSafeUser> => {\n const res = await fetch(getCreditSafeApiUrl(), {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n query,\n hash: MD5.generate(String.fromCharCode(83, 101, 67, 82, 101, 116) + query),\n }),\n });\n const data = await res.json();\n return data;\n};\n\nexport default apiSearch;\n"]}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
const livePreviewUrl = 'hemfixarna-partner.vercel.app';
|
2
|
+
const getDefaultApiUrl = () => {
|
3
|
+
if (window.location.href.includes('vercel.app') && !window.location.href.includes(livePreviewUrl)) {
|
4
|
+
return 'https://hemfixare.dev.afonso.se';
|
5
|
+
}
|
6
|
+
else {
|
7
|
+
return 'https://hemfixarna.se';
|
8
|
+
}
|
9
|
+
};
|
10
|
+
const getApiUrl = () => {
|
11
|
+
if (typeof process !== 'undefined' && process.env && process.env.API_URL) {
|
12
|
+
return process.env.API_URL;
|
13
|
+
}
|
14
|
+
return getDefaultApiUrl();
|
15
|
+
};
|
16
|
+
const getDefaultCreditSafeApiUrl = () => {
|
17
|
+
if (window.location.href.includes('vercel.app')) {
|
18
|
+
return 'https://hemfixare-lookup-dev.vercel.app/api';
|
19
|
+
}
|
20
|
+
else {
|
21
|
+
return 'https://hemfixare-lookup.vercel.app/api';
|
22
|
+
}
|
23
|
+
};
|
24
|
+
const getCreditSafeApiUrl = () => {
|
25
|
+
if (typeof process !== 'undefined' && process.env && process.env.CREDIT_SAFE_API_URL) {
|
26
|
+
return process.env.CREDIT_SAFE_API_URL;
|
27
|
+
}
|
28
|
+
return getDefaultCreditSafeApiUrl();
|
29
|
+
};
|
30
|
+
export { getApiUrl, getCreditSafeApiUrl };
|
31
|
+
//# sourceMappingURL=enviroment.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"enviroment.js","sourceRoot":"","sources":["../../src/utils/enviroment.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,+BAA+B,CAAC;AAEvD,MAAM,gBAAgB,GAAG,GAAG,EAAE;EAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;IACjG,OAAO,iCAAiC,CAAC;GAC1C;OAAM;IACL,OAAO,uBAAuB,CAAC;GAChC;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE;EACrB,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;IACxE,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;GAC5B;EAED,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,GAAG,EAAE;EACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;IAC/C,OAAO,6CAA6C,CAAC;GACtD;OAAM;IACL,OAAO,yCAAyC,CAAC;GAClD;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;EAC/B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;IACpF,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;GACxC;EAED,OAAO,0BAA0B,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["const livePreviewUrl = 'hemfixarna-partner.vercel.app';\n\nconst getDefaultApiUrl = () => {\n if (window.location.href.includes('vercel.app') && !window.location.href.includes(livePreviewUrl)) {\n return 'https://hemfixare.dev.afonso.se';\n } else {\n return 'https://hemfixarna.se';\n }\n};\n\nconst getApiUrl = () => {\n if (typeof process !== 'undefined' && process.env && process.env.API_URL) {\n return process.env.API_URL;\n }\n\n return getDefaultApiUrl();\n};\n\nconst getDefaultCreditSafeApiUrl = () => {\n if (window.location.href.includes('vercel.app')) {\n return 'https://hemfixare-lookup-dev.vercel.app/api';\n } else {\n return 'https://hemfixare-lookup.vercel.app/api';\n }\n};\n\nconst getCreditSafeApiUrl = () => {\n if (typeof process !== 'undefined' && process.env && process.env.CREDIT_SAFE_API_URL) {\n return process.env.CREDIT_SAFE_API_URL;\n }\n\n return getDefaultCreditSafeApiUrl();\n};\n\nexport { getApiUrl, getCreditSafeApiUrl };\n"]}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { fetchWithType } from './api';
|
2
|
-
|
2
|
+
import { getApiUrl } from './enviroment';
|
3
|
+
const base = `${getApiUrl()}/wp-json/felix`;
|
3
4
|
const postPerson = async (felixOrder) => {
|
4
5
|
try {
|
5
6
|
return await fetchWithType(`${base}/createperson`, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"felixApi.js","sourceRoot":"","sources":["../../src/utils/felixApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"felixApi.js","sourceRoot":"","sources":["../../src/utils/felixApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,IAAI,GAAG,GAAG,SAAS,EAAE,gBAAgB,CAAC;AAsC5C,MAAM,UAAU,GAAG,KAAK,EAAE,UAAsB,EAAE,EAAE;EAClD,IAAI;IACF,OAAO,MAAM,aAAa,CAcxB,GAAG,IAAI,eAAe,EAAE;MACxB,MAAM,EAAE,MAAM;MACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;MAChC,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;OACnC;KACF,CAAC,CAAC;GACJ;EAAC,OAAO,KAAK,EAAE;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;GACpB;AACH,CAAC,CAAC;AAEF,OAAO,EAAc,UAAU,EAAE,CAAC","sourcesContent":["import { fetchWithType } from './api';\nimport { getApiUrl } from './enviroment';\n\nconst base = `${getApiUrl()}/wp-json/felix`;\n\ninterface FelixOrder {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n ssn: string;\n email: string;\n phone: string;\n url: string;\n date: string;\n notes?: string;\n wws?: string;\n referral_id?: string;\n id_source?: string;\n id_sub_source?: string;\n products: {\n id: string;\n name: string;\n quantity: number;\n rut: number;\n rot: number;\n }[];\n creditSafe: {\n firstName: string;\n lastName: string;\n street: string;\n zip: string;\n town: string;\n };\n felixStatus?: 'success' | 'error';\n customer?: string;\n seller_id?: string;\n refferal_id?: string;\n}\n\nconst postPerson = async (felixOrder: FelixOrder) => {\n try {\n return await fetchWithType<\n | {\n response: {\n scriptResult: string;\n scriptError: string;\n };\n messages: [\n {\n code: string;\n message: string;\n },\n ];\n }\n | false\n >(`${base}/createperson`, {\n method: 'POST',\n body: JSON.stringify(felixOrder),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } catch (error) {\n console.log(error);\n }\n};\n\nexport { FelixOrder, postPerson };\n"]}
|
@@ -19,7 +19,6 @@ async function apiCall(endpoint, method, data, basic = false) {
|
|
19
19
|
validateStatus: () => true,
|
20
20
|
});
|
21
21
|
}
|
22
|
-
// console.log(basic);
|
23
22
|
const headers = {
|
24
23
|
'Content-Type': 'application/json',
|
25
24
|
'Authorization': basic ? `Basic ${basic}` : `Bearer ${state.token ? state.token : ''}`,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"felixFunctions.js","sourceRoot":"","sources":["../../src/utils/felixFunctions.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Buffer } from 'buffer';\nimport state from '../store';\nconst baseURL = process.env.FELIX_URL || 'https://stage.hemfixare.se/fmi/data/v1/databases/Hemfix_web/sessions';\n\n// @ts-ignore\nwindow.Buffer = Buffer;\n\ninterface Product {\n [index: number]: string;\n}\n\ninterface Service {\n [index: number]: string;\n}\n\ninterface PortalParameter {\n 'Parameter::Pad001_Name': string;\n 'Parameter::Pad002_Data': string;\n 'Parameter::Pad031_Antal'?: string;\n}\n\ninterface FieldData {\n Pa01_FirstName: string;\n Pa02_LastName: string;\n Pa03_Address1: string;\n Pa04_Address2: string;\n Pa05_Zipcode: string;\n Pa06_City: string;\n Pa07_State: string;\n Pa08_Country: string;\n Pa11_StatusExternal: string;\n Pa12_PersonalNo: string;\n Pa20_Email: string;\n Pa30_Phone: string;\n Pa50_Type: string;\n Pa51_Notes: string;\n Pa041_AssignmentAddress?: string;\n Pa042_AssignmentZipCode?: string;\n Pa043_AssignmentCity?: string;\n}\n\ninterface PortalData {\n Parameter: PortalParameter[];\n}\n\ninterface ApiCallResponse {\n error?: number;\n message?: string;\n response?: Record<string, any>;\n}\n\nlet client: AxiosInstance;\n\nasync function initializeFelix(): Promise<string> {\n const auth = Buffer.from('CustomWebForm:aFMZ4iJzoaEBcwskBDxqb4Pb').toString('base64');\n const res = await apiCall('sessions', 'POST', null, auth);\n return res?.response?.token || null;\n}\n\nasync function apiCall(endpoint: string, method: 'GET' | 'POST' | 'PATCH', data?: any, basic: boolean | string = false): Promise<ApiCallResponse> {\n if (!client) {\n client = axios.create({\n baseURL,\n validateStatus: () => true,\n });\n }\n\n // console.log(basic);\n\n const headers: { [key: string]: string } = {\n 'Content-Type': 'application/json',\n 'Authorization': basic ? `Basic ${basic}` : `Bearer ${state.token ? state.token : ''}`,\n // 'Access-Control-Allow-Origin': 'stage.hemfixare.se',\n };\n\n const config: AxiosRequestConfig = {\n method,\n url: endpoint,\n headers,\n data,\n };\n\n try {\n const response: AxiosResponse = await client.request(config);\n return {\n response: response.data,\n };\n } catch (error) {\n return {\n error: error.response?.status,\n message: error.response?.data || error.message,\n };\n }\n}\n\nasync function sendPerson(data: {\n products: Product[];\n serviceArr: Service[];\n // ... Define the data structure\n}): Promise<string | false> {\n // Implement the logic for sending a person\n const endpoint = 'layouts/pa.Passage/records';\n const method = 'POST';\n\n const fieldData: FieldData = {\n // ... Initialize fieldData object with data\n Pa01_FirstName: 'change',\n Pa02_LastName: 'change',\n Pa03_Address1: 'change',\n Pa04_Address2: 'change',\n Pa05_Zipcode: 'change',\n Pa06_City: 'change',\n Pa07_State: 'change',\n Pa08_Country: 'change',\n Pa11_StatusExternal: 'change',\n Pa12_PersonalNo: 'change',\n Pa20_Email: 'change',\n Pa30_Phone: 'change',\n Pa50_Type: 'change',\n Pa51_Notes: 'change',\n Pa041_AssignmentAddress: 'change',\n Pa042_AssignmentZipCode: 'change',\n Pa043_AssignmentCity: 'change',\n };\n\n const portalData: PortalData = {\n Parameter: [\n // ... Initialize portalData array with data\n ],\n };\n\n // If products are present in data\n if (data.products && Array.isArray(data.products)) {\n // ... Process products and add them to portalData\n }\n\n const requestData = {\n fieldData,\n portalData,\n };\n\n const res = await apiCall(endpoint, method, requestData);\n if (res?.response?.recordId) {\n // ... Process recordId\n }\n return res?.response?.recordId || false;\n}\n\nasync function checkPerson(ssn: string, url: string): Promise<string | null> {\n // Implement the logic for checking a person\n const endpoint = 'layouts/pa.Passage/records';\n const method = 'POST';\n\n const data = {\n 'fieldData': {\n Pa50_Type: url,\n },\n 'script': 'pa.pub.PassageCheckPerson',\n 'script.param': ssn,\n };\n\n const res = await apiCall(endpoint, method, data);\n return res?.response?.recordId || null;\n}\n\nasync function getPersonData(id: string): Promise<any> {\n // Implement the logic for getting person data\n const endpoint = `layouts/pa.PassageGetData/records/${id}`;\n const method = 'GET';\n\n const res = await apiCall(endpoint, method);\n return res?.response?.data || null;\n}\n\nasync function updatePerson(\n data: {\n // ... Define the data structure\n products: Product[];\n serviceArr: Service[];\n recievedChanged: boolean;\n },\n id: string,\n): Promise<string | false> {\n // Implement the logic for updating a person\n const endpoint = `layouts/pa.Passage/records/${id}`;\n const method = 'PATCH';\n\n const fieldData: FieldData = {\n // ... Initialize fieldData object with data\n Pa01_FirstName: 'change',\n Pa02_LastName: 'change',\n Pa03_Address1: 'change',\n Pa04_Address2: 'change',\n Pa05_Zipcode: 'change',\n Pa06_City: 'change',\n Pa07_State: 'change',\n Pa08_Country: 'change',\n Pa11_StatusExternal: 'change',\n Pa12_PersonalNo: 'change',\n Pa20_Email: 'change',\n Pa30_Phone: 'change',\n Pa50_Type: 'change',\n Pa51_Notes: 'change',\n Pa041_AssignmentAddress: 'change',\n Pa042_AssignmentZipCode: 'change',\n Pa043_AssignmentCity: 'change',\n };\n\n const portalData: PortalData = {\n Parameter: [\n // ... Initialize portalData array with data\n ],\n };\n\n // If products are present in data\n if (data.products && Array.isArray(data.products)) {\n // ... Process products and add them to portalData\n }\n\n // If serviceArr is present in data\n if (data.serviceArr && Array.isArray(data.serviceArr) && !data.products?.length) {\n // ... Process serviceArr and add them to portalData\n }\n\n // If recievedChanged is \"true\" in data\n if (data.recievedChanged) {\n // ... Add assignment data to fieldData\n }\n\n const requestData = {\n fieldData,\n portalData,\n };\n\n const res = await apiCall(endpoint, method, requestData);\n if (res?.message === 'OK') {\n // ... Process response\n return id;\n }\n return false;\n}\n\nasync function findPricing(data: string): Promise<any> {\n // Implement the logic for finding pricing\n const endpoint = 'layouts/pa.PassagePricing/_find';\n const method = 'POST';\n\n const query = {\n query: [\n {\n As014_WebFormType_c: data,\n },\n ],\n };\n\n const res = await apiCall(endpoint, method, query);\n return res;\n}\n\nasync function processPassageRecords(data: string): Promise<any> {\n // Implement the logic for processing passage records\n const endpoint = `layouts/pa.Passage/script/pa.pub.ProcessCustomWebForm?script.param=${data}`;\n const method = 'GET';\n\n const res = await apiCall(endpoint, method);\n return res;\n}\n\nexport { checkPerson, findPricing, getPersonData, initializeFelix, processPassageRecords, sendPerson, updatePerson };\n"]}
|
1
|
+
{"version":3,"file":"felixFunctions.js","sourceRoot":"","sources":["../../src/utils/felixFunctions.ts"],"names":[],"mappings":"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","sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { Buffer } from 'buffer';\nimport state from '../store';\nconst baseURL = process.env.FELIX_URL || 'https://stage.hemfixare.se/fmi/data/v1/databases/Hemfix_web/sessions';\n\n// @ts-ignore\nwindow.Buffer = Buffer;\n\ninterface Product {\n [index: number]: string;\n}\n\ninterface Service {\n [index: number]: string;\n}\n\ninterface PortalParameter {\n 'Parameter::Pad001_Name': string;\n 'Parameter::Pad002_Data': string;\n 'Parameter::Pad031_Antal'?: string;\n}\n\ninterface FieldData {\n Pa01_FirstName: string;\n Pa02_LastName: string;\n Pa03_Address1: string;\n Pa04_Address2: string;\n Pa05_Zipcode: string;\n Pa06_City: string;\n Pa07_State: string;\n Pa08_Country: string;\n Pa11_StatusExternal: string;\n Pa12_PersonalNo: string;\n Pa20_Email: string;\n Pa30_Phone: string;\n Pa50_Type: string;\n Pa51_Notes: string;\n Pa041_AssignmentAddress?: string;\n Pa042_AssignmentZipCode?: string;\n Pa043_AssignmentCity?: string;\n}\n\ninterface PortalData {\n Parameter: PortalParameter[];\n}\n\ninterface ApiCallResponse {\n error?: number;\n message?: string;\n response?: Record<string, any>;\n}\n\nlet client: AxiosInstance;\n\nasync function initializeFelix(): Promise<string> {\n const auth = Buffer.from('CustomWebForm:aFMZ4iJzoaEBcwskBDxqb4Pb').toString('base64');\n const res = await apiCall('sessions', 'POST', null, auth);\n return res?.response?.token || null;\n}\n\nasync function apiCall(endpoint: string, method: 'GET' | 'POST' | 'PATCH', data?: any, basic: boolean | string = false): Promise<ApiCallResponse> {\n if (!client) {\n client = axios.create({\n baseURL,\n validateStatus: () => true,\n });\n }\n\n const headers: { [key: string]: string } = {\n 'Content-Type': 'application/json',\n 'Authorization': basic ? `Basic ${basic}` : `Bearer ${state.token ? state.token : ''}`,\n // 'Access-Control-Allow-Origin': 'stage.hemfixare.se',\n };\n\n const config: AxiosRequestConfig = {\n method,\n url: endpoint,\n headers,\n data,\n };\n\n try {\n const response: AxiosResponse = await client.request(config);\n return {\n response: response.data,\n };\n } catch (error) {\n return {\n error: error.response?.status,\n message: error.response?.data || error.message,\n };\n }\n}\n\nasync function sendPerson(data: {\n products: Product[];\n serviceArr: Service[];\n // ... Define the data structure\n}): Promise<string | false> {\n // Implement the logic for sending a person\n const endpoint = 'layouts/pa.Passage/records';\n const method = 'POST';\n\n const fieldData: FieldData = {\n // ... Initialize fieldData object with data\n Pa01_FirstName: 'change',\n Pa02_LastName: 'change',\n Pa03_Address1: 'change',\n Pa04_Address2: 'change',\n Pa05_Zipcode: 'change',\n Pa06_City: 'change',\n Pa07_State: 'change',\n Pa08_Country: 'change',\n Pa11_StatusExternal: 'change',\n Pa12_PersonalNo: 'change',\n Pa20_Email: 'change',\n Pa30_Phone: 'change',\n Pa50_Type: 'change',\n Pa51_Notes: 'change',\n Pa041_AssignmentAddress: 'change',\n Pa042_AssignmentZipCode: 'change',\n Pa043_AssignmentCity: 'change',\n };\n\n const portalData: PortalData = {\n Parameter: [\n // ... Initialize portalData array with data\n ],\n };\n\n // If products are present in data\n if (data.products && Array.isArray(data.products)) {\n // ... Process products and add them to portalData\n }\n\n const requestData = {\n fieldData,\n portalData,\n };\n\n const res = await apiCall(endpoint, method, requestData);\n if (res?.response?.recordId) {\n // ... Process recordId\n }\n return res?.response?.recordId || false;\n}\n\nasync function checkPerson(ssn: string, url: string): Promise<string | null> {\n // Implement the logic for checking a person\n const endpoint = 'layouts/pa.Passage/records';\n const method = 'POST';\n\n const data = {\n 'fieldData': {\n Pa50_Type: url,\n },\n 'script': 'pa.pub.PassageCheckPerson',\n 'script.param': ssn,\n };\n\n const res = await apiCall(endpoint, method, data);\n return res?.response?.recordId || null;\n}\n\nasync function getPersonData(id: string): Promise<any> {\n // Implement the logic for getting person data\n const endpoint = `layouts/pa.PassageGetData/records/${id}`;\n const method = 'GET';\n\n const res = await apiCall(endpoint, method);\n return res?.response?.data || null;\n}\n\nasync function updatePerson(\n data: {\n // ... Define the data structure\n products: Product[];\n serviceArr: Service[];\n recievedChanged: boolean;\n },\n id: string,\n): Promise<string | false> {\n // Implement the logic for updating a person\n const endpoint = `layouts/pa.Passage/records/${id}`;\n const method = 'PATCH';\n\n const fieldData: FieldData = {\n // ... Initialize fieldData object with data\n Pa01_FirstName: 'change',\n Pa02_LastName: 'change',\n Pa03_Address1: 'change',\n Pa04_Address2: 'change',\n Pa05_Zipcode: 'change',\n Pa06_City: 'change',\n Pa07_State: 'change',\n Pa08_Country: 'change',\n Pa11_StatusExternal: 'change',\n Pa12_PersonalNo: 'change',\n Pa20_Email: 'change',\n Pa30_Phone: 'change',\n Pa50_Type: 'change',\n Pa51_Notes: 'change',\n Pa041_AssignmentAddress: 'change',\n Pa042_AssignmentZipCode: 'change',\n Pa043_AssignmentCity: 'change',\n };\n\n const portalData: PortalData = {\n Parameter: [\n // ... Initialize portalData array with data\n ],\n };\n\n // If products are present in data\n if (data.products && Array.isArray(data.products)) {\n // ... Process products and add them to portalData\n }\n\n // If serviceArr is present in data\n if (data.serviceArr && Array.isArray(data.serviceArr) && !data.products?.length) {\n // ... Process serviceArr and add them to portalData\n }\n\n // If recievedChanged is \"true\" in data\n if (data.recievedChanged) {\n // ... Add assignment data to fieldData\n }\n\n const requestData = {\n fieldData,\n portalData,\n };\n\n const res = await apiCall(endpoint, method, requestData);\n if (res?.message === 'OK') {\n // ... Process response\n return id;\n }\n return false;\n}\n\nasync function findPricing(data: string): Promise<any> {\n // Implement the logic for finding pricing\n const endpoint = 'layouts/pa.PassagePricing/_find';\n const method = 'POST';\n\n const query = {\n query: [\n {\n As014_WebFormType_c: data,\n },\n ],\n };\n\n const res = await apiCall(endpoint, method, query);\n return res;\n}\n\nasync function processPassageRecords(data: string): Promise<any> {\n // Implement the logic for processing passage records\n const endpoint = `layouts/pa.Passage/script/pa.pub.ProcessCustomWebForm?script.param=${data}`;\n const method = 'GET';\n\n const res = await apiCall(endpoint, method);\n return res;\n}\n\nexport { checkPerson, findPricing, getPersonData, initializeFelix, processPassageRecords, sendPerson, updatePerson };\n"]}
|