@cling-se/widget 1.0.0-beta.1 → 1.0.0-beta.3

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 (241) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.internal.md +82 -0
  3. package/README.md +14 -40
  4. package/README.public.md +14 -0
  5. package/dist/AddClientCallout-DRcy9Dqb.js +101 -0
  6. package/dist/AnswerModal-Dc3cgkap.js +3291 -0
  7. package/dist/AttachmentItem-Bef5zdHr.js +171 -0
  8. package/dist/BaseUpload--paElAyr.js +2472 -0
  9. package/dist/BlockMedia-DbVE3vsb.js +103 -0
  10. package/dist/CCallout-81NkOge7.js +104 -0
  11. package/dist/{CCurrencyDropdown-qH-3m2eP.js → CCurrencyDropdown-M3hi1VVi.js} +91 -49
  12. package/dist/CDropdownItem-DvaU14-V.js +749 -0
  13. package/dist/CFormField.vue_vue_type_script_setup_true_lang-B4s_Zfsp.js +292 -0
  14. package/dist/{CPhoneFormat-CfQayFxw.js → CPhoneFormat-BBQ_UIc_.js} +13 -21
  15. package/dist/CPhoneInput-Dw_LJDgc.js +207 -0
  16. package/dist/CPriceInput-BfWZZv0f.js +140 -0
  17. package/dist/CSelect-B1AAIFbK.js +98 -0
  18. package/dist/CSkeleton.vue_vue_type_script_setup_true_lang-D56L_PYT.js +51 -0
  19. package/dist/ClientAutocomplete-D5veIKyZ.js +532 -0
  20. package/dist/ClientModal-D8_TPzkv.js +1181 -0
  21. package/dist/ColorPicker-C0OahiVg.js +1408 -0
  22. package/dist/CompanyModal-CjzwQU4B.js +250 -0
  23. package/dist/ContentWrapper-DrmiaFOz.js +265 -0
  24. package/dist/CoverBlockSettings-C9DWvA-C.js +861 -0
  25. package/dist/DocAnswer-BEsvAMEp.js +33 -0
  26. package/dist/DocDetails--LO0-S5d.js +448 -0
  27. package/dist/DocForm-D6_tGw06.js +6748 -0
  28. package/dist/DocFormSend-CdFL6rOD.js +171 -0
  29. package/dist/DocLinks-CIQFUh7c.js +36 -0
  30. package/dist/DocModalBase-DtPJK9sp.js +29 -0
  31. package/dist/DocPrint-qX88Ue2I.js +399 -0
  32. package/dist/DocReceipt-BbXoCmpz.js +341 -0
  33. package/dist/DocSendReminder-DZqOkd63.js +181 -0
  34. package/dist/DocTextEditor-Cw-Skmd4.js +19413 -0
  35. package/dist/DocTimeline-CdbSOVD1.js +537 -0
  36. package/dist/DocumentClient-DtTv7gkF.js +90 -0
  37. package/dist/DocumentLayout-BRfEjoYq.js +1368 -0
  38. package/dist/DocumentLogotype-CUNzyewq.js +162 -0
  39. package/dist/DocumentVoided-CgDt-JFI.js +33 -0
  40. package/dist/EmbedInput-rPvTnpXn.js +157 -0
  41. package/dist/EmbedSettings-BtmFxYGB.js +103 -0
  42. package/dist/ErrorCallout-B6YrdUsG.js +34 -0
  43. package/dist/FilePreviewModal-BfIqIIbb.js +202 -0
  44. package/dist/Flag-CE3K7-8a.js +41 -0
  45. package/dist/HeaderSettings-5QR7MmVf.js +720 -0
  46. package/dist/ImageSelectModal-E3hGi8ty.js +119 -0
  47. package/dist/ImageUploadWrapper-BaexFAAh.js +1585 -0
  48. package/dist/Index--gv5fH24.js +201 -0
  49. package/dist/{Index-D4XgxmbD.js → Index-B3ycPjAI.js} +10 -18
  50. package/dist/Index-B7ECpXAa.js +28 -0
  51. package/dist/Index-BIXfUsHH.js +52 -0
  52. package/dist/Index-BM658CCq.js +93 -0
  53. package/dist/{Index--qPMWUMT.js → Index-B_DCM_bL.js} +48 -61
  54. package/dist/Index-BcMATT2_.js +47 -0
  55. package/dist/Index-BpWFU3Td.js +68 -0
  56. package/dist/Index-BulSI5iO.js +38 -0
  57. package/dist/Index-CHInIRw5.js +228 -0
  58. package/dist/Index-COYqsxs9.js +25 -0
  59. package/dist/Index-CSGk060H.js +1098 -0
  60. package/dist/Index-CV2O2fWT.js +21 -0
  61. package/dist/{Index-Bu0MGrj6.js → Index-CXqdBSZ3.js} +313 -206
  62. package/dist/Index-CavttI66.js +126 -0
  63. package/dist/Index-CbZ65-O3.js +629 -0
  64. package/dist/Index-CqrTij2j.js +70 -0
  65. package/dist/Index-CrsGxDWC.js +16 -0
  66. package/dist/Index-CxY5Ii6K.js +49 -0
  67. package/dist/Index-D7Z2w9cd.js +163 -0
  68. package/dist/Index-D7ixmzBH.js +76 -0
  69. package/dist/Index-D7pzv-AR.js +74 -0
  70. package/dist/Index-D9keESQi.js +159 -0
  71. package/dist/Index-Dd6ueeUc.js +136 -0
  72. package/dist/{Index-DIOiMm9f.js → Index-DexIUz3R.js} +10 -18
  73. package/dist/Index-Dnmt6W0u.js +140 -0
  74. package/dist/Index-DtcV6rl1.js +4 -0
  75. package/dist/Index-DuDVafLn.js +3452 -0
  76. package/dist/Index-L913X8Ly.js +102 -0
  77. package/dist/Index-Mdn0niR_.js +28 -0
  78. package/dist/Index-_ellB2fs.js +363 -0
  79. package/dist/{Index-DcQbh-z2.js → Index-baSB5tPv.js} +9 -17
  80. package/dist/Index-bgKndj-l.js +39 -0
  81. package/dist/Index-lNYXAFUH.js +87 -0
  82. package/dist/Index.vue_vue_type_script_lang-DLogex2i.js +671 -0
  83. package/dist/InputToggleRow-BCvMVbW-.js +99 -0
  84. package/dist/ManualPopover-BzBvSl_x.js +57 -0
  85. package/dist/MediaWrapper-_LPau2Ks.js +18 -0
  86. package/dist/{NotBindingText-CNV2Wmdx.js → NotBindingText-DgcOjUmQ.js} +13 -17
  87. package/dist/PackageGroup-1X3jUipj.js +1058 -0
  88. package/dist/PdfTerms-Bf4TlzP5.js +34 -0
  89. package/dist/PdfViewer-BdhwFfc6.js +392 -0
  90. package/dist/PlainHtml.vue_vue_type_script_setup_true_lang-BgsfquR_.js +17 -0
  91. package/dist/PriceHeader-DyC8xssf.js +488 -0
  92. package/dist/SearchApi-C__orGkO.js +137 -0
  93. package/dist/SendForm-Be8uiuaJ.js +7031 -0
  94. package/dist/Setup-DbXs2Zar.js +47 -0
  95. package/dist/{SmartList-Qgu0rMrI.js → SmartList-BmmtZoZ0.js} +16 -24
  96. package/dist/Sortable.vue_vue_type_script_setup_true_lang-D0mloJIN.js +1303 -0
  97. package/dist/{TermsSettings-CE3h_xkm.js → TermsSettings-DsN6v5yj.js} +169 -49
  98. package/dist/ThemeColorRow-BL6p09pN.js +108 -0
  99. package/dist/ToggleBinding-B-tVioQ9.js +44 -0
  100. package/dist/UploadModal-BnA1xLMy.js +134 -0
  101. package/dist/VideoPlayerInput-D38S1IDH.js +135 -0
  102. package/dist/VideoPlayerSettings-B5iXoj5E.js +78 -0
  103. package/dist/VideoSelectModal-BNCoMFKU.js +217 -0
  104. package/dist/{anime.es-BrPTThYb.js → anime.es-gdcpA-eY.js} +1 -2
  105. package/dist/{color-TdtKxwVa.js → color-HetJPhlA.js} +1 -2
  106. package/dist/{debounce-C1AuSpOZ.js → debounce-CBRJalZI.js} +7 -7
  107. package/dist/dom-CkTGWrfu.js +69 -0
  108. package/dist/{focusDrawerMixin-Be6BAK8-.js → focusDrawerMixin-T94b2Y6F.js} +1 -1
  109. package/dist/{formDrawerState-DRbg5rVI.js → formDrawerState-jssoGOce.js} +2 -2
  110. package/dist/helpers-Vo_6Zz3M.js +44 -0
  111. package/dist/index-8g2jwLJx.js +513 -0
  112. package/dist/index-B0udVHyo.js +125 -0
  113. package/dist/index-D63IJVsJ.js +3525 -0
  114. package/dist/index-DCYCN_FR.js +508 -0
  115. package/dist/index-FRHGChx1.js +149 -0
  116. package/dist/index-HXiq8Yxs.js +270 -0
  117. package/dist/index-jOufDnZ8.js +188 -0
  118. package/dist/index.es.js +2 -5
  119. package/dist/index.umd.js +306 -1505
  120. package/dist/{main-WKzC-Dnu.js → main-C4OdoeS2.js} +36750 -37369
  121. package/dist/mapFormMixin-v-nbaWcx.js +1544 -0
  122. package/dist/omit-GuxX6Zt-.js +31 -0
  123. package/dist/{publicSenderState-BujjYsZZ.js → publicSenderState-C-7OMKKW.js} +4 -4
  124. package/dist/regions-BdZt9Srn.js +1250 -0
  125. package/dist/splitpanes-DChJiJ8d.js +342 -0
  126. package/dist/style.css +1 -4
  127. package/dist/template-m1V22cUt.js +1493 -0
  128. package/dist/{throttle-CWPJmFid.js → throttle-WWMDZKby.js} +2 -2
  129. package/dist/tippy.esm-Dz-faEsS.js +1994 -0
  130. package/dist/useTermsModal-C_eLdGLi.js +87 -0
  131. package/dist/{utils-CA_Zy6u1.js → utils-vnvZGRwQ.js} +8 -11
  132. package/dist/validation-C-dQpENM.js +40 -0
  133. package/package.json +25 -31
  134. package/.eslintrc.cjs +0 -4
  135. package/dist/AddClientCallout-BWnvyBcK.js +0 -46
  136. package/dist/AnswerModal-CLGRdSnK.js +0 -3874
  137. package/dist/AttachmentItem-BPS0-wyc.js +0 -78
  138. package/dist/BaseDatePicker-BbmV_GdD.js +0 -3183
  139. package/dist/BaseUpload-9gPgI7r6.js +0 -1977
  140. package/dist/BlockMedia-DkPFWiYL.js +0 -76
  141. package/dist/CCallout-T26jwUby.js +0 -59
  142. package/dist/CDropdownItem-BE8BAMD1.js +0 -636
  143. package/dist/CField.vue_vue_type_style_index_0_lang-l0sNRNKZ.js +0 -1
  144. package/dist/CFormField-DECEfoVq.js +0 -241
  145. package/dist/CPriceInput-C4SOB-P5.js +0 -112
  146. package/dist/CTabs.vue_vue_type_style_index_0_scoped_e02a6440_lang-l0sNRNKZ.js +0 -1
  147. package/dist/ClientAutocomplete-DSebA1Mx.js +0 -78
  148. package/dist/ClientModal-BXFYvYCF.js +0 -625
  149. package/dist/ColorPicker-CZ_bJabP.js +0 -2879
  150. package/dist/CompanyModal-CDr3t28n.js +0 -141
  151. package/dist/ContentWrapper-BwmMoe4W.js +0 -183
  152. package/dist/CoverBlockSettings-_F11-DGc.js +0 -275
  153. package/dist/DocAnswer-BR59xzkT.js +0 -36
  154. package/dist/DocDetails-D1qbCbps.js +0 -259
  155. package/dist/DocForm-DBc2a7z5.js +0 -7272
  156. package/dist/DocFormSend-Casix-yG.js +0 -144
  157. package/dist/DocLinks-DGTaewyX.js +0 -38
  158. package/dist/DocModalBase-BbS_qvSv.js +0 -28
  159. package/dist/DocPrint-0PqX3mbJ.js +0 -240
  160. package/dist/DocReceipt-CU3VD5pt.js +0 -210
  161. package/dist/DocSendReminder-CuycBspr.js +0 -137
  162. package/dist/DocTextEditor-CntS2Bd-.js +0 -17180
  163. package/dist/DocTimeline-DJuv3yBe.js +0 -481
  164. package/dist/DocumentClient-C25XXzz6.js +0 -136
  165. package/dist/DocumentLayout-B7afHRMr.js +0 -4909
  166. package/dist/DocumentLogotype-sqI51wvM.js +0 -87
  167. package/dist/DocumentVoided-TahdTSMn.js +0 -25
  168. package/dist/EmbedInput-BY-wHSfc.js +0 -113
  169. package/dist/EmbedSettings-8pfjk4NP.js +0 -72
  170. package/dist/ErrorCallout-Dsr8PNsU.js +0 -28
  171. package/dist/FilePreviewModal-CcEinEFg.js +0 -81
  172. package/dist/Flag-PJKrghi9.js +0 -114
  173. package/dist/HeaderSettings-BqczIOsG.js +0 -392
  174. package/dist/ImageSelectModal-Cd-HhKnH.js +0 -84
  175. package/dist/ImageUploadWrapper-Dv43rGdb.js +0 -1604
  176. package/dist/Index-6b5VBKE-.js +0 -107
  177. package/dist/Index-B4pRJnbw.js +0 -84
  178. package/dist/Index-B69f8qgZ.js +0 -62
  179. package/dist/Index-B79YN9RO.js +0 -25
  180. package/dist/Index-BBrlPoe8.js +0 -58
  181. package/dist/Index-BXfWJCuq.js +0 -52
  182. package/dist/Index-Bd76vb37.js +0 -55
  183. package/dist/Index-BmbtQO5F.js +0 -150
  184. package/dist/Index-ByV_kJaH.js +0 -77
  185. package/dist/Index-CDV5rhWS.js +0 -49
  186. package/dist/Index-CIx4OOK-.js +0 -144
  187. package/dist/Index-CL1OWLt6.js +0 -223
  188. package/dist/Index-Caow0eZu.js +0 -31
  189. package/dist/Index-Cd3-3PEK.js +0 -2402
  190. package/dist/Index-CdpZBEKU.js +0 -98
  191. package/dist/Index-CmU3Sys-.js +0 -754
  192. package/dist/Index-CtRtgnpm.js +0 -32
  193. package/dist/Index-Cukkr33D.js +0 -140
  194. package/dist/Index-Cuqw0ios.js +0 -57
  195. package/dist/Index-Czm_WdqC.js +0 -25
  196. package/dist/Index-DNdYXHgr.js +0 -33
  197. package/dist/Index-DcuBxutp.js +0 -642
  198. package/dist/Index-DpWNWiyY.js +0 -291
  199. package/dist/Index-DzS1rZdF.js +0 -24
  200. package/dist/Index-N6s5pZxv.js +0 -26
  201. package/dist/Index-g_DNu4mt.js +0 -69
  202. package/dist/Index-mJ8F41GY.js +0 -154
  203. package/dist/Index-q7W9KA8m.js +0 -21
  204. package/dist/Index-rtzblZp4.js +0 -70
  205. package/dist/InputToggleRow-CZjxsDOQ.js +0 -57
  206. package/dist/ManualPopover-CZrWiT-P.js +0 -58
  207. package/dist/MediaWrapper-D37qK4KR.js +0 -23
  208. package/dist/PackageGroup-Heo_s8ct.js +0 -699
  209. package/dist/PdfTerms-AB9tXAtU.js +0 -36
  210. package/dist/PdfViewer-CIVkvOBr.js +0 -373
  211. package/dist/PlainHtml-CPmIebjY.js +0 -20
  212. package/dist/PriceHeader-DhDAruwX.js +0 -339
  213. package/dist/SearchApi-BMgdaI4s.js +0 -161
  214. package/dist/Setup-VIaIV9uT.js +0 -50
  215. package/dist/ThemeColorRow-DYJNgk6S.js +0 -67
  216. package/dist/ToggleBinding-CuwCeYpO.js +0 -38
  217. package/dist/UploadModal-BITcxG-J.js +0 -95
  218. package/dist/VideoPlayerInput-8szEX_8L.js +0 -93
  219. package/dist/VideoPlayerSettings-BIPytm6w.js +0 -61
  220. package/dist/VideoSelectModal-B-Pe34nb.js +0 -100
  221. package/dist/answerDocumentMixin-W7vE1Gp4.js +0 -51
  222. package/dist/formComponentsInstall-Bm3VMOh6.js +0 -2507
  223. package/dist/formValidationMixin-COkY8COk.js +0 -49
  224. package/dist/index-BFvjENMH.js +0 -81
  225. package/dist/index-BV2nGWay.js +0 -492
  226. package/dist/index-BgJ05dYc.js +0 -165
  227. package/dist/index-CMPAXxzs.js +0 -347
  228. package/dist/index-DNDjI5uI.js +0 -3916
  229. package/dist/index-aoff9oUi.js +0 -102
  230. package/dist/mapFormMixin-QbevCwJK.js +0 -72
  231. package/dist/omit-CTp9CXoU.js +0 -31
  232. package/dist/splitpanes-BHUVsCZF.js +0 -382
  233. package/dist/tinycolor-kTl0yxzz.js +0 -633
  234. package/dist/tippy.esm-sS5koDSU.js +0 -1799
  235. package/dist/vuedraggable.umd-BA3ZDRAp.js +0 -3161
  236. package/dist/vuex.esm-DKGl8mcw.js +0 -467
  237. package/public/favicon.ico +0 -0
  238. package/tsconfig.json +0 -26
  239. package/tsconfig.node.json +0 -10
  240. package/tsconfig.paths.json +0 -17
  241. package/vite.config.ts +0 -60
@@ -0,0 +1,70 @@
1
+ import { m as o } from "./mapFormMixin-v-nbaWcx.js";
2
+ import { I as d } from "./InputToggleRow-BCvMVbW-.js";
3
+ import { _ as m, b as u, o as i, c as p, w as g, s } from "./main-C4OdoeS2.js";
4
+ const A = {
5
+ i18nOptions: {
6
+ namespaces: "estimatedTimeStartEnd",
7
+ messages: {
8
+ en: {
9
+ title: "Start and end date",
10
+ label: "Work start and ends"
11
+ },
12
+ sv: {
13
+ title: "Start- och slutdatum",
14
+ label: "Arbetet påbörjas och avslutas"
15
+ }
16
+ }
17
+ },
18
+ name: "EstimatedWorkStartAndEndAtTextEdit",
19
+ components: {
20
+ InputToggleRow: d
21
+ },
22
+ mixins: [o(["startAt", "endAt"])],
23
+ methods: {
24
+ getDateValue(t) {
25
+ return t ? this.$formatDate(t, "yyyy-MM-dd") : null;
26
+ }
27
+ }
28
+ }, v = { style: { display: "inline-flex" } }, f = ["value", "max"], y = ["value", "min"];
29
+ function b(t, e, D, w, I, n) {
30
+ const r = u("InputToggleRow");
31
+ return i(), p(r, {
32
+ "display-value": t.startAt && t.endAt ? `${t.$formatDate(t.startAt)} → ${t.$formatDate(t.endAt)}` : t.$t("_common:add"),
33
+ label: t.$t("label"),
34
+ "show-clear": !!(t.startAt && t.endAt),
35
+ onRemove: e[2] || (e[2] = () => {
36
+ t.startAt = null, t.endAt = null;
37
+ })
38
+ }, {
39
+ default: g(() => [
40
+ s("div", v, [
41
+ s("input", {
42
+ type: "date",
43
+ class: "ml-1 bg-gray-100",
44
+ value: n.getDateValue(t.startAt),
45
+ max: n.getDateValue(t.endAt),
46
+ onInput: e[0] || (e[0] = (a) => {
47
+ var l;
48
+ return t.startAt = (l = a.target) != null && l.value ? new Date(a.target.value).toISOString() : null;
49
+ })
50
+ }, null, 40, f),
51
+ e[3] || (e[3] = s("div", { style: { "line-height": "calc(3 * var(--rem))", margin: "0 calc(0.5 * var(--rem))", "font-size": "calc(calc(1 * var(--rem)) + 2px)" } }, " → ", -1)),
52
+ s("input", {
53
+ type: "date",
54
+ class: "ml-1 bg-gray-100",
55
+ value: n.getDateValue(t.endAt),
56
+ min: n.getDateValue(t.startAt),
57
+ onInput: e[1] || (e[1] = (a) => {
58
+ var l;
59
+ return t.endAt = (l = a.target) != null && l.value ? new Date(a.target.value).toISOString() : null;
60
+ })
61
+ }, null, 40, y)
62
+ ])
63
+ ]),
64
+ _: 1
65
+ }, 8, ["display-value", "label", "show-clear"]);
66
+ }
67
+ const T = /* @__PURE__ */ m(A, [["render", b]]);
68
+ export {
69
+ T as default
70
+ };
@@ -0,0 +1,16 @@
1
+ import { h as s, i as r, o, d as c } from "./main-C4OdoeS2.js";
2
+ const i = ["innerHTML"], u = /* @__PURE__ */ s({
3
+ __name: "Index",
4
+ props: {
5
+ street: {},
6
+ zip: {},
7
+ city: {}
8
+ },
9
+ setup(t) {
10
+ const e = t, n = r(() => `${e.street ? `${e.street}, ` : ""}${e.zip ? `${e.zip} ` : ""}${e.city}`);
11
+ return (p, a) => (o(), c("div", { innerHTML: n.value }, null, 8, i));
12
+ }
13
+ });
14
+ export {
15
+ u as default
16
+ };
@@ -0,0 +1,49 @@
1
+ import { h as f, i as n, b as h, o as c, d as r, s as i, c as k, af as y, v as b, f as d, S as B, P as E, _ as g } from "./main-C4OdoeS2.js";
2
+ const w = {
3
+ key: 0,
4
+ class: "sub-chapter"
5
+ }, C = { class: "sub-chapter-title" }, F = { key: 1 }, I = { class: "sub-chapter-content" }, S = /* @__PURE__ */ f({
6
+ __name: "Index",
7
+ props: {
8
+ title: {},
9
+ hideFromEdit: { type: Boolean, default: !1 },
10
+ _value: { default: () => ({
11
+ title: ""
12
+ }) }
13
+ },
14
+ setup(u) {
15
+ const o = u, t = E("viewSettings", { canEdit: !1 }), p = n(
16
+ () => o.hideFromEdit && t.canEdit
17
+ ), v = n(() => t.canEdit), s = n(() => o.title || ""), m = (l) => {
18
+ var a;
19
+ const e = l.target;
20
+ t.setFormValue && t.setFormValue({
21
+ key: (a = o._value) == null ? void 0 : a.title,
22
+ value: (e == null ? void 0 : e.value) || ""
23
+ });
24
+ };
25
+ return (l, e) => {
26
+ const a = h("CInput");
27
+ return p.value ? d("", !0) : (c(), r("div", w, [
28
+ i("div", C, [
29
+ e[1] || (e[1] = i("span", { class: "sub-chapter-counter primary-pseudo-background" }, null, -1)),
30
+ v.value && s.value ? (c(), k(a, {
31
+ key: 0,
32
+ "model-value": s.value,
33
+ spellcheck: !1,
34
+ static: "",
35
+ class: "preview-title-input",
36
+ onKeydown: e[0] || (e[0] = y((_) => _.target.blur(), ["enter"])),
37
+ onBlur: m
38
+ }, null, 8, ["model-value"])) : s.value ? (c(), r("div", F, b(s.value), 1)) : d("", !0)
39
+ ]),
40
+ i("div", I, [
41
+ B(l.$slots, "default", {}, void 0, !0)
42
+ ])
43
+ ]));
44
+ };
45
+ }
46
+ }), V = /* @__PURE__ */ g(S, [["__scopeId", "data-v-1a63c96c"]]);
47
+ export {
48
+ V as default
49
+ };
@@ -0,0 +1,163 @@
1
+ import { m as P } from "./mapFormMixin-v-nbaWcx.js";
2
+ import I from "./FilePreviewModal-BfIqIIbb.js";
3
+ import { _ as F, S as k, z as w, a9 as C, b as m, o as d, d as u, e as f, w as g, s as S, F as v, k as b, B, v as A, f as z, c as U } from "./main-C4OdoeS2.js";
4
+ const $ = {
5
+ name: "FilePreviewWrapper",
6
+ props: {
7
+ list: {
8
+ type: Array,
9
+ default: () => [],
10
+ validator: (e) => e.length ? !(!e[0].hasOwnProperty("url") || !e[0].hasOwnProperty("name") || !e[0].hasOwnProperty("mime")) : !0
11
+ }
12
+ },
13
+ computed: {
14
+ fileList() {
15
+ return this.list.reduce(
16
+ (e, t) => this.isImage(t.mime) || this.isPdf(t.mime) ? [...e, t] : e,
17
+ []
18
+ );
19
+ }
20
+ },
21
+ methods: {
22
+ isImage(e) {
23
+ const t = e.toLowerCase(e);
24
+ return /image\/(gif|jpg|jpeg|png|bmp|svg|svg\+xml|tiff)$/.test(t);
25
+ },
26
+ isPdf(e) {
27
+ return e === "application/pdf";
28
+ },
29
+ FilePreviewModal(e) {
30
+ this.$modal.show(
31
+ I,
32
+ {
33
+ index: this.fileList.indexOf(this.list[e]),
34
+ // Translate src index to img list index
35
+ list: this.fileList
36
+ },
37
+ {
38
+ adaptive: !0,
39
+ height: "100%",
40
+ width: "100%",
41
+ classes: "",
42
+ // Don't remove. In place to not apply default modal class
43
+ transition: ""
44
+ }
45
+ );
46
+ }
47
+ }
48
+ };
49
+ function M(e, t, o, r, a, s) {
50
+ return k(e.$slots, "default", {
51
+ openModal: (n) => s.FilePreviewModal(n),
52
+ isImageOrPdf: (n) => s.isImage(n) || s.isPdf(n)
53
+ });
54
+ }
55
+ const V = /* @__PURE__ */ F($, [["render", M]]), j = {
56
+ name: "AttachmentList",
57
+ components: {
58
+ FilePreviewWrapper: V,
59
+ BaseUpload: w(
60
+ () => import("./BaseUpload--paElAyr.js")
61
+ ),
62
+ AttachmentItem: w(() => import("./AttachmentItem-Bef5zdHr.js"))
63
+ },
64
+ mixins: [P(["attachments"])],
65
+ data() {
66
+ return {
67
+ hoverIndex: null,
68
+ newFiles: [],
69
+ maxFileSize: 1e3 * 1e3 * 30
70
+ // 30 MB
71
+ };
72
+ },
73
+ computed: {
74
+ cAttachments() {
75
+ return [
76
+ ...this.attachments,
77
+ ...this.newFiles.map(
78
+ ({ displayName: e, type: t, url: o, progress: r }) => ({
79
+ name: e,
80
+ mime: t,
81
+ url: o,
82
+ progress: parseInt(r, 10)
83
+ })
84
+ )
85
+ ];
86
+ },
87
+ showRecentModal() {
88
+ return !this.viewSettings.isPublicForm;
89
+ }
90
+ },
91
+ methods: {
92
+ immutable: C,
93
+ async onUploadSuccess(e) {
94
+ const { id: t, displayName: o, url: r, mime: a } = e.response;
95
+ if (!t) throw new Error("Could not read id from uploaded file");
96
+ this.attachments = [
97
+ ...this.attachments,
98
+ {
99
+ fileId: t,
100
+ name: o,
101
+ mime: a,
102
+ url: r
103
+ }
104
+ ], this.$refs.uploader.remove(e);
105
+ },
106
+ remove(e) {
107
+ if (!this.attachments[e]) return;
108
+ const t = this.attachments.slice();
109
+ t.splice(e, 1), this.attachments = t;
110
+ }
111
+ }
112
+ }, L = { class: "font-inter" };
113
+ function N(e, t, o, r, a, s) {
114
+ const n = m("AttachmentItem"), _ = m("FilePreviewWrapper"), y = m("BaseUpload"), x = m("CButton");
115
+ return d(), u("div", L, [
116
+ f(_, { list: s.cAttachments }, {
117
+ default: g(({ openModal: p, isImageOrPdf: h }) => [
118
+ S("div", null, [
119
+ (d(!0), u(v, null, b(s.cAttachments, (i, l) => (d(), U(n, {
120
+ key: l,
121
+ "is-image-or-pdf": h(i.mime),
122
+ attachment: i,
123
+ "can-edit": e.canEdit,
124
+ "upload-progress": i.progress,
125
+ onClick: (c) => h(i.mime) ? p(l) : null,
126
+ onRemove: (c) => s.remove(l),
127
+ onInput: (c) => e.attachments = s.immutable(e.attachments).set(c, l)
128
+ }, null, 8, ["is-image-or-pdf", "attachment", "can-edit", "upload-progress", "onClick", "onRemove", "onInput"]))), 128))
129
+ ])
130
+ ]),
131
+ _: 1
132
+ }, 8, ["list"]),
133
+ e.canEdit ? (d(), u(v, { key: 0 }, [
134
+ f(y, {
135
+ ref: "uploader",
136
+ modelValue: a.newFiles,
137
+ "onUpdate:modelValue": t[0] || (t[0] = (p) => a.newFiles = p),
138
+ "recent-modal": s.showRecentModal,
139
+ "autostart-upload": !0,
140
+ "max-size": a.maxFileSize,
141
+ extensions: "png,gif,jpg,jpeg,svg,bmp,heic,heif,pdf,txt,odp,ods,odt,rtf,doc,docx,xls,xlsx,ppt,pptx,csv,ogv,mp4,webm,m4v,ogg,mp3,wav,zip,rar,json,7z,mpeg,oga,ogv,vsd,weba,webm,webp,xml,gz,tif,jfif,dwg,dwf,dwfx,dwt,msg,ai,psd,md,markdown,mdown,markdn",
142
+ accept: "*",
143
+ onUploadSuccess: s.onUploadSuccess
144
+ }, null, 8, ["modelValue", "recent-modal", "max-size", "onUploadSuccess"]),
145
+ f(x, {
146
+ type: "none",
147
+ pattern: "secondary",
148
+ wide: "",
149
+ "icon-left": "upload-cloud",
150
+ onClick: t[1] || (t[1] = () => e.$refs.uploader ? e.$refs.uploader.open() : null)
151
+ }, {
152
+ default: g(() => [
153
+ B(A(e.$t("_common:upload", { thing: e.$t("_common:file") })), 1)
154
+ ]),
155
+ _: 1
156
+ })
157
+ ], 64)) : z("", !0)
158
+ ]);
159
+ }
160
+ const W = /* @__PURE__ */ F(j, [["render", N]]);
161
+ export {
162
+ W as default
163
+ };
@@ -0,0 +1,76 @@
1
+ import { m as a } from "./mapFormMixin-v-nbaWcx.js";
2
+ import { I as u } from "./InputToggleRow-BCvMVbW-.js";
3
+ import { C as f } from "./CSelect-B1AAIFbK.js";
4
+ import { _ as T, b as l, o as c, c as U, w as m, e as s, s as n, v as i } from "./main-C4OdoeS2.js";
5
+ const h = {
6
+ i18nOptions: {
7
+ namespaces: "estimatedTimeToCompleteText",
8
+ messages: {
9
+ en: {
10
+ label: "Time to complete work",
11
+ placeholder: "Time unit"
12
+ },
13
+ sv: {
14
+ label: "Tid för att klargöra arbetet",
15
+ placeholder: "Tidsenhet"
16
+ }
17
+ }
18
+ },
19
+ name: "EstimatedTimeToCompleteEdit",
20
+ components: {
21
+ InputToggleRow: u,
22
+ CSelect: f
23
+ },
24
+ mixins: [
25
+ a(["timeUnit"]),
26
+ a(["noOfTimeUnits"], { type: "number" })
27
+ ],
28
+ created() {
29
+ this.timeUnit || (this.timeUnit = "day");
30
+ }
31
+ }, $ = { value: "hour" }, w = { value: "day" }, v = { value: "week" }, b = { value: "month" };
32
+ function y(e, o, C, _, g, O) {
33
+ const p = l("CSelect"), r = l("CInput"), d = l("InputToggleRow");
34
+ return c(), U(d, {
35
+ "display-value": e.noOfTimeUnits && e.timeUnit ? `${e.noOfTimeUnits} ${e.$t(`_common:${e.timeUnit}`, {
36
+ count: e.noOfTimeUnits
37
+ })}` : e.$t("_common:add"),
38
+ label: e.$t("label"),
39
+ "show-clear": !!(e.noOfTimeUnits && e.timeUnit),
40
+ onRemove: o[2] || (o[2] = (t) => e.noOfTimeUnits = null)
41
+ }, {
42
+ default: m(() => [
43
+ s(r, {
44
+ modelValue: e.noOfTimeUnits,
45
+ "onUpdate:modelValue": o[1] || (o[1] = (t) => e.noOfTimeUnits = t),
46
+ modelModifiers: { number: !0 },
47
+ type: "number",
48
+ style: { width: "calc(15 * var(--rem))" }
49
+ }, {
50
+ suffix: m(() => [
51
+ s(p, {
52
+ modelValue: e.timeUnit,
53
+ "onUpdate:modelValue": o[0] || (o[0] = (t) => e.timeUnit = t),
54
+ placeholder: e.$t("placeholder"),
55
+ class: "select-width plain",
56
+ style: { width: "120px" }
57
+ }, {
58
+ default: m(() => [
59
+ n("option", $, i(e.$t("_common:hour_plural")), 1),
60
+ n("option", w, i(e.$t("_common:day_plural")), 1),
61
+ n("option", v, i(e.$t("_common:week_plural")), 1),
62
+ n("option", b, i(e.$t("_common:month_plural")), 1)
63
+ ]),
64
+ _: 1
65
+ }, 8, ["modelValue", "placeholder"])
66
+ ]),
67
+ _: 1
68
+ }, 8, ["modelValue"])
69
+ ]),
70
+ _: 1
71
+ }, 8, ["display-value", "label", "show-clear"]);
72
+ }
73
+ const S = /* @__PURE__ */ T(h, [["render", y]]);
74
+ export {
75
+ S as default
76
+ };
@@ -0,0 +1,74 @@
1
+ import { m as l } from "./mapFormMixin-v-nbaWcx.js";
2
+ import { u as c } from "./index-8g2jwLJx.js";
3
+ import { _ as v, z as p, b as s, o as i, c as n } from "./main-C4OdoeS2.js";
4
+ const g = {
5
+ name: "PackageGroupBlock",
6
+ components: {
7
+ PackageGroupRead: p(
8
+ () => import("./PackageGroup-1X3jUipj.js")
9
+ ),
10
+ PackageGroupEdit: p(() => import("./Index-DuDVafLn.js"))
11
+ },
12
+ emits: ["input", "remove"],
13
+ mixins: [l(["type", "packages"])],
14
+ setup() {
15
+ return {
16
+ v$: c()
17
+ };
18
+ },
19
+ data() {
20
+ return {
21
+ persistedGroup: {
22
+ type: "",
23
+ packages: [],
24
+ articles: []
25
+ }
26
+ };
27
+ },
28
+ computed: {
29
+ valuePaths() {
30
+ return {
31
+ ...this._value,
32
+ ...this._value.groupId && {
33
+ hideGroupPrice: `data.packageGroup.${this._value.groupId}.hideGroupPrice`
34
+ },
35
+ articles: "articles"
36
+ };
37
+ }
38
+ },
39
+ validations() {
40
+ return this.isForm ? {
41
+ type: {
42
+ required: (e) => !!e
43
+ },
44
+ packages: {
45
+ required: (e) => e && e.length
46
+ // packages cannot be left empty
47
+ }
48
+ } : {
49
+ // No validation for read mode
50
+ };
51
+ }
52
+ };
53
+ function k(e, o, _, a, t, u) {
54
+ const d = s("PackageGroupEdit"), m = s("PackageGroupRead");
55
+ return e.canEdit ? (i(), n(d, {
56
+ key: 0,
57
+ "persisted-group": t.persistedGroup,
58
+ "onUpdate:persistedGroup": o[0] || (o[0] = (r) => t.persistedGroup = r),
59
+ _document: e._document,
60
+ _value: u.valuePaths,
61
+ validator: a.v$,
62
+ onInput: o[1] || (o[1] = (r) => e.$emit("input", r)),
63
+ onRemove: o[2] || (o[2] = (r) => e.$emit("remove", r))
64
+ }, null, 8, ["persisted-group", "_document", "_value", "validator"])) : (i(), n(m, {
65
+ key: 1,
66
+ _document: e._document,
67
+ _value: u.valuePaths,
68
+ validator: a.v$
69
+ }, null, 8, ["_document", "_value", "validator"]));
70
+ }
71
+ const y = /* @__PURE__ */ v(g, [["render", k]]);
72
+ export {
73
+ y as default
74
+ };
@@ -0,0 +1,159 @@
1
+ import { m as C } from "./mapFormMixin-v-nbaWcx.js";
2
+ import { V as F } from "./PdfViewer-BdhwFfc6.js";
3
+ import { _ as I, z as g, p as P, D as h, b as d, o as n, d as a, E as V, G as x, n as f, s as t, e as p, v as u, w as v, F as b, B as y, f as m, c as z } from "./main-C4OdoeS2.js";
4
+ const S = {
5
+ i18nOptions: {
6
+ namespaces: "pdfBlock",
7
+ messages: {
8
+ en: {
9
+ embedded: "Embedded",
10
+ numOfPages: "- {{numPages}} pages",
11
+ upload: "Upload PDF"
12
+ },
13
+ sv: {
14
+ embedded: "Inbäddat",
15
+ numOfPages: "- {{numPages}} sidor",
16
+ upload: "Ladda upp en pdf"
17
+ }
18
+ }
19
+ },
20
+ name: "Pdf",
21
+ components: {
22
+ PdfViewer: F,
23
+ FileIcon: g(
24
+ () => import("./Index-DtcV6rl1.js")
25
+ ),
26
+ BaseUpload: g(
27
+ () => import("./BaseUpload--paElAyr.js")
28
+ )
29
+ },
30
+ mixins: [C(["file"])],
31
+ inject: {
32
+ isPdf: {
33
+ default: !1
34
+ },
35
+ _firstBlock: {
36
+ default: !1
37
+ },
38
+ _lastBlock: {
39
+ default: !1
40
+ }
41
+ },
42
+ data() {
43
+ return {
44
+ uploadProgress: null,
45
+ isHover: !1,
46
+ numPages: null,
47
+ maxFileSize: 1e3 * 1e3 * 30
48
+ // 30 MB
49
+ };
50
+ },
51
+ computed: {
52
+ showControls() {
53
+ return !this.file || this.isHover || this.uploadProgress !== null;
54
+ },
55
+ // Fetch the file from API instead of AWS directly
56
+ fileUrl() {
57
+ if (!this.file || !this.file.url) return null;
58
+ if (this.file.url.startsWith(P.api.baseUrl)) return this.file.url;
59
+ try {
60
+ const { hostname: e } = new URL(this.file.url);
61
+ if (Object.keys(h).some(
62
+ (i) => e.includes(h[i].domain)
63
+ )) return this.file.url;
64
+ } catch {
65
+ }
66
+ return `${P.api.baseUrl}/public/fileProxy?url=${encodeURIComponent(
67
+ this.file.url
68
+ )}`;
69
+ }
70
+ },
71
+ methods: {
72
+ onUploadSuccess(e) {
73
+ const { id: s, displayName: i, url: c, mime: o } = e.response;
74
+ if (!s) throw new Error("Could not read id from uploaded file");
75
+ this.file = {
76
+ fileId: s,
77
+ name: i,
78
+ mime: o,
79
+ url: c
80
+ }, this.$refs.uploader.remove(e), this.uploadProgress = null;
81
+ }
82
+ }
83
+ }, E = { class: "flex-auto pl-4" }, N = { class: "text-sm text-gray-600" }, _ = { key: 1 };
84
+ function D(e, s, i, c, o, r) {
85
+ const k = d("FileIcon"), B = d("CButton"), w = d("BaseUpload"), U = d("PdfViewer");
86
+ return n(), a("div", {
87
+ style: { position: "relative" },
88
+ class: "font-inter print-no-margin",
89
+ onMouseover: s[2] || (s[2] = (l) => o.isHover = !0),
90
+ onMouseleave: s[3] || (s[3] = (l) => o.isHover = !1)
91
+ }, [
92
+ e.canEdit ? V((n(), a("div", {
93
+ key: 0,
94
+ class: f([!!e.file && "absolute left-0 right-0 top-2 z-10", "chapter-spacing-x pointer-events-none mx-auto flex max-w-full items-center justify-center"])
95
+ }, [
96
+ t("div", {
97
+ class: f([!!e.file && "border border-gray-200 !p-2 shadow-lg", "pointer-events-auto flex w-full max-w-[95%] items-center rounded-lg bg-gray-100 !p-4 text-left"])
98
+ }, [
99
+ p(k, { mime: "application/pdf" }),
100
+ t("div", E, [
101
+ s[4] || (s[4] = t("div", { class: "font-medium" }, "PDF", -1)),
102
+ t("div", N, u(e.$t("embedded")) + " " + u(o.numPages ? e.$t("numOfPages", { numPages: o.numPages }) : ""), 1)
103
+ ]),
104
+ p(w, {
105
+ ref: "uploader",
106
+ "autostart-upload": !0,
107
+ "background-drop": !1,
108
+ extensions: "pdf",
109
+ accept: "application/pdf",
110
+ "max-size": o.maxFileSize,
111
+ onInput: s[0] || (s[0] = ([l]) => o.uploadProgress = l ? parseInt(l.progress, 10) : null),
112
+ onUploadSuccess: r.onUploadSuccess
113
+ }, {
114
+ default: v(({ openFilePicker: l }) => [
115
+ p(B, {
116
+ type: e.file ? "none" : "secondary",
117
+ pattern: e.file ? "secondary" : "primary",
118
+ disabled: o.uploadProgress !== null,
119
+ style: { "z-index": "2" },
120
+ onClick: l
121
+ }, {
122
+ default: v(() => [
123
+ o.uploadProgress !== null ? (n(), a(b, { key: 0 }, [
124
+ y(u(`${o.uploadProgress}% ${e.$t("_common:uploading")}`), 1)
125
+ ], 64)) : (n(), a(b, { key: 1 }, [
126
+ y(u(e.file ? e.$t("_common:change", { thing: e.$t("_common:file") }) : e.$t("upload")), 1)
127
+ ], 64))
128
+ ]),
129
+ _: 2
130
+ }, 1032, ["type", "pattern", "disabled", "onClick"])
131
+ ]),
132
+ _: 1
133
+ }, 8, ["max-size", "onUploadSuccess"])
134
+ ], 2)
135
+ ], 2)), [
136
+ [x, r.showControls]
137
+ ]) : m("", !0),
138
+ e.file ? (n(), a("div", _, [
139
+ t("div", {
140
+ class: f({
141
+ "break-before-page": r.isPdf && !r._firstBlock,
142
+ "break-after-page": r.isPdf && !r._lastBlock
143
+ })
144
+ }, [
145
+ e.file && e.file.url ? (n(), z(U, {
146
+ key: 0,
147
+ src: r.fileUrl,
148
+ toolbar: !e.canEdit,
149
+ "doc-file-path": `${e._value.file}.url`,
150
+ onNumPages: s[1] || (s[1] = (l) => o.numPages = l)
151
+ }, null, 8, ["src", "toolbar", "doc-file-path"])) : m("", !0)
152
+ ], 2)
153
+ ])) : m("", !0)
154
+ ], 32);
155
+ }
156
+ const M = /* @__PURE__ */ I(S, [["render", D]]);
157
+ export {
158
+ M as default
159
+ };