@dragonmastery/dragoncore-vue 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +75 -0
- package/dist/AppLink-CHMMrSFI.js +54 -0
- package/dist/AppLink-CHMMrSFI.js.map +1 -0
- package/dist/Appearance-BfPdKMXw.js +70 -0
- package/dist/Appearance-BfPdKMXw.js.map +1 -0
- package/dist/Appearance-C3WguxT-.js +3 -0
- package/dist/ChangePasswordPage-Btu5lf-r.js +86 -0
- package/dist/ChangePasswordPage-Btu5lf-r.js.map +1 -0
- package/dist/ChangePasswordPage-mBBuQMkT.js +6 -0
- package/dist/CreateTeamForm-n2ut93vM.js +43 -0
- package/dist/CreateTeamMemberForm-CcH3AxNL.js +43 -0
- package/dist/CreateUserPage-CDrGuW9B.js +6 -0
- package/dist/CreateUserPage-Cmx8xjjv.js +76 -0
- package/dist/CreateUserPage-Cmx8xjjv.js.map +1 -0
- package/dist/CreditBalanceDashboard-DLz0ioP3.js +43 -0
- package/dist/CreditManagement-D3q5S-qc.js +43 -0
- package/dist/CustomerCreateSupportTicketForm-Ci7QYkG-.js +43 -0
- package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js +159 -0
- package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js.map +1 -0
- package/dist/CustomerEditSupportTicketForm-lLchVjnw.js +9 -0
- package/dist/CustomerSupportTicketAttachmentsTab-gBrVO97t.js +43 -0
- package/dist/CustomerSupportTicketCustomerNotesTab-D0jhzbOY.js +8 -0
- package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js +23 -0
- package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js.map +1 -0
- package/dist/CustomerSupportTicketHistoryTab-BNTf8EZq.js +6 -0
- package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js +17 -0
- package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js.map +1 -0
- package/dist/CustomerSupportTicketList-BkOzFxMP.js +6 -0
- package/dist/CustomerSupportTicketList-C2nUPawb.js +166 -0
- package/dist/CustomerSupportTicketList-C2nUPawb.js.map +1 -0
- package/dist/CustomerSupportTicketParent-2mONd9kL.js +66 -0
- package/dist/CustomerSupportTicketParent-2mONd9kL.js.map +1 -0
- package/dist/CustomerSupportTicketParent-N8ko1yFE.js +7 -0
- package/dist/CustomerSupportTicketSuccess-w_-9NXT4.js +43 -0
- package/dist/CustomerViewSupportTicket-CVwNH0lS.js +11 -0
- package/dist/CustomerViewSupportTicket-tZkxragu.js +363 -0
- package/dist/CustomerViewSupportTicket-tZkxragu.js.map +1 -0
- package/dist/EditTeamForm-BioqiTWE.js +43 -0
- package/dist/EditTeamMemberForm-DCq0Gsn_.js +7 -0
- package/dist/EditTeamMemberForm-ru4WgLz-.js +169 -0
- package/dist/EditTeamMemberForm-ru4WgLz-.js.map +1 -0
- package/dist/EditUserPage-BxJ5QvIM.js +112 -0
- package/dist/EditUserPage-BxJ5QvIM.js.map +1 -0
- package/dist/EditUserPage-XOBuxUxd.js +7 -0
- package/dist/FieldsetSection-CsHN38_o.js +27 -0
- package/dist/FieldsetSection-CsHN38_o.js.map +1 -0
- package/dist/ForgotPassword-CpqvcSFg.js +7 -0
- package/dist/ForgotPassword-CqhenzUG.js +73 -0
- package/dist/ForgotPassword-CqhenzUG.js.map +1 -0
- package/dist/InlineAttachments-I39rOvip.js +1351 -0
- package/dist/InlineAttachments-I39rOvip.js.map +1 -0
- package/dist/LoginForm-AM0qkfbU.js +7 -0
- package/dist/LoginForm-_PZ51Uwe.js +116 -0
- package/dist/LoginForm-_PZ51Uwe.js.map +1 -0
- package/dist/Logout-BMjiqHnS.js +38 -0
- package/dist/Logout-BMjiqHnS.js.map +1 -0
- package/dist/Logout-BfiBjlaH.js +6 -0
- package/dist/NoteList-C0hRPNMO.js +497 -0
- package/dist/NoteList-C0hRPNMO.js.map +1 -0
- package/dist/NotificationEmailsPage-BjRqtW95.js +141 -0
- package/dist/NotificationEmailsPage-BjRqtW95.js.map +1 -0
- package/dist/NotificationEmailsPage-bx-9rg3x.js +7 -0
- package/dist/ResetPassword-BQLkR9TZ.js +43 -0
- package/dist/Signup-CnCcQlB8.js +7 -0
- package/dist/Signup-c2-_yMOM.js +106 -0
- package/dist/Signup-c2-_yMOM.js.map +1 -0
- package/dist/StaffCreateSupportTicketForm-ChVFDJdA.js +43 -0
- package/dist/StaffEditSupportTicketForm-DY1Zkf5k.js +9 -0
- package/dist/StaffEditSupportTicketForm-DuUKuIGg.js +263 -0
- package/dist/StaffEditSupportTicketForm-DuUKuIGg.js.map +1 -0
- package/dist/StaffSupportTicketAttachmentsTab-DpDXsHXP.js +43 -0
- package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js +23 -0
- package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js.map +1 -0
- package/dist/StaffSupportTicketCustomerNotesTab-rbJHJ0_V.js +8 -0
- package/dist/StaffSupportTicketHistoryTab-D24myEm3.js +17 -0
- package/dist/StaffSupportTicketHistoryTab-D24myEm3.js.map +1 -0
- package/dist/StaffSupportTicketHistoryTab-nmVma5vp.js +6 -0
- package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js +23 -0
- package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js.map +1 -0
- package/dist/StaffSupportTicketInternalNotesTab-DihYd5XI.js +8 -0
- package/dist/StaffSupportTicketList-DelptSmK.js +43 -0
- package/dist/StaffSupportTicketParent-BCrj3ckV.js +7 -0
- package/dist/StaffSupportTicketParent-Cx1buQZw.js +66 -0
- package/dist/StaffSupportTicketParent-Cx1buQZw.js.map +1 -0
- package/dist/StaffSupportTicketSuccess-BYxtY5wZ.js +43 -0
- package/dist/StaffSupportTicketWorkflowTab-BrDDBeK9.js +9 -0
- package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js +1234 -0
- package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js.map +1 -0
- package/dist/SupportTicketHistoryTab-CLMopA7a.js +220 -0
- package/dist/SupportTicketHistoryTab-CLMopA7a.js.map +1 -0
- package/dist/SupportTicketStatusBadge-YdZzjvkh.js +163 -0
- package/dist/SupportTicketStatusBadge-YdZzjvkh.js.map +1 -0
- package/dist/TeamAttachmentsTab-BxUpTWYh.js +43 -0
- package/dist/TeamHistoryTab-CUCT9MRG.js +5 -0
- package/dist/TeamHistoryTab-gB3H2KZv.js +219 -0
- package/dist/TeamHistoryTab-gB3H2KZv.js.map +1 -0
- package/dist/TeamList-By6pzWm5.js +43 -0
- package/dist/TeamMemberList-CYV9fWEb.js +43 -0
- package/dist/TeamMemberParent-CVvGqpxD.js +43 -0
- package/dist/TeamMembersTab-4gmnP9sD.js +21 -0
- package/dist/TeamMembersTab-4gmnP9sD.js.map +1 -0
- package/dist/TeamMembersTab-CpE9BaCi.js +3 -0
- package/dist/TeamNotesTab-pfXTDhg6.js +23 -0
- package/dist/TeamNotesTab-pfXTDhg6.js.map +1 -0
- package/dist/TeamNotesTab-u4cDC67X.js +8 -0
- package/dist/TeamParent-BxT1KubK.js +43 -0
- package/dist/UserListPage-DsQdH2Sm.js +4 -0
- package/dist/UserListPage-WU56KiWj.js +153 -0
- package/dist/UserListPage-WU56KiWj.js.map +1 -0
- package/dist/UserProfilePage-B73JhjUu.js +7 -0
- package/dist/UserProfilePage-BtLUY1kt.js +125 -0
- package/dist/UserProfilePage-BtLUY1kt.js.map +1 -0
- package/dist/ViewTeam-DzX-obEl.js +43 -0
- package/dist/ViewTeamMember-PF6S_4Pb.js +43 -0
- package/dist/ZiniaContainer-C7c7Vwkh.js +18 -0
- package/dist/ZiniaContainer-C7c7Vwkh.js.map +1 -0
- package/dist/convertToLocalDateTime-D4IoNvRj.js +111 -0
- package/dist/convertToLocalDateTime-D4IoNvRj.js.map +1 -0
- package/dist/creditValueFormatter-DftEzu8d.js +128 -0
- package/dist/creditValueFormatter-DftEzu8d.js.map +1 -0
- package/dist/displayIdFormatter-Dz900Awr.js +13 -0
- package/dist/displayIdFormatter-Dz900Awr.js.map +1 -0
- package/dist/index.d.ts +6068 -0
- package/dist/index.js +45 -0
- package/dist/src-o5fMIo5_.js +6649 -0
- package/dist/src-o5fMIo5_.js.map +1 -0
- package/dist/useBreadcrumbs-DmgSucoe.js +41 -0
- package/dist/useBreadcrumbs-DmgSucoe.js.map +1 -0
- package/dist/useMutation-CFwe7H9j.js +50 -0
- package/dist/useMutation-CFwe7H9j.js.map +1 -0
- package/dist/useQuery-p7oJO7OD.js +107 -0
- package/dist/useQuery-p7oJO7OD.js.map +1 -0
- package/dist/useQueryCache-ByayvZgZ.js +254 -0
- package/dist/useQueryCache-ByayvZgZ.js.map +1 -0
- package/dist/useRpcAuth-BLlRSHy8.js +722 -0
- package/dist/useRpcAuth-BLlRSHy8.js.map +1 -0
- package/package.json +62 -0
- package/src/daisyui.css +63 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { t as useMutation } from "./useMutation-CFwe7H9j.js";
|
|
2
|
+
import { t as InlineAttachments_default } from "./InlineAttachments-I39rOvip.js";
|
|
3
|
+
import { t as FieldsetSection_default } from "./FieldsetSection-CsHN38_o.js";
|
|
4
|
+
import { createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, toDisplayString, unref, watch, withCtx } from "vue";
|
|
5
|
+
import { useRoute, useRouter } from "vue-router";
|
|
6
|
+
import { CustomerSupportTicketCreateSchema, CustomerSupportTicketUpdateSchema } from "@dragonmastery/dragoncore-shared";
|
|
7
|
+
import { useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
8
|
+
import { toast } from "vue3-toastify";
|
|
9
|
+
|
|
10
|
+
//#region src/slices/support_ticket/customer/customerSupportTicketMetadata.ts
|
|
11
|
+
const customerSupportTicketCreateSchemaWithMetadata = withMetadata(CustomerSupportTicketCreateSchema, "customerSupportTicketCreateSchema", { description: {
|
|
12
|
+
inputType: "textarea",
|
|
13
|
+
placeholder: "Enter description"
|
|
14
|
+
} });
|
|
15
|
+
const customerSupportTicketUpdateSchemaWithMetadata = withMetadata(CustomerSupportTicketUpdateSchema, "customerSupportTicketUpdateSchema", { description: {
|
|
16
|
+
inputType: "textarea",
|
|
17
|
+
placeholder: "Enter description"
|
|
18
|
+
} });
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/slices/support_ticket/customer/CustomerEditSupportTicketForm.vue
|
|
22
|
+
const _hoisted_1 = {
|
|
23
|
+
key: 0,
|
|
24
|
+
class: "flex justify-center items-center p-8"
|
|
25
|
+
};
|
|
26
|
+
const _hoisted_2 = {
|
|
27
|
+
key: 1,
|
|
28
|
+
class: "alert alert-error mb-4"
|
|
29
|
+
};
|
|
30
|
+
const _hoisted_3 = { class: "mt-6" };
|
|
31
|
+
const _hoisted_4 = {
|
|
32
|
+
key: 0,
|
|
33
|
+
class: "alert alert-error mb-4"
|
|
34
|
+
};
|
|
35
|
+
const _hoisted_5 = { class: "flex justify-center mt-6" };
|
|
36
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
37
|
+
__name: "CustomerEditSupportTicketForm",
|
|
38
|
+
props: {
|
|
39
|
+
ticket: {},
|
|
40
|
+
isLoading: { type: Boolean },
|
|
41
|
+
error: {}
|
|
42
|
+
},
|
|
43
|
+
setup(__props) {
|
|
44
|
+
const props = __props;
|
|
45
|
+
const support_ticket_id = useRoute().params.id;
|
|
46
|
+
const router = useRouter();
|
|
47
|
+
watch(() => props.ticket, (support_ticket) => {
|
|
48
|
+
if (support_ticket?.status === "FOLLOWUP" || support_ticket?.status === "IN_PROGRESS" || support_ticket?.status === "COMPLETED" || support_ticket?.status === "CANCELLED") router.replace({
|
|
49
|
+
name: "CustomerViewSupportTicket",
|
|
50
|
+
params: { id: support_ticket_id }
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
const { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaResetButton, ZiniaFormErrorsSummary, clearSavedFormState } = useForm(customerSupportTicketUpdateSchemaWithMetadata, {
|
|
54
|
+
storeName: `edit-customer-support-ticket-${support_ticket_id}`,
|
|
55
|
+
persistToLocalStorage: false,
|
|
56
|
+
renderStyle: "daisy_ui",
|
|
57
|
+
fetchData: async () => {
|
|
58
|
+
if (!props.ticket) throw new Error("No support ticket data found");
|
|
59
|
+
return props.ticket;
|
|
60
|
+
},
|
|
61
|
+
dataLoaders: { read_data: async () => {
|
|
62
|
+
if (!props.ticket) throw new Error("No support ticket data found");
|
|
63
|
+
return props.ticket;
|
|
64
|
+
} }
|
|
65
|
+
});
|
|
66
|
+
const { mutate: updateSupportTicket } = useMutation((api, input) => api.supportTickets.updateTicket(input), { invalidate: /^support-tickets?:/ });
|
|
67
|
+
const beforeValidate = () => {
|
|
68
|
+
return true;
|
|
69
|
+
};
|
|
70
|
+
const handleSubmit = async (formData) => {
|
|
71
|
+
const updatedSupportTicket = await updateSupportTicket({
|
|
72
|
+
id: formData.id,
|
|
73
|
+
title: formData.title,
|
|
74
|
+
description: formData.description,
|
|
75
|
+
priority: formData.priority,
|
|
76
|
+
type: formData.type
|
|
77
|
+
});
|
|
78
|
+
if (!updatedSupportTicket) throw new Error("Failed to update support ticket");
|
|
79
|
+
return updatedSupportTicket;
|
|
80
|
+
};
|
|
81
|
+
const handleSuccess = async (updatedSupportTicket) => {
|
|
82
|
+
clearSavedFormState();
|
|
83
|
+
if (form.extraData.read_data) Object.assign(form.extraData.read_data, updatedSupportTicket);
|
|
84
|
+
toast.success(`Support Ticket updated successfully!`, {});
|
|
85
|
+
};
|
|
86
|
+
const handleError = (error) => {
|
|
87
|
+
form.setSubmitError(error instanceof Error ? error.message : "An unknown error occurred");
|
|
88
|
+
};
|
|
89
|
+
return (_ctx, _cache) => {
|
|
90
|
+
return unref(form).isLoading ? (openBlock(), createElementBlock("div", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "loading loading-spinner loading-lg" }, null, -1)])])) : unref(form).loadError ? (openBlock(), createElementBlock("div", _hoisted_2, [_cache[1] || (_cache[1] = createElementVNode("svg", {
|
|
91
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
92
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
93
|
+
fill: "none",
|
|
94
|
+
viewBox: "0 0 24 24"
|
|
95
|
+
}, [createElementVNode("path", {
|
|
96
|
+
"stroke-linecap": "round",
|
|
97
|
+
"stroke-linejoin": "round",
|
|
98
|
+
"stroke-width": "2",
|
|
99
|
+
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
100
|
+
})], -1)), createElementVNode("span", null, toDisplayString(unref(form).loadError), 1)])) : (openBlock(), createBlock(unref(ZiniaForm), {
|
|
101
|
+
key: 2,
|
|
102
|
+
onBeforeValidate: beforeValidate,
|
|
103
|
+
onHandleSubmit: handleSubmit,
|
|
104
|
+
onSuccess: handleSuccess,
|
|
105
|
+
onError: handleError,
|
|
106
|
+
title: "Edit Support Ticket",
|
|
107
|
+
subtitle: "Update your support ticket details"
|
|
108
|
+
}, {
|
|
109
|
+
default: withCtx(() => [
|
|
110
|
+
createCommentVNode(" Basic Information "),
|
|
111
|
+
createVNode(FieldsetSection_default, { title: "Support Ticket Details" }, {
|
|
112
|
+
default: withCtx(() => [
|
|
113
|
+
createVNode(unref(zinia).TitleField, { placeholder: "Enter support ticket title" }),
|
|
114
|
+
createVNode(unref(zinia).TypeField),
|
|
115
|
+
createVNode(unref(zinia).PriorityField)
|
|
116
|
+
]),
|
|
117
|
+
_: 1
|
|
118
|
+
}),
|
|
119
|
+
createCommentVNode(" Description "),
|
|
120
|
+
createVNode(FieldsetSection_default, { title: "Description" }, {
|
|
121
|
+
default: withCtx(() => [createVNode(unref(zinia).DescriptionField, { placeholder: "Describe the support ticket in detail" })]),
|
|
122
|
+
_: 1
|
|
123
|
+
}),
|
|
124
|
+
createCommentVNode(" Attachments (Jira-style inline) "),
|
|
125
|
+
createElementVNode("div", _hoisted_3, [createVNode(InlineAttachments_default, {
|
|
126
|
+
"record-id": unref(support_ticket_id),
|
|
127
|
+
"can-upload": true,
|
|
128
|
+
"can-delete": true
|
|
129
|
+
}, null, 8, ["record-id"])]),
|
|
130
|
+
createCommentVNode(" Form Status Messages "),
|
|
131
|
+
unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_4, [_cache[2] || (_cache[2] = createElementVNode("svg", {
|
|
132
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
133
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
134
|
+
fill: "none",
|
|
135
|
+
viewBox: "0 0 24 24"
|
|
136
|
+
}, [createElementVNode("path", {
|
|
137
|
+
"stroke-linecap": "round",
|
|
138
|
+
"stroke-linejoin": "round",
|
|
139
|
+
"stroke-width": "2",
|
|
140
|
+
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
141
|
+
})], -1)), createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
|
|
142
|
+
createCommentVNode(" Submit Button "),
|
|
143
|
+
createElementVNode("div", _hoisted_5, [createVNode(unref(ZiniaSubmitButton), {
|
|
144
|
+
submitText: "Update",
|
|
145
|
+
submittingText: "Updating Support Ticket..."
|
|
146
|
+
})]),
|
|
147
|
+
createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" }),
|
|
148
|
+
createVNode(unref(ZiniaResetButton))
|
|
149
|
+
]),
|
|
150
|
+
_: 1
|
|
151
|
+
}));
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
var CustomerEditSupportTicketForm_default = _sfc_main;
|
|
156
|
+
|
|
157
|
+
//#endregion
|
|
158
|
+
export { customerSupportTicketCreateSchemaWithMetadata as n, customerSupportTicketUpdateSchemaWithMetadata as r, CustomerEditSupportTicketForm_default as t };
|
|
159
|
+
//# sourceMappingURL=CustomerEditSupportTicketForm-Dd5ZB74k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerEditSupportTicketForm-Dd5ZB74k.js","names":[],"sources":["../src/slices/support_ticket/customer/customerSupportTicketMetadata.ts","../src/slices/support_ticket/customer/CustomerEditSupportTicketForm.vue"],"sourcesContent":["import {\n type UseFormTyped,\n withMetadata,\n ZINIA_FIELDS_KEY,\n ZINIA_FORM_KEY,\n} from '@dragonmastery/zinia-forms-core';\nimport {\n CustomerSupportTicketCreateSchema,\n CustomerSupportTicketUpdateSchema,\n} from '@dragonmastery/dragoncore-shared';\nimport { inject } from 'vue';\n\n// Create schema (no ID)\nexport const customerSupportTicketCreateSchemaWithMetadata = withMetadata(\n CustomerSupportTicketCreateSchema,\n 'customerSupportTicketCreateSchema',\n {\n description: {\n inputType: 'textarea',\n placeholder: 'Enter description',\n },\n },\n);\n\n// Update schema (with ID)\nexport const customerSupportTicketUpdateSchemaWithMetadata = withMetadata(\n CustomerSupportTicketUpdateSchema,\n 'customerSupportTicketUpdateSchema',\n {\n description: {\n inputType: 'textarea',\n placeholder: 'Enter description',\n },\n },\n);\n\nexport type CustomerSupportTicketCreateFormDto = UseFormTyped<\n typeof CustomerSupportTicketCreateSchema\n>;\nexport type CustomerSupportTicketUpdateFormDto = UseFormTyped<\n typeof CustomerSupportTicketUpdateSchema\n>;\n\nexport const injectCustomerSupportTicketCreateForm = () =>\n inject<CustomerSupportTicketCreateFormDto['form']>(ZINIA_FORM_KEY);\nexport const injectCustomerSupportTicketUpdateForm = () =>\n inject<CustomerSupportTicketUpdateFormDto['form']>(ZINIA_FORM_KEY);\nexport const injectCustomerSupportTicketZinia = () =>\n inject<\n CustomerSupportTicketCreateFormDto['zinia'] | CustomerSupportTicketUpdateFormDto['zinia']\n >(ZINIA_FIELDS_KEY);\n","<template>\n <div v-if=\"form.isLoading\" class=\"flex justify-center items-center p-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"form.loadError\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ form.loadError }}</span>\n </div>\n\n <ZiniaForm\n v-else\n @before-validate=\"beforeValidate\"\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"Edit Support Ticket\"\n subtitle=\"Update your support ticket details\"\n >\n <!-- Basic Information -->\n <FieldsetSection title=\"Support Ticket Details\">\n <zinia.TitleField placeholder=\"Enter support ticket title\" />\n <zinia.TypeField />\n <zinia.PriorityField />\n </FieldsetSection>\n\n <!-- Description -->\n <FieldsetSection title=\"Description\">\n <zinia.DescriptionField placeholder=\"Describe the support ticket in detail\" />\n </FieldsetSection>\n\n <!-- Attachments (Jira-style inline) -->\n <div class=\"mt-6\">\n <InlineAttachments\n :record-id=\"support_ticket_id\"\n :can-upload=\"true\"\n :can-delete=\"true\"\n />\n </div>\n\n <!-- Form Status Messages -->\n <div v-if=\"form.submitError\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ form.submitError }}</span>\n </div>\n\n <!-- Submit Button -->\n <div class=\"flex justify-center mt-6\">\n <ZiniaSubmitButton submitText=\"Update\" submittingText=\"Updating Support Ticket...\" />\n </div>\n <ZiniaFormErrorsSummary title=\"Please fix the following errors:\" />\n <ZiniaResetButton />\n </ZiniaForm>\n</template>\n\n<script setup lang=\"ts\">\nimport FieldsetSection from '../../../components/ui/FieldsetSection.vue';\nimport { useMutation } from '../../../composables/useMutation';\nimport { customerSupportTicketUpdateSchemaWithMetadata } from './customerSupportTicketMetadata';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport type {\n CustomerSupportTicketReadDto,\n CustomerSupportTicketUpdateDto,\n} from '@dragonmastery/dragoncore-shared';\nimport { watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport InlineAttachments from '../shared/InlineAttachments.vue';\n\ninterface Props {\n ticket: CustomerSupportTicketReadDto | null;\n isLoading?: boolean;\n error?: Error | null;\n}\n\nconst props = defineProps<Props>();\n\nconst route = useRoute();\nconst support_ticket_id = route.params.id as string;\nconst router = useRouter();\n\n// Redirect to view support ticket if this is in an, FOLLOWUP, IN_PROGRESS, COMPLETED, or CANCELLED status\nwatch(\n () => props.ticket,\n (support_ticket) => {\n if (\n support_ticket?.status === 'FOLLOWUP' ||\n support_ticket?.status === 'IN_PROGRESS' ||\n support_ticket?.status === 'COMPLETED' ||\n support_ticket?.status === 'CANCELLED'\n ) {\n router.replace({\n name: 'CustomerViewSupportTicket',\n params: { id: support_ticket_id },\n });\n }\n },\n);\nconst {\n form,\n zinia,\n ZiniaForm,\n ZiniaSubmitButton,\n ZiniaResetButton,\n ZiniaFormErrorsSummary,\n clearSavedFormState,\n} = useForm(customerSupportTicketUpdateSchemaWithMetadata, {\n storeName: `edit-customer-support-ticket-${support_ticket_id}`,\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n fetchData: async () => {\n if (!props.ticket) {\n throw new Error('No support ticket data found');\n }\n\n return props.ticket as CustomerSupportTicketUpdateDto;\n },\n dataLoaders: {\n read_data: async () => {\n if (!props.ticket) {\n throw new Error('No support ticket data found');\n }\n\n return props.ticket;\n },\n },\n});\n\n// ============================================================\n// MUTATIONS\n// ============================================================\n\n// Setup mutation for updating support ticket\nconst { mutate: updateSupportTicket } = useMutation(\n (api, input: CustomerSupportTicketUpdateDto) => api.supportTickets.updateTicket(input),\n { invalidate: /^support-tickets?:/ },\n);\n\nconst beforeValidate = () => {\n return true;\n};\n\n// Handle form submission - customers can only edit basic fields\nconst handleSubmit = async (formData: CustomerSupportTicketUpdateDto) => {\n // Customers can only update basic information\n const updatedSupportTicket = await updateSupportTicket({\n id: formData.id,\n title: formData.title,\n description: formData.description,\n priority: formData.priority,\n type: formData.type,\n });\n\n if (!updatedSupportTicket) {\n throw new Error('Failed to update support ticket');\n }\n\n return updatedSupportTicket;\n};\n\n// Handle successful submission\nconst handleSuccess = async (updatedSupportTicket: CustomerSupportTicketUpdateDto) => {\n clearSavedFormState();\n\n // Update the read-only data to reflect changes\n if (form.extraData.read_data) {\n Object.assign(form.extraData.read_data, updatedSupportTicket);\n }\n\n toast.success(`Support Ticket updated successfully!`, {});\n};\n\n// Handle submission error\nconst handleError = (error: Error | unknown) => {\n form.setSubmitError(error instanceof Error ? error.message : 'An unknown error occurred');\n};\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./useQueryCache-ByayvZgZ.js";
|
|
3
|
+
import "./useMutation-CFwe7H9j.js";
|
|
4
|
+
import "./useQuery-p7oJO7OD.js";
|
|
5
|
+
import "./InlineAttachments-I39rOvip.js";
|
|
6
|
+
import "./FieldsetSection-CsHN38_o.js";
|
|
7
|
+
import { t as CustomerEditSupportTicketForm_default } from "./CustomerEditSupportTicketForm-Dd5ZB74k.js";
|
|
8
|
+
|
|
9
|
+
export { CustomerEditSupportTicketForm_default as default };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./useQueryCache-ByayvZgZ.js";
|
|
3
|
+
import "./useMutation-CFwe7H9j.js";
|
|
4
|
+
import "./useQuery-p7oJO7OD.js";
|
|
5
|
+
import { k as CustomerSupportTicketAttachmentsTab_default } from "./src-o5fMIo5_.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./InlineAttachments-I39rOvip.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./FieldsetSection-CsHN38_o.js";
|
|
12
|
+
import "./ZiniaContainer-C7c7Vwkh.js";
|
|
13
|
+
import "./NoteList-C0hRPNMO.js";
|
|
14
|
+
import "./UserProfilePage-BtLUY1kt.js";
|
|
15
|
+
import "./ChangePasswordPage-Btu5lf-r.js";
|
|
16
|
+
import "./TeamHistoryTab-gB3H2KZv.js";
|
|
17
|
+
import "./TeamNotesTab-pfXTDhg6.js";
|
|
18
|
+
import "./EditTeamMemberForm-ru4WgLz-.js";
|
|
19
|
+
import "./SupportTicketStatusBadge-YdZzjvkh.js";
|
|
20
|
+
import "./creditValueFormatter-DftEzu8d.js";
|
|
21
|
+
import "./CustomerSupportTicketList-C2nUPawb.js";
|
|
22
|
+
import "./CustomerEditSupportTicketForm-Dd5ZB74k.js";
|
|
23
|
+
import "./CustomerViewSupportTicket-tZkxragu.js";
|
|
24
|
+
import "./CustomerSupportTicketParent-2mONd9kL.js";
|
|
25
|
+
import "./CustomerSupportTicketCustomerNotesTab-D1aa9It7.js";
|
|
26
|
+
import "./SupportTicketHistoryTab-CLMopA7a.js";
|
|
27
|
+
import "./CustomerSupportTicketHistoryTab-CFYN_Sa4.js";
|
|
28
|
+
import "./StaffSupportTicketWorkflowTab-DmVTPzxS.js";
|
|
29
|
+
import "./StaffEditSupportTicketForm-DuUKuIGg.js";
|
|
30
|
+
import "./StaffSupportTicketParent-Cx1buQZw.js";
|
|
31
|
+
import "./StaffSupportTicketCustomerNotesTab-CusqQV2-.js";
|
|
32
|
+
import "./StaffSupportTicketInternalNotesTab-D8HM--dp.js";
|
|
33
|
+
import "./StaffSupportTicketHistoryTab-D24myEm3.js";
|
|
34
|
+
import "./LoginForm-_PZ51Uwe.js";
|
|
35
|
+
import "./Signup-c2-_yMOM.js";
|
|
36
|
+
import "./ForgotPassword-CqhenzUG.js";
|
|
37
|
+
import "./Logout-BMjiqHnS.js";
|
|
38
|
+
import "./UserListPage-WU56KiWj.js";
|
|
39
|
+
import "./CreateUserPage-Cmx8xjjv.js";
|
|
40
|
+
import "./NotificationEmailsPage-BjRqtW95.js";
|
|
41
|
+
import "./EditUserPage-BxJ5QvIM.js";
|
|
42
|
+
|
|
43
|
+
export { CustomerSupportTicketAttachmentsTab_default as default };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./useQueryCache-ByayvZgZ.js";
|
|
3
|
+
import "./useMutation-CFwe7H9j.js";
|
|
4
|
+
import "./useQuery-p7oJO7OD.js";
|
|
5
|
+
import "./NoteList-C0hRPNMO.js";
|
|
6
|
+
import { t as CustomerSupportTicketCustomerNotesTab_default } from "./CustomerSupportTicketCustomerNotesTab-D1aa9It7.js";
|
|
7
|
+
|
|
8
|
+
export { CustomerSupportTicketCustomerNotesTab_default as default };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { t as NoteList_default } from "./NoteList-C0hRPNMO.js";
|
|
2
|
+
import { createBlock, defineComponent, openBlock, unref } from "vue";
|
|
3
|
+
import { useRoute } from "vue-router";
|
|
4
|
+
|
|
5
|
+
//#region src/slices/support_ticket/customer/CustomerSupportTicketCustomerNotesTab.vue
|
|
6
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
|
+
__name: "CustomerSupportTicketCustomerNotesTab",
|
|
8
|
+
setup(__props) {
|
|
9
|
+
const support_ticket_id = useRoute().params.id;
|
|
10
|
+
return (_ctx, _cache) => {
|
|
11
|
+
return openBlock(), createBlock(NoteList_default, {
|
|
12
|
+
recordId: unref(support_ticket_id),
|
|
13
|
+
recordType: "support_ticket",
|
|
14
|
+
mode: "customer"
|
|
15
|
+
}, null, 8, ["recordId"]);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var CustomerSupportTicketCustomerNotesTab_default = _sfc_main;
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { CustomerSupportTicketCustomerNotesTab_default as t };
|
|
23
|
+
//# sourceMappingURL=CustomerSupportTicketCustomerNotesTab-D1aa9It7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerSupportTicketCustomerNotesTab-D1aa9It7.js","names":[],"sources":["../src/slices/support_ticket/customer/CustomerSupportTicketCustomerNotesTab.vue"],"sourcesContent":["<template>\n <NoteList :recordId=\"support_ticket_id\" recordType=\"support_ticket\" mode=\"customer\" />\n</template>\n\n<script setup lang=\"ts\">\nimport NoteList from '../../note/components/NoteList.vue';\nimport { useRoute } from 'vue-router';\n\nconst route = useRoute();\nconst support_ticket_id = route.params.id as string;\n</script>\n"],"mappings":";;;;;;;;EASA,MAAM,oBADQ,UAAU,CACQ,OAAO;;uBARrC,YAAsF,kBAAA;IAA3E,UAAU,MAAA,kBAAiB;IAAE,YAAW;IAAiB,MAAK"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./ZiniaContainer-C7c7Vwkh.js";
|
|
3
|
+
import "./SupportTicketHistoryTab-CLMopA7a.js";
|
|
4
|
+
import { t as CustomerSupportTicketHistoryTab_default } from "./CustomerSupportTicketHistoryTab-CFYN_Sa4.js";
|
|
5
|
+
|
|
6
|
+
export { CustomerSupportTicketHistoryTab_default as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { t as SupportTicketHistoryTab_default } from "./SupportTicketHistoryTab-CLMopA7a.js";
|
|
2
|
+
import { createBlock, defineComponent, openBlock } from "vue";
|
|
3
|
+
|
|
4
|
+
//#region src/slices/support_ticket/customer/CustomerSupportTicketHistoryTab.vue
|
|
5
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
|
+
__name: "CustomerSupportTicketHistoryTab",
|
|
7
|
+
setup(__props) {
|
|
8
|
+
return (_ctx, _cache) => {
|
|
9
|
+
return openBlock(), createBlock(SupportTicketHistoryTab_default);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var CustomerSupportTicketHistoryTab_default = _sfc_main;
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { CustomerSupportTicketHistoryTab_default as t };
|
|
17
|
+
//# sourceMappingURL=CustomerSupportTicketHistoryTab-CFYN_Sa4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerSupportTicketHistoryTab-CFYN_Sa4.js","names":[],"sources":["../src/slices/support_ticket/customer/CustomerSupportTicketHistoryTab.vue"],"sourcesContent":["<template>\n <SupportTicketHistoryTab />\n</template>\n\n<script setup lang=\"ts\">\nimport SupportTicketHistoryTab from '../components/SupportTicketHistoryTab.vue';\n</script>\n"],"mappings":";;;;;;;;uBACE,YAA2B,gCAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./SupportTicketStatusBadge-YdZzjvkh.js";
|
|
3
|
+
import "./creditValueFormatter-DftEzu8d.js";
|
|
4
|
+
import { t as CustomerSupportTicketList_default } from "./CustomerSupportTicketList-C2nUPawb.js";
|
|
5
|
+
|
|
6
|
+
export { CustomerSupportTicketList_default as default };
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import { r as formatUserDate, t as formatSystemTimestamp } from "./convertToLocalDateTime-D4IoNvRj.js";
|
|
3
|
+
import { n as SupportTicketPriorityBadge_default, t as SupportTicketStatusBadge_default } from "./SupportTicketStatusBadge-YdZzjvkh.js";
|
|
4
|
+
import { r as SupportTicketTypeBadge_default, t as formatCustomerCreditValue } from "./creditValueFormatter-DftEzu8d.js";
|
|
5
|
+
import { t as formatTicketDisplayId } from "./displayIdFormatter-Dz900Awr.js";
|
|
6
|
+
import { createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, ref, resolveComponent, toDisplayString, unref, withCtx } from "vue";
|
|
7
|
+
import { CustomerSupportTicketReadSchema, OPERATORS } from "@dragonmastery/dragoncore-shared";
|
|
8
|
+
import { ActionIcons, useCursorDataTable, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
9
|
+
|
|
10
|
+
//#region src/slices/support_ticket/customer/customerSupportTicketRowSchema.ts
|
|
11
|
+
/**
|
|
12
|
+
* Reuse the existing CustomerSupportTicketReadSchema from the validation library
|
|
13
|
+
* for the data table rows - don't recreate it!
|
|
14
|
+
*/
|
|
15
|
+
const customerSupportTicketRowSchemaWithMetadata = withMetadata(CustomerSupportTicketReadSchema, "customerSupportTicketRow", {});
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/slices/support_ticket/customer/CustomerSupportTicketList.vue
|
|
19
|
+
const _hoisted_1 = { class: "mt-2" };
|
|
20
|
+
const _hoisted_2 = { class: "flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-4" };
|
|
21
|
+
const _hoisted_3 = { class: "flex gap-2" };
|
|
22
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
23
|
+
__name: "CustomerSupportTicketList",
|
|
24
|
+
setup(__props) {
|
|
25
|
+
const currentPaginationToken = ref();
|
|
26
|
+
const { ZiniaDataTable } = useCursorDataTable(customerSupportTicketRowSchemaWithMetadata, {
|
|
27
|
+
fetchData: async ({ cursor, pageSize, sort, filters, search }) => {
|
|
28
|
+
const variables = {
|
|
29
|
+
first: pageSize,
|
|
30
|
+
sortBy: sort?.field ? sort.field : "updated_at",
|
|
31
|
+
sortDirection: sort?.direction === "asc" ? "asc" : "desc",
|
|
32
|
+
...cursor ? { after: cursor } : {},
|
|
33
|
+
...currentPaginationToken.value ? { paginationToken: currentPaginationToken.value } : {},
|
|
34
|
+
...search ? { search: typeof search === "string" ? {
|
|
35
|
+
query: search,
|
|
36
|
+
searchableFields: [
|
|
37
|
+
"display_id",
|
|
38
|
+
"title",
|
|
39
|
+
"description"
|
|
40
|
+
]
|
|
41
|
+
} : search } : {},
|
|
42
|
+
...filters
|
|
43
|
+
};
|
|
44
|
+
if (!filters || !filters.status) variables.status = {
|
|
45
|
+
operator: OPERATORS.IS_NOT_ONE_OF,
|
|
46
|
+
values: ["COMPLETED", "CANCELLED"]
|
|
47
|
+
};
|
|
48
|
+
const result = await executeWithAuth(async (api) => {
|
|
49
|
+
return await api.supportTickets.listTickets(variables ?? {});
|
|
50
|
+
}, { refreshTokenHandler: getRefreshTokenHandler() });
|
|
51
|
+
currentPaginationToken.value = result?.pageInfo?.paginationToken;
|
|
52
|
+
return {
|
|
53
|
+
data: result.items || [],
|
|
54
|
+
hasNextPage: result.pageInfo?.hasNextPage ?? false,
|
|
55
|
+
hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,
|
|
56
|
+
prevPageCursor: result.pageInfo?.prevPageCursor ?? void 0,
|
|
57
|
+
nextPageCursor: result.pageInfo?.nextPageCursor ?? void 0
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
columns: {
|
|
61
|
+
display_id: {
|
|
62
|
+
label: "Ticket ID",
|
|
63
|
+
field: "display_id",
|
|
64
|
+
sortable: true
|
|
65
|
+
},
|
|
66
|
+
title: {
|
|
67
|
+
label: "Title",
|
|
68
|
+
field: "title",
|
|
69
|
+
sortable: true
|
|
70
|
+
},
|
|
71
|
+
type: {
|
|
72
|
+
label: "Type",
|
|
73
|
+
field: "type",
|
|
74
|
+
sortable: true,
|
|
75
|
+
filterable: true
|
|
76
|
+
},
|
|
77
|
+
priority: {
|
|
78
|
+
label: "Priority",
|
|
79
|
+
field: "priority",
|
|
80
|
+
sortable: true,
|
|
81
|
+
filterable: true
|
|
82
|
+
},
|
|
83
|
+
status: {
|
|
84
|
+
label: "Status",
|
|
85
|
+
field: "status",
|
|
86
|
+
filterable: true
|
|
87
|
+
},
|
|
88
|
+
credit_value: {
|
|
89
|
+
label: "Credits",
|
|
90
|
+
field: "credit_value",
|
|
91
|
+
sortable: false
|
|
92
|
+
},
|
|
93
|
+
target_at: {
|
|
94
|
+
label: "Delivery Est.",
|
|
95
|
+
field: "target_at",
|
|
96
|
+
sortable: true
|
|
97
|
+
},
|
|
98
|
+
updated_at: {
|
|
99
|
+
label: "Last Updated",
|
|
100
|
+
field: "updated_at",
|
|
101
|
+
sortable: true
|
|
102
|
+
},
|
|
103
|
+
requester_email: {
|
|
104
|
+
label: "Requester",
|
|
105
|
+
field: "requester_email",
|
|
106
|
+
sortable: true,
|
|
107
|
+
filterable: true
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
actions: { items: [{
|
|
111
|
+
key: "view",
|
|
112
|
+
icon: ActionIcons.eye,
|
|
113
|
+
size: "xs",
|
|
114
|
+
variant: "primary",
|
|
115
|
+
type: "link",
|
|
116
|
+
href: (row) => `/support/${row.id}`
|
|
117
|
+
}] },
|
|
118
|
+
search: { searchableFields: ["title"] },
|
|
119
|
+
pagination: { pageSize: 25 }
|
|
120
|
+
});
|
|
121
|
+
return (_ctx, _cache) => {
|
|
122
|
+
const _component_router_link = resolveComponent("router-link");
|
|
123
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [_cache[1] || (_cache[1] = createElementVNode("h1", { class: "text-xl sm:text-2xl font-bold" }, "Support Tickets", -1)), createElementVNode("div", _hoisted_3, [createVNode(_component_router_link, {
|
|
124
|
+
to: { name: "CustomerCreateSupportTicket" },
|
|
125
|
+
class: "btn btn-primary btn-sm sm:btn-md"
|
|
126
|
+
}, {
|
|
127
|
+
default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Create ", -1)])]),
|
|
128
|
+
_: 1
|
|
129
|
+
})])]), createVNode(unref(ZiniaDataTable), null, {
|
|
130
|
+
"cell-displayId": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatTicketDisplayId)(row.display_id, row.display_id_prefix, row.id)), 1)]),
|
|
131
|
+
"cell-type": withCtx(({ row }) => [createVNode(SupportTicketTypeBadge_default, {
|
|
132
|
+
type: row.type,
|
|
133
|
+
size: "sm"
|
|
134
|
+
}, null, 8, ["type"])]),
|
|
135
|
+
"cell-priority": withCtx(({ row }) => [createVNode(SupportTicketPriorityBadge_default, {
|
|
136
|
+
priority: row.priority,
|
|
137
|
+
size: "sm"
|
|
138
|
+
}, null, 8, ["priority"])]),
|
|
139
|
+
"cell-status": withCtx(({ row }) => [createVNode(SupportTicketStatusBadge_default, {
|
|
140
|
+
status: row.status,
|
|
141
|
+
size: "sm"
|
|
142
|
+
}, null, 8, ["status"])]),
|
|
143
|
+
"cell-credit_value": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatCustomerCreditValue)(row.credit_value)), 1)]),
|
|
144
|
+
"cell-target_at": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatUserDate)(row.target_at) || "TBD"), 1)]),
|
|
145
|
+
"cell-created_at": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatSystemTimestamp)(row.created_at)), 1)]),
|
|
146
|
+
"cell-updated_at": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatSystemTimestamp)(row.updated_at)), 1)]),
|
|
147
|
+
"cell-actions": withCtx(({ row }) => [createVNode(_component_router_link, {
|
|
148
|
+
to: {
|
|
149
|
+
name: "EditSupportTicket",
|
|
150
|
+
params: { id: row.id }
|
|
151
|
+
},
|
|
152
|
+
class: "btn btn-sm btn-primary"
|
|
153
|
+
}, {
|
|
154
|
+
default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" View ", -1)])]),
|
|
155
|
+
_: 1
|
|
156
|
+
}, 8, ["to"])]),
|
|
157
|
+
_: 1
|
|
158
|
+
})]);
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
var CustomerSupportTicketList_default = _sfc_main;
|
|
163
|
+
|
|
164
|
+
//#endregion
|
|
165
|
+
export { customerSupportTicketRowSchemaWithMetadata as n, CustomerSupportTicketList_default as t };
|
|
166
|
+
//# sourceMappingURL=CustomerSupportTicketList-C2nUPawb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerSupportTicketList-C2nUPawb.js","names":["variables: any"],"sources":["../src/slices/support_ticket/customer/customerSupportTicketRowSchema.ts","../src/slices/support_ticket/customer/CustomerSupportTicketList.vue"],"sourcesContent":["import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { CustomerSupportTicketReadSchema } from '@dragonmastery/dragoncore-shared';\n\n/**\n * Reuse the existing CustomerSupportTicketReadSchema from the validation library\n * for the data table rows - don't recreate it!\n */\nexport const customerSupportTicketRowSchemaWithMetadata = withMetadata(\n CustomerSupportTicketReadSchema,\n 'customerSupportTicketRow',\n {},\n);\n\nexport type CustomerSupportTicketRow = typeof CustomerSupportTicketReadSchema._type;\n","<template>\n <div class=\"mt-2\">\n <div class=\"flex flex-col sm:flex-row sm:justify-between sm:items-center gap-4 mb-4\">\n <h1 class=\"text-xl sm:text-2xl font-bold\">Support Tickets</h1>\n <div class=\"flex gap-2\">\n <router-link\n :to=\"{ name: 'CustomerCreateSupportTicket' }\"\n class=\"btn btn-primary btn-sm sm:btn-md\"\n >\n Create\n </router-link>\n </div>\n </div>\n <ZiniaDataTable>\n <template #cell-displayId=\"{ row }\">\n {{ formatTicketDisplayId(row.display_id, row.display_id_prefix, row.id) }}\n </template>\n <template #cell-type=\"{ row }\">\n <SupportTicketTypeBadge :type=\"row.type\" size=\"sm\" />\n </template>\n <template #cell-priority=\"{ row }\">\n <SupportTicketPriorityBadge :priority=\"row.priority\" size=\"sm\" />\n </template>\n <template #cell-status=\"{ row }\">\n <SupportTicketStatusBadge :status=\"row.status\" size=\"sm\" />\n </template>\n <template #cell-credit_value=\"{ row }\">\n {{ formatCustomerCreditValue(row.credit_value) }}\n </template>\n <template #cell-target_at=\"{ row }\">\n {{ formatUserDate(row.target_at) || 'TBD' }}\n </template>\n <template #cell-created_at=\"{ row }\">\n {{ formatSystemTimestamp(row.created_at) }}\n </template>\n <template #cell-updated_at=\"{ row }\">\n {{ formatSystemTimestamp(row.updated_at) }}\n </template>\n <template #cell-actions=\"{ row }\">\n <router-link\n :to=\"{\n name: 'EditSupportTicket',\n params: { id: row.id },\n }\"\n class=\"btn btn-sm btn-primary\"\n >\n View\n </router-link>\n </template>\n </ZiniaDataTable>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { executeWithAuth } from '../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp, formatUserDate } from '../../../utils/convertToLocalDateTime';\nimport { OPERATORS } from '@dragonmastery/dragoncore-shared';\nimport { ActionIcons, useCursorDataTable } from '@dragonmastery/zinia-forms-core';\nimport { ref } from 'vue';\nimport SupportTicketPriorityBadge from '../components/SupportTicketPriorityBadge.vue';\nimport SupportTicketStatusBadge from '../components/SupportTicketStatusBadge.vue';\nimport SupportTicketTypeBadge from '../components/SupportTicketTypeBadge.vue';\nimport { formatCustomerCreditValue } from '../utils/creditValueFormatter';\nimport { formatTicketDisplayId } from '../utils/displayIdFormatter';\nimport {\n customerSupportTicketRowSchemaWithMetadata,\n type CustomerSupportTicketRow,\n} from './customerSupportTicketRowSchema';\n\n// Store pagination token for breadcrumb state\nconst currentPaginationToken = ref<string | undefined | null>();\n\n// Set up data table with cursor breadcrumb pagination\nconst { ZiniaDataTable } = useCursorDataTable(customerSupportTicketRowSchemaWithMetadata, {\n fetchData: async ({ cursor, pageSize, sort, filters, search }) => {\n const variables: any = {\n first: pageSize,\n sortBy: sort?.field ? (sort.field as string) : 'updated_at',\n sortDirection: (sort?.direction === 'asc' ? 'asc' : 'desc') as 'asc' | 'desc',\n ...(cursor ? { after: cursor } : {}),\n ...(currentPaginationToken.value\n ? { paginationToken: currentPaginationToken.value }\n : {}),\n ...(search\n ? {\n search:\n typeof search === 'string'\n ? {\n query: search,\n searchableFields: ['display_id', 'title', 'description'],\n }\n : search,\n }\n : {}),\n ...filters,\n };\n\n //apply default filter to exclude terminal states\n if (!filters || !filters.status) {\n variables.status = {\n operator: OPERATORS.IS_NOT_ONE_OF,\n values: ['COMPLETED', 'CANCELLED'],\n };\n }\n\n const result = await executeWithAuth(\n async (api) => {\n return await api.supportTickets.listTickets(variables ?? {});\n },\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n\n // Store the new pagination token for next request\n currentPaginationToken.value = result?.pageInfo?.paginationToken;\n\n return {\n data: result.items || [],\n hasNextPage: result.pageInfo?.hasNextPage ?? false,\n hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,\n prevPageCursor: result.pageInfo?.prevPageCursor ?? undefined,\n nextPageCursor: result.pageInfo?.nextPageCursor ?? undefined,\n };\n },\n columns: {\n display_id: {\n label: 'Ticket ID',\n field: 'display_id',\n sortable: true,\n },\n title: {\n label: 'Title',\n field: 'title',\n sortable: true,\n },\n type: {\n label: 'Type',\n field: 'type',\n sortable: true,\n filterable: true,\n },\n priority: {\n label: 'Priority',\n field: 'priority',\n sortable: true,\n filterable: true,\n },\n status: {\n label: 'Status',\n field: 'status',\n filterable: true,\n },\n credit_value: {\n label: 'Credits',\n field: 'credit_value',\n sortable: false,\n },\n target_at: {\n label: 'Delivery Est.',\n field: 'target_at',\n sortable: true,\n },\n updated_at: {\n label: 'Last Updated',\n field: 'updated_at',\n sortable: true,\n },\n requester_email: {\n label: 'Requester',\n field: 'requester_email',\n sortable: true,\n filterable: true,\n },\n },\n actions: {\n items: [\n {\n key: 'view',\n icon: ActionIcons.eye,\n size: 'xs',\n variant: 'primary',\n type: 'link',\n href: (row: CustomerSupportTicketRow) => `/support/${row.id}`,\n },\n ],\n },\n search: {\n searchableFields: ['title'],\n },\n\n pagination: { pageSize: 25 },\n});\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { t as useQuery } from "./useQuery-p7oJO7OD.js";
|
|
2
|
+
import { n as useBreadcrumbs } from "./useBreadcrumbs-DmgSucoe.js";
|
|
3
|
+
import { t as formatTicketDisplayId } from "./displayIdFormatter-Dz900Awr.js";
|
|
4
|
+
import { computed, createBlock, createElementBlock, createElementVNode, defineComponent, openBlock, provide, resolveComponent, toDisplayString, unref } from "vue";
|
|
5
|
+
import { useRoute } from "vue-router";
|
|
6
|
+
|
|
7
|
+
//#region src/slices/support_ticket/customer/CustomerSupportTicketParent.vue
|
|
8
|
+
const _hoisted_1 = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "flex justify-center items-center p-8"
|
|
11
|
+
};
|
|
12
|
+
const _hoisted_2 = {
|
|
13
|
+
key: 1,
|
|
14
|
+
class: "alert alert-error mb-4"
|
|
15
|
+
};
|
|
16
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
17
|
+
__name: "CustomerSupportTicketParent",
|
|
18
|
+
setup(__props) {
|
|
19
|
+
const ticketId = useRoute().params.id;
|
|
20
|
+
const { data, loading: isLoading, error, refetch } = useQuery((api) => api.supportTickets.getTicket(ticketId), {});
|
|
21
|
+
const ticket = computed(() => data.value ?? null);
|
|
22
|
+
const refreshTicket = async () => {
|
|
23
|
+
await refetch();
|
|
24
|
+
};
|
|
25
|
+
provide("refreshTicket", refreshTicket);
|
|
26
|
+
useBreadcrumbs(() => [{
|
|
27
|
+
label: "Support",
|
|
28
|
+
to: { name: "CustomerSupportTicketList" }
|
|
29
|
+
}, {
|
|
30
|
+
label: ticket.value ? formatTicketDisplayId(ticket.value.display_id, ticket.value.display_id_prefix, ticket.value.id) : "",
|
|
31
|
+
loading: !ticket.value,
|
|
32
|
+
to: {
|
|
33
|
+
name: "CustomerViewSupportTicket",
|
|
34
|
+
params: { id: ticketId }
|
|
35
|
+
}
|
|
36
|
+
}]);
|
|
37
|
+
return (_ctx, _cache) => {
|
|
38
|
+
const _component_RouterView = resolveComponent("RouterView");
|
|
39
|
+
return unref(isLoading) ? (openBlock(), createElementBlock("div", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "loading loading-spinner loading-lg" }, null, -1)])])) : unref(error) ? (openBlock(), createElementBlock("div", _hoisted_2, [_cache[1] || (_cache[1] = createElementVNode("svg", {
|
|
40
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
41
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
42
|
+
fill: "none",
|
|
43
|
+
viewBox: "0 0 24 24"
|
|
44
|
+
}, [createElementVNode("path", {
|
|
45
|
+
"stroke-linecap": "round",
|
|
46
|
+
"stroke-linejoin": "round",
|
|
47
|
+
"stroke-width": "2",
|
|
48
|
+
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
49
|
+
})], -1)), createElementVNode("span", null, toDisplayString(unref(error).message), 1)])) : (openBlock(), createBlock(_component_RouterView, {
|
|
50
|
+
key: 2,
|
|
51
|
+
ticket: ticket.value,
|
|
52
|
+
isLoading: unref(isLoading),
|
|
53
|
+
error: unref(error)
|
|
54
|
+
}, null, 8, [
|
|
55
|
+
"ticket",
|
|
56
|
+
"isLoading",
|
|
57
|
+
"error"
|
|
58
|
+
]));
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
var CustomerSupportTicketParent_default = _sfc_main;
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
export { CustomerSupportTicketParent_default as t };
|
|
66
|
+
//# sourceMappingURL=CustomerSupportTicketParent-2mONd9kL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomerSupportTicketParent-2mONd9kL.js","names":[],"sources":["../src/slices/support_ticket/customer/CustomerSupportTicketParent.vue"],"sourcesContent":["<template>\n <div v-if=\"isLoading\" class=\"flex justify-center items-center p-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"error\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ error.message }}</span>\n </div>\n\n <RouterView v-else :ticket=\"ticket\" :isLoading=\"isLoading\" :error=\"error\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useBreadcrumbs } from '../../../composables/useBreadcrumbs';\nimport { useQuery } from '../../../composables/useQuery';\nimport { computed, provide } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { formatTicketDisplayId } from '../utils/displayIdFormatter';\n\nconst route = useRoute();\nconst ticketId = route.params.id as string;\n\n// Fetch ticket data once at parent level\nconst {\n data,\n loading: isLoading,\n error,\n refetch,\n} = useQuery((api) => api.supportTickets.getTicket(ticketId), {});\n\nconst ticket = computed(() => data.value ?? null);\n\n// Provide refresh function to child components\nconst refreshTicket = async () => {\n await refetch();\n};\n\nprovide('refreshTicket', refreshTicket);\n\n// Manage breadcrumbs at parent level\nuseBreadcrumbs(() => [\n {\n label: 'Support',\n to: { name: 'CustomerSupportTicketList' },\n },\n {\n label: ticket.value\n ? formatTicketDisplayId(\n ticket.value.display_id,\n ticket.value.display_id_prefix,\n ticket.value.id,\n )\n : '',\n loading: !ticket.value,\n to: {\n name: 'CustomerViewSupportTicket',\n params: { id: ticketId },\n },\n },\n]);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAiCA,MAAM,WADQ,UAAU,CACD,OAAO;EAG9B,MAAM,EACJ,MACA,SAAS,WACT,OACA,YACE,UAAU,QAAQ,IAAI,eAAe,UAAU,SAAS,EAAE,EAAE,CAAC;EAEjE,MAAM,SAAS,eAAe,KAAK,SAAS,KAAK;EAGjD,MAAM,gBAAgB,YAAY;AAChC,SAAM,SAAS;;AAGjB,UAAQ,iBAAiB,cAAc;AAGvC,uBAAqB,CACnB;GACE,OAAO;GACP,IAAI,EAAE,MAAM,6BAA6B;GAC1C,EACD;GACE,OAAO,OAAO,QACV,sBACE,OAAO,MAAM,YACb,OAAO,MAAM,mBACb,OAAO,MAAM,GACf,GACA;GACJ,SAAS,CAAC,OAAO;GACjB,IAAI;IACF,MAAM;IACN,QAAQ,EAAE,IAAI,UAAU;IACzB;GACF,CACF,CAAC;;;UAvEW,MAAA,UAAS,IAAA,WAAA,EAApB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAAwD,QAAA,EAAlD,OAAM,sCAAoC,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGlC,MAAA,MAAK,IAAA,WAAA,EAArB,mBAeM,OAfN,YAeM,CAAA,OAAA,OAAA,OAAA,KAdJ,mBAYM,OAAA;IAXJ,OAAM;IACN,OAAM;IACN,MAAK;IACL,SAAQ;OAER,mBAKE,QAAA;IAJA,kBAAe;IACf,mBAAgB;IAChB,gBAAa;IACb,GAAE;cAGN,mBAAgC,QAAA,MAAA,gBAAvB,MAAA,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,KAAA,WAAA,EAGxB,YAA4E,uBAAA;;IAAxD,QAAQ,OAAA;IAAS,WAAW,MAAA,UAAS;IAAG,OAAO,MAAA,MAAK"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./useQueryCache-ByayvZgZ.js";
|
|
3
|
+
import "./useQuery-p7oJO7OD.js";
|
|
4
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
5
|
+
import { t as CustomerSupportTicketParent_default } from "./CustomerSupportTicketParent-2mONd9kL.js";
|
|
6
|
+
|
|
7
|
+
export { CustomerSupportTicketParent_default as default };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./useQueryCache-ByayvZgZ.js";
|
|
3
|
+
import "./useMutation-CFwe7H9j.js";
|
|
4
|
+
import "./useQuery-p7oJO7OD.js";
|
|
5
|
+
import { j as CustomerSupportTicketSuccess_default } from "./src-o5fMIo5_.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./InlineAttachments-I39rOvip.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./FieldsetSection-CsHN38_o.js";
|
|
12
|
+
import "./ZiniaContainer-C7c7Vwkh.js";
|
|
13
|
+
import "./NoteList-C0hRPNMO.js";
|
|
14
|
+
import "./UserProfilePage-BtLUY1kt.js";
|
|
15
|
+
import "./ChangePasswordPage-Btu5lf-r.js";
|
|
16
|
+
import "./TeamHistoryTab-gB3H2KZv.js";
|
|
17
|
+
import "./TeamNotesTab-pfXTDhg6.js";
|
|
18
|
+
import "./EditTeamMemberForm-ru4WgLz-.js";
|
|
19
|
+
import "./SupportTicketStatusBadge-YdZzjvkh.js";
|
|
20
|
+
import "./creditValueFormatter-DftEzu8d.js";
|
|
21
|
+
import "./CustomerSupportTicketList-C2nUPawb.js";
|
|
22
|
+
import "./CustomerEditSupportTicketForm-Dd5ZB74k.js";
|
|
23
|
+
import "./CustomerViewSupportTicket-tZkxragu.js";
|
|
24
|
+
import "./CustomerSupportTicketParent-2mONd9kL.js";
|
|
25
|
+
import "./CustomerSupportTicketCustomerNotesTab-D1aa9It7.js";
|
|
26
|
+
import "./SupportTicketHistoryTab-CLMopA7a.js";
|
|
27
|
+
import "./CustomerSupportTicketHistoryTab-CFYN_Sa4.js";
|
|
28
|
+
import "./StaffSupportTicketWorkflowTab-DmVTPzxS.js";
|
|
29
|
+
import "./StaffEditSupportTicketForm-DuUKuIGg.js";
|
|
30
|
+
import "./StaffSupportTicketParent-Cx1buQZw.js";
|
|
31
|
+
import "./StaffSupportTicketCustomerNotesTab-CusqQV2-.js";
|
|
32
|
+
import "./StaffSupportTicketInternalNotesTab-D8HM--dp.js";
|
|
33
|
+
import "./StaffSupportTicketHistoryTab-D24myEm3.js";
|
|
34
|
+
import "./LoginForm-_PZ51Uwe.js";
|
|
35
|
+
import "./Signup-c2-_yMOM.js";
|
|
36
|
+
import "./ForgotPassword-CqhenzUG.js";
|
|
37
|
+
import "./Logout-BMjiqHnS.js";
|
|
38
|
+
import "./UserListPage-WU56KiWj.js";
|
|
39
|
+
import "./CreateUserPage-Cmx8xjjv.js";
|
|
40
|
+
import "./NotificationEmailsPage-BjRqtW95.js";
|
|
41
|
+
import "./EditUserPage-BxJ5QvIM.js";
|
|
42
|
+
|
|
43
|
+
export { CustomerSupportTicketSuccess_default as default };
|