@wisemen/wise-crm-web 1.0.0 → 1.2.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.
Files changed (97) hide show
  1. package/dist/ActivityIcon-DNdtN-M_.js +19 -0
  2. package/dist/AppSkeletonLoader-Dq6pKznm.js +1112 -0
  3. package/dist/{AttachmentIcon-CsucE3yf.js → AttachmentIcon-BLUd7LaN.js} +9 -7
  4. package/dist/BoldIcon-WRYUWz15.js +16 -0
  5. package/dist/{BookIcon-DgT3flV5.js → BookIcon-Bb3r5y_J.js} +9 -7
  6. package/dist/{BuildingIcon-Bm18omgW.js → BuildingIcon-DFutRg8d.js} +9 -7
  7. package/dist/{BuildingsIcon-D4X7QciL.js → BuildingsIcon-BVHy6yoa.js} +9 -7
  8. package/dist/{BulletListIcon-CNCV-cOS.js → BulletListIcon-BhOXLSBa.js} +9 -7
  9. package/dist/BusinessDetailSidebarProvider-a6VeNUii.js +2946 -0
  10. package/dist/BusinessDetailView-Dz3wDSx5.js +24 -0
  11. package/dist/ChevronDownIcon-BmyTSPND.js +19 -0
  12. package/dist/ClockIcon-BYfZAvIE.js +23 -0
  13. package/dist/ClockPlusIcon-BcNi0Y9I.js +23 -0
  14. package/dist/{CopyIcon-CUomKXdn.js → CopyIcon-2eV8MRv_.js} +9 -7
  15. package/dist/CrmDetailHeaderCard-BkA0Z-Cu.js +2523 -0
  16. package/dist/CrmDetailView-BhZEQqUH.js +67 -0
  17. package/dist/DealCommunicationTabView-Drp9MEPu.js +140 -0
  18. package/dist/DealDetailView-DWLudchX.js +1049 -0
  19. package/dist/DealExternalAttachment-B6l0gDqF.js +179 -0
  20. package/dist/{DealIcon-CpO-DkyS.js → DealIcon-BwUWYDxo.js} +9 -7
  21. package/dist/DealSendMailDialog-Dqei4933.js +1566 -0
  22. package/dist/DownloadCloudIcon-BSrLGGrY.js +19 -0
  23. package/dist/{EditWithLineIcon-C0WMD50F.js → EditWithLineIcon-BKYDPJOY.js} +9 -7
  24. package/dist/{Error-X0deDY-N.js → Error-za-wClcU.js} +2591 -2462
  25. package/dist/{FileIcon-3FebXgYQ.js → FileIcon-DL1e1tAu.js} +9 -7
  26. package/dist/FilterLinesIcon-DgVMySAE.js +22 -0
  27. package/dist/H1Icon-B6NEsEbj.js +17 -0
  28. package/dist/{H2Icon-CuEmp9I0.js → H2Icon-CNof5Ohu.js} +9 -7
  29. package/dist/{H3Icon-wAPhdYIf.js → H3Icon-B2F2Tb6r.js} +9 -7
  30. package/dist/HashIcon-C_XttKfW.js +19 -0
  31. package/dist/HomeFilledIcon-DtZ2eXxt.js +16 -0
  32. package/dist/IndividualDetailSidebarProvider-jjRoK1Av.js +609 -0
  33. package/dist/IndividualDetailView-BqIRHn-0.js +24 -0
  34. package/dist/ItalicIcon-DqBns3yy.js +17 -0
  35. package/dist/{LayersTreeIcon-Ct-owndO.js → LayersTreeIcon-DZZCSCY9.js} +10 -8
  36. package/dist/{LinkBrokenIcon-CTlqmapl.js → LinkBrokenIcon-BNBpWSi7.js} +9 -7
  37. package/dist/{LinkExternalIcon-LOVtSqBT.js → LinkExternalIcon-B7SHeB1_.js} +9 -7
  38. package/dist/LinkIcon-8bCrZEv9.js +17 -0
  39. package/dist/{LocationPinIcon-Cp-wRgk2.js → LocationPinIcon-UySRqSfG.js} +9 -7
  40. package/dist/{MailIcon-CnTrB1k3.js → MailIcon-BT7gSIZb.js} +9 -7
  41. package/dist/{MobilePhoneIcon-B747hmpS.js → MobilePhoneIcon-_KQGnCSS.js} +9 -7
  42. package/dist/NumberedListIcon-B-JVTSAe.js +17 -0
  43. package/dist/{PhoneIcon-94MYVL85.js → PhoneIcon-DGGW_MNR.js} +9 -7
  44. package/dist/{RefreshIcon-DRe3coBc.js → RefreshIcon-D1QWfdPD.js} +9 -7
  45. package/dist/{SendIcon-MYItp1xI.js → SendIcon-BtJ-NCec.js} +9 -7
  46. package/dist/{SettingsIcon-C0qTAv0w.js → SettingsIcon-CWFwJelS.js} +10 -8
  47. package/dist/{StarOutlineIcon-CiFLgepk.js → StarOutlineIcon-C-ELTCDQ.js} +9 -7
  48. package/dist/{StarYellowIcon-C0v_XGwI.js → StarYellowIcon-7wuNWaQO.js} +9 -7
  49. package/dist/{ThreeDotsIcon-lujOTU3G.js → ThreeDotsIcon-C56RWk-0.js} +12 -10
  50. package/dist/TimeLineMarkerIcon-DLmPwfs6.js +18 -0
  51. package/dist/{TrashIcon-v4L9SEK_.js → TrashIcon-o4PWmcYe.js} +9 -7
  52. package/dist/UploadCloudIcon-D2tWB0NP.js +19 -0
  53. package/dist/{UserCircleIcon-BjUt_2C4.js → UserCircleIcon-DiDajcIH.js} +10 -8
  54. package/dist/UserIcon-Bv1eF7ln.js +22 -0
  55. package/dist/{VerticalDotsIcon-Y3m6tlQ2.js → VerticalDotsIcon-YcD73UqY.js} +9 -7
  56. package/dist/{WalletIcon-pPsKbzmh.js → WalletIcon-CUh92U5K.js} +9 -7
  57. package/dist/_plugin-vue_export-helper-D3hKq4w_.js +8 -0
  58. package/dist/client-9P6xe_5g.js +4188 -0
  59. package/dist/components/auto-focus/AutoFocus.vue.d.ts +13 -0
  60. package/dist/components/column-layout/ColumnLayout.vue.d.ts +1 -1
  61. package/dist/components/row-layout/RowLayout.vue.d.ts +1 -1
  62. package/dist/components/text/Text.vue.d.ts +1 -1
  63. package/dist/index.js +1881 -1693
  64. package/dist/style.css +2 -2
  65. package/dist/testing.js +102 -98
  66. package/dist/utils/color.util.d.ts +6 -0
  67. package/dist/{uuid.util-C1p-yuFc.js → uuid.util-DpiDKVoj.js} +4 -2
  68. package/package.json +30 -30
  69. package/dist/ActivityIcon-DFD9ZhO0.js +0 -17
  70. package/dist/AppSkeletonLoader-BAhoOmFD.js +0 -1106
  71. package/dist/BoldIcon-DY2FlAS0.js +0 -14
  72. package/dist/BusinessDetailSidebarProvider-Dm6Dd7Nq.js +0 -2899
  73. package/dist/BusinessDetailView-BHVUfCpV.js +0 -24
  74. package/dist/ChevronDownIcon-CfBAAAca.js +0 -17
  75. package/dist/ClockIcon-Ckr1IQBt.js +0 -21
  76. package/dist/ClockPlusIcon-CVN69pCS.js +0 -21
  77. package/dist/CrmDetailHeaderCard-CiVLyIuw.js +0 -2516
  78. package/dist/CrmDetailView-DaAuWeiB.js +0 -65
  79. package/dist/DealCommunicationTabView-xq_zOAsr.js +0 -137
  80. package/dist/DealDetailView-C54XpYN1.js +0 -1021
  81. package/dist/DealExternalAttachment-Dp44vkgt.js +0 -177
  82. package/dist/DealSendMailDialog-D11Tgd_A.js +0 -1552
  83. package/dist/DownloadCloudIcon-VMmB9vit.js +0 -17
  84. package/dist/FilterLinesIcon-DHpRPKJB.js +0 -20
  85. package/dist/H1Icon-CPVGTTtl.js +0 -15
  86. package/dist/HashIcon-C2kfHjTC.js +0 -17
  87. package/dist/HomeFilledIcon-CxIazF0B.js +0 -14
  88. package/dist/IndividualDetailSidebarProvider-BvjhFng9.js +0 -608
  89. package/dist/IndividualDetailView-Cq8iAwQv.js +0 -24
  90. package/dist/ItalicIcon-DfV3EOdk.js +0 -15
  91. package/dist/LinkIcon-DqBbVrvs.js +0 -15
  92. package/dist/NumberedListIcon-amJxDaaD.js +0 -15
  93. package/dist/TimeLineMarkerIcon-C4LfErbc.js +0 -16
  94. package/dist/UploadCloudIcon-j1-1Rvqb.js +0 -17
  95. package/dist/UserIcon-Cb2jFKLr.js +0 -20
  96. package/dist/_plugin-vue_export-helper-BSi1g3Lh.js +0 -6
  97. package/dist/client-S6BLV3Ct.js +0 -4191
@@ -1,608 +0,0 @@
1
- import { $ as useNoteDeleteMutation, A as AppColorProvider_default, B as CrmDetailSidebarNotesView_default, F as AppSidebarFormFooter_default, P as AppSidebarFormSubmitButton_default, Q as useKeysetInfiniteQuery, R as NoteUpdateDialog_default, T as useCrm, W as AppConfirmDialog_default, Y as useApiErrorToast, c as CrmDetailAccordionRoot_default, et as NoteService, h as useContactPersonCreateMutation, i as CrmDetailSidebarAccordionHeaderIconButton_default, l as AppIconLabelPair_default, m as AppDialog_default, n as CrmDetailContainer_default, o as CrmDetailSidebarCard_default, r as CrmDetailSidebarTabs_default, s as CrmDetailSidebarAccordionItem_default, t as Error_default, y as IndividualService } from "./Error-X0deDY-N.js";
2
- import { a as contactPersonUpdateFormSchema, i as CrmDetailSidebarMapCard_default, l as ActivityList_default, n as CrmDetailSidebarAccordionContactPersonInfo_default, o as ContactPersonCreateForm_default, r as CrmDetailSidebarAccordionBillingInformation_default, s as ContactPersonCreateNewForm_default, t as CrmDetailHeaderCard_default, u as assert } from "./CrmDetailHeaderCard-CiVLyIuw.js";
3
- import { c as Be, l as He, n as useDateTimeFormat, t as AppSkeletonLoader_default, u as ze } from "./AppSkeletonLoader-BAhoOmFD.js";
4
- import { mt as EntityType } from "./client-S6BLV3Ct.js";
5
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, renderList, toDisplayString, unref, withCtx } from "vue";
6
- import { useI18n } from "vue-i18n";
7
- import { VcButton, VcIconButton, VcRouterLinkButton, useDialog, usePagination, useToast } from "@wisemen/vue-core-components";
8
- import { useMutation, useQueryClient } from "@tanstack/vue-query";
9
- import { useForm } from "formango";
10
- import { Motion } from "motion-v";
11
- function useIndividualDetailQuery(i) {
12
- return He({
13
- isEnabled: computed(() => i.value !== null),
14
- queryFn: () => (assert(i.value !== null, "individualUuid is null"), IndividualService.getByUuid(i.value)),
15
- queryKey: { wiseCrmIndividualDetail: { individualUuid: i } }
16
- });
17
- }
18
- function useIndividualGrantMutation() {
19
- return ze({
20
- queryFn: async ({ body: i, params: N }) => await IndividualService.grantUser(N.individualUuid, i),
21
- queryKeysToInvalidate: { wiseCrmIndividualDetail: { individualUuid: (i) => i.individualUuid } }
22
- });
23
- }
24
- function useActivityIndividualIndexQuery(i, N) {
25
- return Be({
26
- paginationOptions: N,
27
- queryFn: async (N) => await IndividualService.getActivity(i.value, N),
28
- queryKey: { individualActivityIndex: { paginationOptions: N } }
29
- });
30
- }
31
- var IndividualDetailSidebarActivityContent_default = /* @__PURE__ */ defineComponent({
32
- __name: "IndividualDetailSidebarActivityContent",
33
- props: { individual: {} },
34
- setup(i) {
35
- let N = i, P = usePagination({
36
- isRouteQueryEnabled: !1,
37
- type: "keyset"
38
- }), F = useActivityIndividualIndexQuery(computed(() => N.individual.uuid), P.paginationOptions), I = computed(() => F.data.value.data ?? []);
39
- async function L() {
40
- await F.getNextPage();
41
- }
42
- return (i, N) => (openBlock(), createBlock(ActivityList_default, {
43
- "on-next": L,
44
- "is-loading": unref(F).isLoading.value,
45
- activities: I.value
46
- }, null, 8, ["is-loading", "activities"]));
47
- }
48
- });
49
- function useNoteIndividualCreateMutation() {
50
- return ze({
51
- queryFn: async ({ body: i, params: N }) => await NoteService.create(i, { individualUuid: N.individualUuid }),
52
- queryKeysToInvalidate: { noteIndividualIndex: {} }
53
- });
54
- }
55
- function useNoteIndividualIndexQuery(i, N) {
56
- return useKeysetInfiniteQuery({
57
- queryFn: (N) => NoteService.getIndividualNotes({ pagination: N }, i.value),
58
- queryKey: { noteIndividualIndex: { params: N?.params } }
59
- });
60
- }
61
- var IndividualDetailSidebarNotesContent_default = /* @__PURE__ */ defineComponent({
62
- __name: "IndividualDetailSidebarNotesContent",
63
- props: { individual: {} },
64
- setup(N) {
65
- let F = N, I = useApiErrorToast(), L = useNoteIndividualCreateMutation(), z = useNoteDeleteMutation(), B = useDialog(NoteUpdateDialog_default), V = useNoteIndividualIndexQuery(computed(() => F.individual.uuid)), H = computed(() => V.data?.value?.data ?? []);
66
- async function U(i) {
67
- try {
68
- await L.execute({
69
- body: i,
70
- params: { individualUuid: F.individual.uuid }
71
- });
72
- } catch (i) {
73
- I.show(i);
74
- }
75
- }
76
- async function W(i) {
77
- try {
78
- await z.execute({ params: { noteUuid: i } });
79
- } catch (i) {
80
- I.show(i);
81
- }
82
- }
83
- function G(i) {
84
- B.open({ note: i });
85
- }
86
- return (i, N) => (openBlock(), createBlock(CrmDetailSidebarNotesView_default, {
87
- "is-loading": unref(V).isLoading.value,
88
- notes: H.value,
89
- "on-submit": U,
90
- "has-next-page": unref(V).hasNextPage.value,
91
- onNext: N[0] ||= (i) => unref(V).fetchNextPage(),
92
- onDelete: W,
93
- onUpdate: G
94
- }, null, 8, [
95
- "is-loading",
96
- "notes",
97
- "has-next-page"
98
- ]));
99
- }
100
- });
101
- function useIndividualSetPrimaryContactPersonMutation() {
102
- let i = useQueryClient(), N = "wiseCrmIndividualDetail", P = useMutation({
103
- mutationFn: async (i) => {
104
- await IndividualService.setPrimaryContactPerson(i.individualUuid, i.contactPersonUuid);
105
- },
106
- onError: (P, F, I) => {
107
- i.setQueryData([N, { individualUuid: F.individualUuid }], I?.previousData);
108
- },
109
- onMutate: async (P) => {
110
- await i.cancelQueries({ queryKey: [N] });
111
- let F = i.getQueryData([N, { individualUuid: P.individualUuid }]);
112
- return F === void 0 ? {} : (i.setQueryData([N, { individualUuid: P.individualUuid }], {
113
- ...F,
114
- contactPersons: F.contactPersons.map((i) => i.uuid === P.contactPersonUuid ? {
115
- ...i,
116
- isPrimary: !i.isPrimary
117
- } : {
118
- ...i,
119
- isPrimary: !1
120
- })
121
- }), { previousData: F });
122
- },
123
- onSettled: (P, F, I, L) => {
124
- I !== void 0 && i.invalidateQueries({ queryKey: [N, { individualUuid: I.individualUuid }] });
125
- }
126
- });
127
- return {
128
- isLoading: computed(() => P.isPending.value),
129
- data: computed(() => P.data.value),
130
- execute: async (i) => {
131
- await P.mutateAsync(i.params);
132
- }
133
- };
134
- }
135
- function useIndividualUnlinkContactPersonMutation() {
136
- return ze({
137
- queryFn: async ({ body: i, params: N }) => await IndividualService.unlinkContactPerson(N.individualUuid, i.contactPersonUuid),
138
- queryKeysToInvalidate: {
139
- individualIndex: {},
140
- wiseCrmIndividualDetail: { individualUuid: (i) => i.individualUuid }
141
- }
142
- });
143
- }
144
- var _hoisted_1$1 = { class: "gap-md flex flex-col" }, CrmDetailSidebarAccordionCustomerInfo_default = /* @__PURE__ */ defineComponent({
145
- __name: "CrmDetailSidebarAccordionCustomerInfo",
146
- props: { individual: {} },
147
- setup(i) {
148
- let N = i, P = useI18n();
149
- return (i, F) => (openBlock(), createElementBlock("div", _hoisted_1$1, [createVNode(CrmDetailSidebarCard_default, null, {
150
- default: withCtx(() => [createVNode(AppIconLabelPair_default, {
151
- label: unref(P).t("wise_crm.info_dialog.sidebar.overview.created_at_label", { value: N.individual.createdAt ? unref(useDateTimeFormat)().toDateTime(N.individual.createdAt) : "-" }),
152
- icon: "clockPlus"
153
- }, null, 8, ["label"])]),
154
- _: 1
155
- }), createVNode(CrmDetailSidebarMapCard_default, { address: N.individual.address }, null, 8, ["address"])]));
156
- }
157
- });
158
- function useIndividualLinkContactPersonMutation() {
159
- return ze({
160
- queryFn: async ({ body: i, params: N }) => await IndividualService.linkContactPerson(N.individualUuid, i.contactPersonUuid, i.position, i.contactInfo),
161
- queryKeysToInvalidate: {
162
- individualIndex: {},
163
- wiseCrmIndividualDetail: { individualUuid: (i) => i.individualUuid }
164
- }
165
- });
166
- }
167
- var IndividualContactPersonCreateDialog_default = /* @__PURE__ */ defineComponent({
168
- __name: "IndividualContactPersonCreateDialog",
169
- props: {
170
- individualUuid: {},
171
- isCreatingNewContactPerson: {
172
- type: Boolean,
173
- default: !1
174
- }
175
- },
176
- emits: ["close", "createNewContactPerson"],
177
- setup(i, { emit: N }) {
178
- let P = i, F = N, I = useI18n(), L = useApiErrorToast(), R = useIndividualLinkContactPersonMutation(), z = useContactPersonCreateMutation();
179
- async function B(i) {
180
- try {
181
- let N = await z.execute({ body: {
182
- email: i.email,
183
- firstName: i.firstName,
184
- lastName: i.lastName,
185
- mobilePhone: i.mobilePhone,
186
- phone: i.phone
187
- } });
188
- P.isCreatingNewContactPerson || await R.execute({
189
- body: {
190
- contactPersonUuid: N,
191
- contactInfo: {
192
- email: i.email,
193
- mobilePhone: i.mobilePhone,
194
- phone: i.phone
195
- },
196
- position: i.position
197
- },
198
- params: { individualUuid: P.individualUuid }
199
- }), H({
200
- label: `${i.firstName} ${i.lastName}`,
201
- value: N
202
- });
203
- } catch (i) {
204
- L.show(i);
205
- }
206
- }
207
- async function V(i, N, F) {
208
- if (i !== null) try {
209
- await R.execute({
210
- body: {
211
- contactPersonUuid: i,
212
- contactInfo: N,
213
- position: F
214
- },
215
- params: { individualUuid: P.individualUuid }
216
- }), H();
217
- } catch (i) {
218
- L.show(i);
219
- }
220
- }
221
- function H(i) {
222
- if (i === void 0) {
223
- F("close");
224
- return;
225
- }
226
- F("createNewContactPerson", i), F("close");
227
- }
228
- return (i, N) => (openBlock(), createBlock(AppDialog_default, {
229
- title: unref(I).t("wise_crm.info_dialog.contact_person_create.title"),
230
- description: unref(I).t("wise_crm.info_dialog.contact_person_create.description"),
231
- onClose: H
232
- }, {
233
- default: withCtx(() => [createVNode(ContactPersonCreateForm_default, {
234
- "on-submit": B,
235
- "on-link-contact-person": V,
236
- "is-creating-new-contact-person": P.isCreatingNewContactPerson,
237
- onClose: H
238
- }, null, 8, ["is-creating-new-contact-person"])]),
239
- _: 1
240
- }, 8, ["title", "description"]));
241
- }
242
- });
243
- function useIndividualContactPersonUpdateMutation() {
244
- return ze({
245
- queryFn: async ({ body: i, params: N }) => await IndividualService.updateContactPerson(N.individualUuid, N.contactPersonUuid, i),
246
- queryKeysToInvalidate: {
247
- contactPersonDetail: { contactPersonUuid: (i) => i.contactPersonUuid },
248
- individualIndex: {},
249
- wiseCrmIndividualDetail: { individualUuid: (i) => i.individualUuid }
250
- }
251
- });
252
- }
253
- function useIndividualContactPersonDetailQuery(i, N) {
254
- return He({
255
- isEnabled: computed(() => i.value !== null && N.value !== null),
256
- queryFn: () => {
257
- if (i.value === null) throw Error("Individual UUID is null");
258
- if (N.value === null) throw Error("Contact Person UUID is null");
259
- return IndividualService.getContactPerson(i.value, N.value);
260
- },
261
- queryKey: { contactPersonDetail: { contactPersonUuid: N } }
262
- });
263
- }
264
- var IndividualContactPersonUpdateForm_default = /* @__PURE__ */ defineComponent({
265
- __name: "IndividualContactPersonUpdateForm",
266
- props: {
267
- individualUuid: {},
268
- contactPerson: {},
269
- onSubmit: { type: Function }
270
- },
271
- setup(i) {
272
- let N = i, P = useI18n(), L = useForm({
273
- initialState: {
274
- email: N.contactPerson.email,
275
- firstName: N.contactPerson.firstName,
276
- lastName: N.contactPerson.lastName,
277
- mobilePhone: N.contactPerson.mobilePhone,
278
- phone: N.contactPerson.phone,
279
- position: N.contactPerson.position
280
- },
281
- schema: contactPersonUpdateFormSchema,
282
- onSubmit: async (i) => {
283
- await N.onSubmit(i);
284
- }
285
- });
286
- return (i, N) => (openBlock(), createBlock(ContactPersonCreateNewForm_default, { form: unref(L) }, {
287
- actions: withCtx(() => [createVNode(AppSidebarFormFooter_default, null, {
288
- default: withCtx(() => [createVNode(AppSidebarFormSubmitButton_default, {
289
- "is-loading": unref(L).isSubmitting.value,
290
- label: unref(P).t("wise_crm.shared.save_changes")
291
- }, null, 8, ["is-loading", "label"])]),
292
- _: 1
293
- })]),
294
- _: 1
295
- }, 8, ["form"]));
296
- }
297
- }), IndividualContactPersonUpdateDialog_default = /* @__PURE__ */ defineComponent({
298
- __name: "IndividualContactPersonUpdateDialog",
299
- props: {
300
- contactPersonUuid: {},
301
- individualUuid: {}
302
- },
303
- emits: ["close"],
304
- setup(i, { emit: N }) {
305
- let P = i, F = N, I = useI18n(), L = useApiErrorToast(), R = useIndividualContactPersonDetailQuery(computed(() => P.individualUuid), computed(() => P.contactPersonUuid)), z = useIndividualContactPersonUpdateMutation();
306
- async function B(i) {
307
- try {
308
- await z.execute({
309
- body: i,
310
- params: {
311
- contactPersonUuid: P.contactPersonUuid,
312
- individualUuid: P.individualUuid
313
- }
314
- }), F("close");
315
- } catch (i) {
316
- L.show(i);
317
- }
318
- }
319
- function V() {
320
- F("close");
321
- }
322
- return (i, N) => (openBlock(), createBlock(AppDialog_default, {
323
- title: unref(I).t("wise_crm.info_dialog.contact_person_update.title"),
324
- description: unref(I).t("wise_crm.info_dialog.contact_person_create.description"),
325
- onClose: V
326
- }, {
327
- default: withCtx(() => [unref(R).data.value ? (openBlock(), createBlock(IndividualContactPersonUpdateForm_default, {
328
- key: 0,
329
- "individual-uuid": P.individualUuid,
330
- "on-submit": B,
331
- "contact-person": unref(R).data.value,
332
- onClose: V
333
- }, null, 8, ["individual-uuid", "contact-person"])) : createCommentVNode("", !0)]),
334
- _: 1
335
- }, 8, ["title", "description"]));
336
- }
337
- }), _hoisted_1 = { class: "gap-sm flex" }, _hoisted_2 = { class: "font-regular flex flex-col items-start" }, _hoisted_3 = { class: "font-semibold" }, _hoisted_4 = { class: "font-regular text-brand-500 text-xs" }, IndividualDetailSidebarOverviewContent_default = /* @__PURE__ */ defineComponent({
338
- __name: "IndividualDetailSidebarOverviewContent",
339
- props: { individual: {} },
340
- setup(i) {
341
- let N = i, P = useI18n(), F = useApiErrorToast(), I = useCrm(), L = useDialog(IndividualContactPersonCreateDialog_default), R = useDialog(IndividualContactPersonUpdateDialog_default), H = useDialog(AppConfirmDialog_default), U = useIndividualSetPrimaryContactPersonMutation(), K = useIndividualUnlinkContactPersonMutation(), q = computed(() => N.individual.contactPersons.length > 0), J = computed(() => N.individual.billingInformationDetail !== null), Y = computed(() => I.getEntityConfig(EntityType.BUSINESS)?.name.toLowerCase() ?? "");
342
- function X() {
343
- L.open({ individualUuid: N.individual.uuid });
344
- }
345
- function Z(i) {
346
- R.open({
347
- contactPersonUuid: i,
348
- individualUuid: N.individual.uuid
349
- });
350
- }
351
- function Q(i) {
352
- H.open({
353
- title: P.t("wise_crm.info_dialog.sidebar.overview.delete_contact_person_title"),
354
- isDestructive: !0,
355
- isLoading: K.isLoading.value,
356
- confirmText: P.t("shared.delete"),
357
- description: P.t("wise_crm.info_dialog.sidebar.overview.delete_contact_person_description"),
358
- onConfirm: async () => {
359
- try {
360
- await K.execute({
361
- body: { contactPersonUuid: i },
362
- params: { individualUuid: N.individual.uuid }
363
- });
364
- } catch (i) {
365
- F.show(i);
366
- } finally {
367
- H.close();
368
- }
369
- }
370
- });
371
- }
372
- function $(i) {
373
- U.execute({ params: {
374
- contactPersonUuid: i,
375
- individualUuid: N.individual.uuid
376
- } });
377
- }
378
- return (F, I) => (openBlock(), createBlock(CrmDetailAccordionRoot_default, { "default-values": [
379
- "customer",
380
- "invoice",
381
- "contact-persons",
382
- "linked-businesses"
383
- ] }, {
384
- default: withCtx(() => [
385
- createVNode(CrmDetailSidebarAccordionItem_default, {
386
- label: unref(P).t("wise_crm.info_dialog.sidebar.overview.customer_info_label"),
387
- value: "customer",
388
- icon: "infoCircle"
389
- }, {
390
- default: withCtx(() => [createVNode(CrmDetailSidebarAccordionCustomerInfo_default, { individual: i.individual }, null, 8, ["individual"])]),
391
- _: 1
392
- }, 8, ["label"]),
393
- createVNode(CrmDetailSidebarAccordionItem_default, {
394
- label: unref(P).t("wise_crm.info_dialog.sidebar.overview.invoice_label"),
395
- "is-empty": !J.value,
396
- value: "invoice",
397
- icon: "wallet"
398
- }, {
399
- default: withCtx(() => [N.individual.billingInformationDetail ? (openBlock(), createBlock(CrmDetailSidebarAccordionBillingInformation_default, {
400
- key: 0,
401
- "invoice-address": N.individual.billingInformationDetail.location?.address ?? null,
402
- "invoice-email": N.individual.billingInformationDetail.invoiceEmail
403
- }, null, 8, ["invoice-address", "invoice-email"])) : createCommentVNode("", !0)]),
404
- _: 1
405
- }, 8, ["label", "is-empty"]),
406
- createVNode(CrmDetailSidebarAccordionItem_default, {
407
- "is-empty": !q.value,
408
- label: unref(P).t("wise_crm.info_dialog.sidebar.overview.contact_persons_label"),
409
- value: "contact-persons",
410
- icon: "userCircle",
411
- onAdd: X
412
- }, {
413
- actions: withCtx(() => [q.value ? createCommentVNode("", !0) : (openBlock(), createBlock(CrmDetailSidebarAccordionHeaderIconButton_default, {
414
- key: 0,
415
- label: unref(P).t("wise_crm.info_dialog.sidebar.overview.contact_persons_label"),
416
- class: "z-1",
417
- icon: "plus",
418
- onClick: X
419
- }, null, 8, ["label"]))]),
420
- default: withCtx(() => [(openBlock(!0), createElementBlock(Fragment, null, renderList(N.individual.contactPersons, (i) => (openBlock(), createBlock(unref(Motion), {
421
- key: i.uuid,
422
- "layout-id": i.uuid
423
- }, {
424
- default: withCtx(() => [createVNode(CrmDetailSidebarAccordionContactPersonInfo_default, {
425
- "contact-person": i,
426
- "on-toggle-is-primary": () => $(i.uuid),
427
- onUpdate: (N) => Z(i.uuid),
428
- onDelete: (N) => Q(i.uuid)
429
- }, null, 8, [
430
- "contact-person",
431
- "on-toggle-is-primary",
432
- "onUpdate",
433
- "onDelete"
434
- ])]),
435
- _: 2
436
- }, 1032, ["layout-id"]))), 128)), q.value ? (openBlock(), createBlock(unref(VcButton), {
437
- key: 0,
438
- size: "sm",
439
- variant: "tertiary",
440
- "icon-left": "plus",
441
- onClick: X
442
- }, {
443
- default: withCtx(() => [createTextVNode(toDisplayString(unref(P).t("wise_crm.shared.add")), 1)]),
444
- _: 1
445
- })) : createCommentVNode("", !0)]),
446
- _: 1
447
- }, 8, ["is-empty", "label"]),
448
- N.individual.linkedBusinesses.length > 0 ? (openBlock(), createBlock(CrmDetailSidebarAccordionItem_default, {
449
- key: 0,
450
- "is-edit-button-hidden": !0,
451
- label: unref(P).t("wise_crm.info_dialog.sidebar.overview.linked_business_label", { label: Y.value }),
452
- value: "linked-businesses",
453
- icon: "building"
454
- }, {
455
- default: withCtx(() => [(openBlock(!0), createElementBlock(Fragment, null, renderList(N.individual.linkedBusinesses, (i) => (openBlock(), createBlock(CrmDetailSidebarCard_default, {
456
- key: i.uuid,
457
- class: "gap-lg flex flex-col"
458
- }, {
459
- default: withCtx(() => [
460
- createElementVNode("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [createVNode(unref(VcRouterLinkButton), {
461
- to: {
462
- name: "business-detail",
463
- params: { businessUuid: i.uuid }
464
- },
465
- "class-config": { root: "p-0 bg-transparent! h-min hover:underline" },
466
- variant: "tertiary"
467
- }, {
468
- default: withCtx(() => [createElementVNode("span", _hoisted_3, toDisplayString(i.name), 1)]),
469
- _: 2
470
- }, 1032, ["to"]), createElementVNode("p", _hoisted_4, toDisplayString(i.position), 1)])]),
471
- createVNode(AppIconLabelPair_default, {
472
- label: i.email ?? "-",
473
- icon: "mail"
474
- }, null, 8, ["label"]),
475
- createVNode(AppIconLabelPair_default, {
476
- label: i.mobilePhone ?? i.phone ?? "-",
477
- icon: "phone"
478
- }, null, 8, ["label"])
479
- ]),
480
- _: 2
481
- }, 1024))), 128))]),
482
- _: 1
483
- }, 8, ["label"])) : createCommentVNode("", !0)
484
- ]),
485
- _: 1
486
- }));
487
- }
488
- }), InfoTab = /* @__PURE__ */ function(i) {
489
- return i.ACTIVITY = "activity", i.NOTES = "notes", i.OVERVIEW = "overview", i;
490
- }(InfoTab || {}), IndividualDetailSidebar_default = /* @__PURE__ */ defineComponent({
491
- __name: "IndividualDetailSidebar",
492
- props: { individual: {} },
493
- setup(i) {
494
- let P = i, F = useI18n(), I = useToast(), L = useCrm(), R = useApiErrorToast(), B = useIndividualGrantMutation(), V = ref(InfoTab.OVERVIEW), H = computed(() => [
495
- {
496
- icon: "infoCircle",
497
- label: F.t("wise_crm.shared.overview"),
498
- value: InfoTab.OVERVIEW
499
- },
500
- {
501
- icon: "activity",
502
- label: F.t("wise_crm.shared.activity"),
503
- value: InfoTab.ACTIVITY
504
- },
505
- {
506
- icon: "book",
507
- label: F.t("wise_crm.shared.notes"),
508
- value: InfoTab.NOTES
509
- }
510
- ]), U = computed(() => L.getEntityConfig(EntityType.INDIVIDUAL));
511
- async function W() {
512
- if (P.individual.email !== null) try {
513
- await B.execute({
514
- body: {
515
- email: P.individual.email,
516
- firstName: P.individual.firstName,
517
- lastName: P.individual.lastName
518
- },
519
- params: { individualUuid: P.individual.uuid }
520
- }), I.success({
521
- title: F.t("toast.success.general_title"),
522
- description: F.t("wise_crm.info_dialog.sidebar.grant_customer_zone_access_success")
523
- });
524
- } catch (i) {
525
- R.show(i);
526
- }
527
- }
528
- return (I, R) => (openBlock(), createBlock(AppColorProvider_default, {
529
- color: unref(L).getEntityConfig(unref(EntityType).INDIVIDUAL)?.color ?? null,
530
- class: "flex h-full flex-col"
531
- }, {
532
- default: withCtx(() => [createVNode(CrmDetailHeaderCard_default, {
533
- "entity-type": unref(EntityType).INDIVIDUAL,
534
- name: `${P.individual.firstName} ${P.individual.lastName}`,
535
- address: P.individual.address,
536
- email: P.individual.email,
537
- "mobile-phone": P.individual.mobilePhone,
538
- "entity-name": U.value?.name ?? null,
539
- phone: P.individual.phone
540
- }, {
541
- actions: withCtx(() => [createVNode(unref(VcIconButton), {
542
- disabled: P.individual.email === null || unref(B).isLoading.value,
543
- "is-loading": unref(B).isLoading.value,
544
- label: unref(F).t("wise_crm.info_dialog.sidebar.grant_customer_zone_access"),
545
- "class-config": {
546
- root: "bg-gray-50/50 dark:bg-brand-950 border-none shadow-none w-auto h-auto p-xs data-[loading=false]:not-disabled:hover:bg-gray-50/30 rounded-full size-8 duration-300",
547
- icon: "text-brand-700 size-4 dark:text-brand-200"
548
- },
549
- size: "sm",
550
- icon: "user",
551
- variant: "secondary",
552
- onClick: W
553
- }, null, 8, [
554
- "disabled",
555
- "is-loading",
556
- "label"
557
- ])]),
558
- _: 1
559
- }, 8, [
560
- "entity-type",
561
- "name",
562
- "address",
563
- "email",
564
- "mobile-phone",
565
- "entity-name",
566
- "phone"
567
- ]), createVNode(CrmDetailSidebarTabs_default, {
568
- modelValue: V.value,
569
- "onUpdate:modelValue": R[0] ||= (i) => V.value = i,
570
- tabs: H.value
571
- }, {
572
- default: withCtx(() => [V.value === InfoTab.OVERVIEW ? (openBlock(), createBlock(IndividualDetailSidebarOverviewContent_default, {
573
- key: 0,
574
- individual: i.individual
575
- }, null, 8, ["individual"])) : V.value === InfoTab.ACTIVITY ? (openBlock(), createBlock(IndividualDetailSidebarActivityContent_default, {
576
- key: 1,
577
- individual: i.individual
578
- }, null, 8, ["individual"])) : createCommentVNode("", !0), V.value === InfoTab.NOTES ? (openBlock(), createBlock(IndividualDetailSidebarNotesContent_default, {
579
- key: 2,
580
- individual: P.individual
581
- }, null, 8, ["individual"])) : createCommentVNode("", !0)]),
582
- _: 1
583
- }, 8, ["modelValue", "tabs"])]),
584
- _: 1
585
- }, 8, ["color"]));
586
- }
587
- }), IndividualDetailSidebarProvider_default = /* @__PURE__ */ defineComponent({
588
- __name: "IndividualDetailSidebarProvider",
589
- props: { individualUuid: {} },
590
- setup(i) {
591
- let N = i, P = useI18n(), F = useIndividualDetailQuery(computed(() => N.individualUuid)), I = computed(() => F.data.value ?? null);
592
- return (i, N) => (openBlock(), createBlock(CrmDetailContainer_default, null, {
593
- default: withCtx(() => [unref(F).isError.value ? (openBlock(), createBlock(Error_default, {
594
- key: 0,
595
- message: unref(P).t("error.business_details.description"),
596
- title: unref(P).t("error.business_details.title")
597
- }, null, 8, ["message", "title"])) : unref(F).isLoading.value ? (openBlock(), createBlock(AppSkeletonLoader_default, {
598
- key: 1,
599
- class: "h-full"
600
- })) : I.value ? (openBlock(), createBlock(IndividualDetailSidebar_default, {
601
- key: 2,
602
- individual: I.value
603
- }, null, 8, ["individual"])) : createCommentVNode("", !0)]),
604
- _: 1
605
- }));
606
- }
607
- });
608
- export { useIndividualDetailQuery as n, IndividualDetailSidebarProvider_default as t };
@@ -1,24 +0,0 @@
1
- import "./Error-X0deDY-N.js";
2
- import "./CrmDetailHeaderCard-CiVLyIuw.js";
3
- import "./AppSkeletonLoader-BAhoOmFD.js";
4
- import { mt as EntityType } from "./client-S6BLV3Ct.js";
5
- import { t as IndividualDetailSidebarProvider_default } from "./IndividualDetailSidebarProvider-BvjhFng9.js";
6
- import { t as CrmDetailView_default } from "./CrmDetailView-DaAuWeiB.js";
7
- import { createBlock, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
8
- import { useRouteParams } from "@vueuse/router";
9
- var IndividualDetailView_default = /* @__PURE__ */ defineComponent({
10
- __name: "IndividualDetailView",
11
- props: { tabs: {} },
12
- setup(c) {
13
- let u = c, d = useRouteParams("individualUuid");
14
- return (c, l) => (openBlock(), createBlock(CrmDetailView_default, {
15
- key: unref(d),
16
- tabs: u.tabs,
17
- "entity-type": unref(EntityType).INDIVIDUAL
18
- }, {
19
- sidebar: withCtx(() => [createVNode(IndividualDetailSidebarProvider_default, { "individual-uuid": unref(d) }, null, 8, ["individual-uuid"])]),
20
- _: 1
21
- }, 8, ["tabs", "entity-type"]));
22
- }
23
- });
24
- export { IndividualDetailView_default as default };
@@ -1,15 +0,0 @@
1
- import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BSi1g3Lh.js";
2
- import { createElementBlock, createElementVNode, openBlock } from "vue";
3
- var _sfc_main = {}, _hoisted_1 = {
4
- viewBox: "0 0 32 32",
5
- fill: "none",
6
- xmlns: "http://www.w3.org/2000/svg"
7
- };
8
- function _sfc_render(e, s) {
9
- return openBlock(), createElementBlock("svg", _hoisted_1, [...s[0] ||= [createElementVNode("path", {
10
- d: "M14 8V11H16.21L12.79 19H10V22H18V19H15.79L19.21 11H22V8H14Z",
11
- fill: "currentColor"
12
- }, null, -1)]]);
13
- }
14
- var ItalicIcon_default = /* @__PURE__ */ __plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
15
- export { ItalicIcon_default as default };
@@ -1,15 +0,0 @@
1
- import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BSi1g3Lh.js";
2
- import { createElementBlock, createElementVNode, openBlock } from "vue";
3
- var _sfc_main = {}, _hoisted_1 = {
4
- viewBox: "0 0 32 32",
5
- fill: "none",
6
- xmlns: "http://www.w3.org/2000/svg"
7
- };
8
- function _sfc_render(e, s) {
9
- return openBlock(), createElementBlock("svg", _hoisted_1, [...s[0] ||= [createElementVNode("path", {
10
- d: "M7.9 16C7.9 14.29 9.29 12.9 11 12.9H15V11H11C8.24 11 6 13.24 6 16C6 18.76 8.24 21 11 21H15V19.1H11C9.29 19.1 7.9 17.71 7.9 16ZM12 17H20V15H12V17ZM21 11H17V12.9H21C22.71 12.9 24.1 14.29 24.1 16C24.1 17.71 22.71 19.1 21 19.1H17V21H21C23.76 21 26 18.76 26 16C26 13.24 23.76 11 21 11Z",
11
- fill: "currentColor"
12
- }, null, -1)]]);
13
- }
14
- var LinkIcon_default = /* @__PURE__ */ __plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
15
- export { LinkIcon_default as default };
@@ -1,15 +0,0 @@
1
- import { t as __plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BSi1g3Lh.js";
2
- import { createElementBlock, createElementVNode, openBlock } from "vue";
3
- var _sfc_main = {}, _hoisted_1 = {
4
- viewBox: "0 0 32 32",
5
- fill: "none",
6
- xmlns: "http://www.w3.org/2000/svg"
7
- };
8
- function _sfc_render(e, s) {
9
- return openBlock(), createElementBlock("svg", _hoisted_1, [...s[0] ||= [createElementVNode("path", {
10
- d: "M7 21H9V21.5H8V22.5H9V23H7V24H10V20H7V21ZM8 12H9V8H7V9H8V12ZM7 15H8.8L7 17.1V18H10V17H8.2L10 14.9V14H7V15ZM12 9V11H26V9H12ZM12 23H26V21H12V23ZM12 17H26V15H12V17Z",
11
- fill: "currentColor"
12
- }, null, -1)]]);
13
- }
14
- var NumberedListIcon_default = /* @__PURE__ */ __plugin_vue_export_helper_default(_sfc_main, [["render", _sfc_render]]);
15
- export { NumberedListIcon_default as default };