@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.
Files changed (138) hide show
  1. package/LICENSE +75 -0
  2. package/dist/AppLink-CHMMrSFI.js +54 -0
  3. package/dist/AppLink-CHMMrSFI.js.map +1 -0
  4. package/dist/Appearance-BfPdKMXw.js +70 -0
  5. package/dist/Appearance-BfPdKMXw.js.map +1 -0
  6. package/dist/Appearance-C3WguxT-.js +3 -0
  7. package/dist/ChangePasswordPage-Btu5lf-r.js +86 -0
  8. package/dist/ChangePasswordPage-Btu5lf-r.js.map +1 -0
  9. package/dist/ChangePasswordPage-mBBuQMkT.js +6 -0
  10. package/dist/CreateTeamForm-n2ut93vM.js +43 -0
  11. package/dist/CreateTeamMemberForm-CcH3AxNL.js +43 -0
  12. package/dist/CreateUserPage-CDrGuW9B.js +6 -0
  13. package/dist/CreateUserPage-Cmx8xjjv.js +76 -0
  14. package/dist/CreateUserPage-Cmx8xjjv.js.map +1 -0
  15. package/dist/CreditBalanceDashboard-DLz0ioP3.js +43 -0
  16. package/dist/CreditManagement-D3q5S-qc.js +43 -0
  17. package/dist/CustomerCreateSupportTicketForm-Ci7QYkG-.js +43 -0
  18. package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js +159 -0
  19. package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js.map +1 -0
  20. package/dist/CustomerEditSupportTicketForm-lLchVjnw.js +9 -0
  21. package/dist/CustomerSupportTicketAttachmentsTab-gBrVO97t.js +43 -0
  22. package/dist/CustomerSupportTicketCustomerNotesTab-D0jhzbOY.js +8 -0
  23. package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js +23 -0
  24. package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js.map +1 -0
  25. package/dist/CustomerSupportTicketHistoryTab-BNTf8EZq.js +6 -0
  26. package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js +17 -0
  27. package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js.map +1 -0
  28. package/dist/CustomerSupportTicketList-BkOzFxMP.js +6 -0
  29. package/dist/CustomerSupportTicketList-C2nUPawb.js +166 -0
  30. package/dist/CustomerSupportTicketList-C2nUPawb.js.map +1 -0
  31. package/dist/CustomerSupportTicketParent-2mONd9kL.js +66 -0
  32. package/dist/CustomerSupportTicketParent-2mONd9kL.js.map +1 -0
  33. package/dist/CustomerSupportTicketParent-N8ko1yFE.js +7 -0
  34. package/dist/CustomerSupportTicketSuccess-w_-9NXT4.js +43 -0
  35. package/dist/CustomerViewSupportTicket-CVwNH0lS.js +11 -0
  36. package/dist/CustomerViewSupportTicket-tZkxragu.js +363 -0
  37. package/dist/CustomerViewSupportTicket-tZkxragu.js.map +1 -0
  38. package/dist/EditTeamForm-BioqiTWE.js +43 -0
  39. package/dist/EditTeamMemberForm-DCq0Gsn_.js +7 -0
  40. package/dist/EditTeamMemberForm-ru4WgLz-.js +169 -0
  41. package/dist/EditTeamMemberForm-ru4WgLz-.js.map +1 -0
  42. package/dist/EditUserPage-BxJ5QvIM.js +112 -0
  43. package/dist/EditUserPage-BxJ5QvIM.js.map +1 -0
  44. package/dist/EditUserPage-XOBuxUxd.js +7 -0
  45. package/dist/FieldsetSection-CsHN38_o.js +27 -0
  46. package/dist/FieldsetSection-CsHN38_o.js.map +1 -0
  47. package/dist/ForgotPassword-CpqvcSFg.js +7 -0
  48. package/dist/ForgotPassword-CqhenzUG.js +73 -0
  49. package/dist/ForgotPassword-CqhenzUG.js.map +1 -0
  50. package/dist/InlineAttachments-I39rOvip.js +1351 -0
  51. package/dist/InlineAttachments-I39rOvip.js.map +1 -0
  52. package/dist/LoginForm-AM0qkfbU.js +7 -0
  53. package/dist/LoginForm-_PZ51Uwe.js +116 -0
  54. package/dist/LoginForm-_PZ51Uwe.js.map +1 -0
  55. package/dist/Logout-BMjiqHnS.js +38 -0
  56. package/dist/Logout-BMjiqHnS.js.map +1 -0
  57. package/dist/Logout-BfiBjlaH.js +6 -0
  58. package/dist/NoteList-C0hRPNMO.js +497 -0
  59. package/dist/NoteList-C0hRPNMO.js.map +1 -0
  60. package/dist/NotificationEmailsPage-BjRqtW95.js +141 -0
  61. package/dist/NotificationEmailsPage-BjRqtW95.js.map +1 -0
  62. package/dist/NotificationEmailsPage-bx-9rg3x.js +7 -0
  63. package/dist/ResetPassword-BQLkR9TZ.js +43 -0
  64. package/dist/Signup-CnCcQlB8.js +7 -0
  65. package/dist/Signup-c2-_yMOM.js +106 -0
  66. package/dist/Signup-c2-_yMOM.js.map +1 -0
  67. package/dist/StaffCreateSupportTicketForm-ChVFDJdA.js +43 -0
  68. package/dist/StaffEditSupportTicketForm-DY1Zkf5k.js +9 -0
  69. package/dist/StaffEditSupportTicketForm-DuUKuIGg.js +263 -0
  70. package/dist/StaffEditSupportTicketForm-DuUKuIGg.js.map +1 -0
  71. package/dist/StaffSupportTicketAttachmentsTab-DpDXsHXP.js +43 -0
  72. package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js +23 -0
  73. package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js.map +1 -0
  74. package/dist/StaffSupportTicketCustomerNotesTab-rbJHJ0_V.js +8 -0
  75. package/dist/StaffSupportTicketHistoryTab-D24myEm3.js +17 -0
  76. package/dist/StaffSupportTicketHistoryTab-D24myEm3.js.map +1 -0
  77. package/dist/StaffSupportTicketHistoryTab-nmVma5vp.js +6 -0
  78. package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js +23 -0
  79. package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js.map +1 -0
  80. package/dist/StaffSupportTicketInternalNotesTab-DihYd5XI.js +8 -0
  81. package/dist/StaffSupportTicketList-DelptSmK.js +43 -0
  82. package/dist/StaffSupportTicketParent-BCrj3ckV.js +7 -0
  83. package/dist/StaffSupportTicketParent-Cx1buQZw.js +66 -0
  84. package/dist/StaffSupportTicketParent-Cx1buQZw.js.map +1 -0
  85. package/dist/StaffSupportTicketSuccess-BYxtY5wZ.js +43 -0
  86. package/dist/StaffSupportTicketWorkflowTab-BrDDBeK9.js +9 -0
  87. package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js +1234 -0
  88. package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js.map +1 -0
  89. package/dist/SupportTicketHistoryTab-CLMopA7a.js +220 -0
  90. package/dist/SupportTicketHistoryTab-CLMopA7a.js.map +1 -0
  91. package/dist/SupportTicketStatusBadge-YdZzjvkh.js +163 -0
  92. package/dist/SupportTicketStatusBadge-YdZzjvkh.js.map +1 -0
  93. package/dist/TeamAttachmentsTab-BxUpTWYh.js +43 -0
  94. package/dist/TeamHistoryTab-CUCT9MRG.js +5 -0
  95. package/dist/TeamHistoryTab-gB3H2KZv.js +219 -0
  96. package/dist/TeamHistoryTab-gB3H2KZv.js.map +1 -0
  97. package/dist/TeamList-By6pzWm5.js +43 -0
  98. package/dist/TeamMemberList-CYV9fWEb.js +43 -0
  99. package/dist/TeamMemberParent-CVvGqpxD.js +43 -0
  100. package/dist/TeamMembersTab-4gmnP9sD.js +21 -0
  101. package/dist/TeamMembersTab-4gmnP9sD.js.map +1 -0
  102. package/dist/TeamMembersTab-CpE9BaCi.js +3 -0
  103. package/dist/TeamNotesTab-pfXTDhg6.js +23 -0
  104. package/dist/TeamNotesTab-pfXTDhg6.js.map +1 -0
  105. package/dist/TeamNotesTab-u4cDC67X.js +8 -0
  106. package/dist/TeamParent-BxT1KubK.js +43 -0
  107. package/dist/UserListPage-DsQdH2Sm.js +4 -0
  108. package/dist/UserListPage-WU56KiWj.js +153 -0
  109. package/dist/UserListPage-WU56KiWj.js.map +1 -0
  110. package/dist/UserProfilePage-B73JhjUu.js +7 -0
  111. package/dist/UserProfilePage-BtLUY1kt.js +125 -0
  112. package/dist/UserProfilePage-BtLUY1kt.js.map +1 -0
  113. package/dist/ViewTeam-DzX-obEl.js +43 -0
  114. package/dist/ViewTeamMember-PF6S_4Pb.js +43 -0
  115. package/dist/ZiniaContainer-C7c7Vwkh.js +18 -0
  116. package/dist/ZiniaContainer-C7c7Vwkh.js.map +1 -0
  117. package/dist/convertToLocalDateTime-D4IoNvRj.js +111 -0
  118. package/dist/convertToLocalDateTime-D4IoNvRj.js.map +1 -0
  119. package/dist/creditValueFormatter-DftEzu8d.js +128 -0
  120. package/dist/creditValueFormatter-DftEzu8d.js.map +1 -0
  121. package/dist/displayIdFormatter-Dz900Awr.js +13 -0
  122. package/dist/displayIdFormatter-Dz900Awr.js.map +1 -0
  123. package/dist/index.d.ts +6068 -0
  124. package/dist/index.js +45 -0
  125. package/dist/src-o5fMIo5_.js +6649 -0
  126. package/dist/src-o5fMIo5_.js.map +1 -0
  127. package/dist/useBreadcrumbs-DmgSucoe.js +41 -0
  128. package/dist/useBreadcrumbs-DmgSucoe.js.map +1 -0
  129. package/dist/useMutation-CFwe7H9j.js +50 -0
  130. package/dist/useMutation-CFwe7H9j.js.map +1 -0
  131. package/dist/useQuery-p7oJO7OD.js +107 -0
  132. package/dist/useQuery-p7oJO7OD.js.map +1 -0
  133. package/dist/useQueryCache-ByayvZgZ.js +254 -0
  134. package/dist/useQueryCache-ByayvZgZ.js.map +1 -0
  135. package/dist/useRpcAuth-BLlRSHy8.js +722 -0
  136. package/dist/useRpcAuth-BLlRSHy8.js.map +1 -0
  137. package/package.json +62 -0
  138. package/src/daisyui.css +63 -0
@@ -0,0 +1,263 @@
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 { n as formatToISODate } from "./convertToLocalDateTime-D4IoNvRj.js";
5
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, toDisplayString, unref, withCtx } from "vue";
6
+ import { useRoute } from "vue-router";
7
+ import { StaffSupportTicketCreateSchema, StaffSupportTicketUpdateSchema } from "@dragonmastery/dragoncore-shared";
8
+ import { useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
9
+ import { toast } from "vue3-toastify";
10
+
11
+ //#region src/slices/support_ticket/staff/StaffSupportTicketMetadata.ts
12
+ const adminSupportTicketCreateSchemaWithMetadata = withMetadata(StaffSupportTicketCreateSchema, "adminSupportTicketCreateSchema", {
13
+ description: {
14
+ inputType: "textarea",
15
+ placeholder: "Enter description"
16
+ },
17
+ credit_value: {
18
+ inputType: "currency",
19
+ step: .01,
20
+ placeholder: "Enter credit value"
21
+ },
22
+ start_at: {
23
+ inputType: "date",
24
+ placeholder: "Enter date"
25
+ },
26
+ target_at: {
27
+ inputType: "date",
28
+ placeholder: "Enter date"
29
+ },
30
+ completed_at: {
31
+ inputType: "date",
32
+ placeholder: "Enter date"
33
+ }
34
+ });
35
+ const adminSupportTicketUpdateSchemaWithMetadata = withMetadata(StaffSupportTicketUpdateSchema, "adminSupportTicketUpdateSchema", {
36
+ description: {
37
+ inputType: "textarea",
38
+ placeholder: "Enter description"
39
+ },
40
+ credit_value: {
41
+ inputType: "currency",
42
+ step: .01,
43
+ placeholder: "Enter credit value"
44
+ },
45
+ start_at: {
46
+ inputType: "date",
47
+ placeholder: "Enter date"
48
+ },
49
+ target_at: {
50
+ inputType: "date",
51
+ placeholder: "Enter date"
52
+ },
53
+ completed_at: {
54
+ inputType: "date",
55
+ placeholder: "Enter date"
56
+ }
57
+ });
58
+
59
+ //#endregion
60
+ //#region src/slices/support_ticket/staff/StaffEditSupportTicketForm.vue
61
+ const _hoisted_1 = {
62
+ key: 0,
63
+ class: "flex justify-center items-center p-8"
64
+ };
65
+ const _hoisted_2 = {
66
+ key: 1,
67
+ class: "alert alert-error mb-4"
68
+ };
69
+ const _hoisted_3 = {
70
+ key: 0,
71
+ class: "form-control"
72
+ };
73
+ const _hoisted_4 = { class: "form-control" };
74
+ const _hoisted_5 = { class: "alert alert-info py-2" };
75
+ const _hoisted_6 = { class: "flex items-center gap-3" };
76
+ const _hoisted_7 = { class: "font-semibold text-sm" };
77
+ const _hoisted_8 = { class: "mt-6" };
78
+ const _hoisted_9 = {
79
+ key: 2,
80
+ class: "alert alert-error mb-4"
81
+ };
82
+ const _hoisted_10 = { class: "flex justify-center mt-6" };
83
+ const _sfc_main = /* @__PURE__ */ defineComponent({
84
+ __name: "StaffEditSupportTicketForm",
85
+ props: {
86
+ ticket: {},
87
+ isLoading: { type: Boolean },
88
+ error: {}
89
+ },
90
+ setup(__props) {
91
+ const props = __props;
92
+ const support_ticket_id = useRoute().params.id;
93
+ const { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaResetButton, ZiniaFormErrorsSummary, clearSavedFormState } = useForm(adminSupportTicketUpdateSchemaWithMetadata, {
94
+ storeName: `edit-admin-support_ticket-${support_ticket_id}`,
95
+ persistToLocalStorage: false,
96
+ renderStyle: "daisy_ui",
97
+ fetchData: async () => {
98
+ if (!props.ticket) throw new Error("No support_ticket data found");
99
+ return props.ticket;
100
+ },
101
+ dataLoaders: { read_data: async () => {
102
+ if (!props.ticket) throw new Error("No support_ticket data found");
103
+ return props.ticket;
104
+ } },
105
+ mergeOptions: {}
106
+ });
107
+ const { mutate: updateSupportTicket } = useMutation((api, input) => api.supportTickets.staffUpdateTicket(input), { invalidate: /^support-tickets?:/ });
108
+ const beforeValidate = () => {
109
+ const currentLifecycle = form.extraData.read_data?.dev_lifecycle;
110
+ if (currentLifecycle === "PENDING" || currentLifecycle === "DEPLOYED" || currentLifecycle === "CANCELLED") form.values.dev_lifecycle = void 0;
111
+ return true;
112
+ };
113
+ const handleSubmit = async (formData) => {
114
+ console.log("formData", JSON.stringify(formData, null, 2));
115
+ const approvalStatus = form.extraData.read_data?.approval_status;
116
+ const args = {
117
+ id: formData.id,
118
+ title: formData.title,
119
+ description: formData.description,
120
+ type: formData.type,
121
+ priority: formData.priority
122
+ };
123
+ if (approvalStatus === "PENDING") {
124
+ args.credit_value = formData.credit_value;
125
+ args.start_at = formData.start_at;
126
+ args.target_at = formData.target_at;
127
+ }
128
+ if (approvalStatus === "APPROVED" || approvalStatus === "INTERNAL") {
129
+ args.dev_lifecycle = formData.dev_lifecycle;
130
+ args.start_at = formData.start_at;
131
+ args.target_at = formData.target_at;
132
+ if (form.extraData.read_data?.dev_lifecycle === "DEPLOYED") args.delivered_value = formData.delivered_value;
133
+ if (form.extraData.read_data?.dev_lifecycle === "CANCELLED" || form.extraData.read_data?.dev_lifecycle === "DEPLOYED") args.completed_at = formData.completed_at;
134
+ }
135
+ const updatedSupportTicket = await updateSupportTicket(args);
136
+ if (!updatedSupportTicket) throw new Error("Failed to update support ticket");
137
+ return updatedSupportTicket;
138
+ };
139
+ const handleSuccess = async (updatedSupportTicket) => {
140
+ clearSavedFormState();
141
+ if (form.extraData.read_data) Object.assign(form.extraData.read_data, updatedSupportTicket);
142
+ toast.success(`SupportTicket updated successfully!`, {});
143
+ };
144
+ const handleError = (error) => {
145
+ form.setSubmitError(error instanceof Error ? error.message : "An unknown error occurred");
146
+ };
147
+ return (_ctx, _cache) => {
148
+ 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", {
149
+ xmlns: "http://www.w3.org/2000/svg",
150
+ class: "stroke-current shrink-0 h-6 w-6",
151
+ fill: "none",
152
+ viewBox: "0 0 24 24"
153
+ }, [createElementVNode("path", {
154
+ "stroke-linecap": "round",
155
+ "stroke-linejoin": "round",
156
+ "stroke-width": "2",
157
+ d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
158
+ })], -1)), createElementVNode("span", null, toDisplayString(unref(form).loadError), 1)])) : (openBlock(), createBlock(unref(ZiniaForm), {
159
+ key: 2,
160
+ onBeforeValidate: beforeValidate,
161
+ onHandleSubmit: handleSubmit,
162
+ onSuccess: handleSuccess,
163
+ onError: handleError,
164
+ title: "Edit Support Ticket",
165
+ subtitle: "Update ticket details and manage workflow"
166
+ }, {
167
+ default: withCtx(() => [
168
+ createCommentVNode(" Basic Information "),
169
+ createVNode(FieldsetSection_default, { title: "Ticket Details" }, {
170
+ default: withCtx(() => [
171
+ createVNode(unref(zinia).TitleField, { placeholder: "Enter ticket title" }),
172
+ createVNode(unref(zinia).TypeField),
173
+ createVNode(unref(zinia).PriorityField),
174
+ createCommentVNode(" Development Lifecycle "),
175
+ createCommentVNode(" Read-only: DEPLOYED (completed successfully) "),
176
+ unref(form).extraData.read_data?.dev_lifecycle === "DEPLOYED" ? (openBlock(), createElementBlock("div", _hoisted_3, [..._cache[2] || (_cache[2] = [createElementVNode("label", { class: "label" }, [createElementVNode("span", { class: "label-text" }, "Development Lifecycle")], -1), createElementVNode("div", { class: "alert alert-success py-2" }, [createElementVNode("div", { class: "flex items-center gap-3" }, [createElementVNode("span", { class: "text-xl" }, "✅"), createElementVNode("div", null, [createElementVNode("div", { class: "font-semibold text-sm" }, "DEPLOYED"), createElementVNode("div", { class: "text-xs opacity-80" }, " Completed successfully - use Workflow tab if needed ")])])], -1)])])) : unref(form).extraData.read_data?.dev_lifecycle === "CANCELLED" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Read-only: CANCELLED (terminal state) "), _cache[3] || (_cache[3] = createElementVNode("div", { class: "form-control" }, [createElementVNode("label", { class: "label" }, [createElementVNode("span", { class: "label-text" }, "Development Lifecycle")]), createElementVNode("div", { class: "alert alert-error py-2" }, [createElementVNode("div", { class: "flex items-center gap-3" }, [createElementVNode("span", { class: "text-xl" }, "❌"), createElementVNode("div", null, [createElementVNode("div", { class: "font-semibold text-sm" }, "CANCELLED"), createElementVNode("div", { class: "text-xs opacity-80" }, " Task cancelled - use Workflow tab to reactivate if needed ")])])])], -1))], 2112)) : ["APPROVED", "INTERNAL"].includes(unref(form).extraData.read_data?.approval_status || "") ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Editable: APPROVED or INTERNAL (in development) "), createVNode(unref(zinia).DevLifecycleField)], 2112)) : unref(form).extraData.read_data?.approval_status ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [createCommentVNode(" Read-only: Workflow states (PENDING/REJECTED) "), createElementVNode("div", _hoisted_4, [_cache[6] || (_cache[6] = createElementVNode("label", { class: "label" }, [createElementVNode("span", { class: "label-text" }, "Development Lifecycle")], -1)), createElementVNode("div", _hoisted_5, [createElementVNode("div", _hoisted_6, [_cache[5] || (_cache[5] = createElementVNode("span", { class: "text-xl" }, "ℹ️", -1)), createElementVNode("div", null, [createElementVNode("div", _hoisted_7, toDisplayString(unref(form).extraData.read_data?.approval_status), 1), _cache[4] || (_cache[4] = createElementVNode("div", { class: "text-xs opacity-80" }, "Workflow state - not in development yet", -1))])])])])], 2112)) : createCommentVNode("v-if", true)
177
+ ]),
178
+ _: 1
179
+ }),
180
+ createCommentVNode(" Description "),
181
+ createVNode(FieldsetSection_default, { title: "Description" }, {
182
+ default: withCtx(() => [createVNode(unref(zinia).DescriptionField, { placeholder: "Describe the ticket in detail" })]),
183
+ _: 1
184
+ }),
185
+ createCommentVNode(" Attachments (Jira-style inline) "),
186
+ createElementVNode("div", _hoisted_8, [createVNode(InlineAttachments_default, {
187
+ "record-id": unref(support_ticket_id),
188
+ "can-upload": true,
189
+ "can-delete": true
190
+ }, null, 8, ["record-id"])]),
191
+ createCommentVNode(" Credits (only for customer support tickets) "),
192
+ unref(form).extraData.read_data?.approval_status === "PENDING" ? (openBlock(), createBlock(FieldsetSection_default, {
193
+ key: 0,
194
+ title: "Credits (Optional)"
195
+ }, {
196
+ default: withCtx(() => [createVNode(unref(zinia).CreditValueField, { placeholder: "0.00" })]),
197
+ _: 1
198
+ })) : createCommentVNode("v-if", true),
199
+ createCommentVNode(" Timeline (Optional) - Show for all statuses except REJECTED "),
200
+ unref(form).extraData.read_data?.approval_status !== "REJECTED" || unref(form).extraData.read_data?.dev_lifecycle === "DEPLOYED" || unref(form).extraData.read_data?.dev_lifecycle === "CANCELLED" ? (openBlock(), createBlock(FieldsetSection_default, {
201
+ key: 1,
202
+ title: "Timeline (Optional)"
203
+ }, {
204
+ default: withCtx(() => [
205
+ createCommentVNode(" Planning dates: Visible for PENDING, APPROVED, or INTERNAL (not in terminal states) "),
206
+ [
207
+ "PENDING",
208
+ "APPROVED",
209
+ "INTERNAL"
210
+ ].includes(unref(form).extraData.read_data?.approval_status || "") && unref(form).extraData.read_data?.dev_lifecycle !== "CANCELLED" && unref(form).extraData.read_data?.dev_lifecycle !== "DEPLOYED" ? (openBlock(), createBlock(unref(zinia).StartAtField, {
211
+ key: 0,
212
+ formatter: unref(formatToISODate)
213
+ }, null, 8, ["formatter"])) : createCommentVNode("v-if", true),
214
+ [
215
+ "PENDING",
216
+ "APPROVED",
217
+ "INTERNAL"
218
+ ].includes(unref(form).extraData.read_data?.approval_status || "") && unref(form).extraData.read_data?.dev_lifecycle !== "CANCELLED" && unref(form).extraData.read_data?.dev_lifecycle !== "DEPLOYED" ? (openBlock(), createBlock(unref(zinia).TargetAtField, {
219
+ key: 1,
220
+ formatter: unref(formatToISODate)
221
+ }, null, 8, ["formatter"])) : createCommentVNode("v-if", true),
222
+ createCommentVNode(" Delivery tracking: Only visible when DEPLOYED "),
223
+ unref(form).extraData.read_data?.dev_lifecycle === "DEPLOYED" ? (openBlock(), createBlock(unref(zinia).DeliveredValueField, {
224
+ key: 2,
225
+ placeholder: "0.00"
226
+ })) : createCommentVNode("v-if", true),
227
+ unref(form).extraData.read_data?.dev_lifecycle === "DEPLOYED" || unref(form).extraData.read_data?.dev_lifecycle === "CANCELLED" ? (openBlock(), createBlock(unref(zinia).CompletedAtField, {
228
+ key: 3,
229
+ formatter: unref(formatToISODate)
230
+ }, null, 8, ["formatter"])) : createCommentVNode("v-if", true)
231
+ ]),
232
+ _: 1
233
+ })) : createCommentVNode("v-if", true),
234
+ createCommentVNode(" Form Status Messages "),
235
+ unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_9, [_cache[7] || (_cache[7] = createElementVNode("svg", {
236
+ xmlns: "http://www.w3.org/2000/svg",
237
+ class: "stroke-current shrink-0 h-6 w-6",
238
+ fill: "none",
239
+ viewBox: "0 0 24 24"
240
+ }, [createElementVNode("path", {
241
+ "stroke-linecap": "round",
242
+ "stroke-linejoin": "round",
243
+ "stroke-width": "2",
244
+ d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
245
+ })], -1)), createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
246
+ createCommentVNode(" Submit Button "),
247
+ createElementVNode("div", _hoisted_10, [createVNode(unref(ZiniaSubmitButton), {
248
+ submitText: "Update SupportTicket",
249
+ submittingText: "Updating SupportTicket..."
250
+ })]),
251
+ createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" }),
252
+ createVNode(unref(ZiniaResetButton))
253
+ ]),
254
+ _: 1
255
+ }));
256
+ };
257
+ }
258
+ });
259
+ var StaffEditSupportTicketForm_default = _sfc_main;
260
+
261
+ //#endregion
262
+ export { adminSupportTicketCreateSchemaWithMetadata as n, adminSupportTicketUpdateSchemaWithMetadata as r, StaffEditSupportTicketForm_default as t };
263
+ //# sourceMappingURL=StaffEditSupportTicketForm-DuUKuIGg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaffEditSupportTicketForm-DuUKuIGg.js","names":["args: StaffSupportTicketUpdateDto"],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketMetadata.ts","../src/slices/support_ticket/staff/StaffEditSupportTicketForm.vue"],"sourcesContent":["import {\n type UseFormTyped,\n withMetadata,\n ZINIA_FIELDS_KEY,\n ZINIA_FORM_KEY,\n} from '@dragonmastery/zinia-forms-core';\nimport {\n StaffSupportTicketCreateSchema,\n StaffSupportTicketUpdateSchema,\n} from '@dragonmastery/dragoncore-shared';\nimport { inject } from 'vue';\n\n// Create schema (no ID)\nexport const adminSupportTicketCreateSchemaWithMetadata = withMetadata(\n StaffSupportTicketCreateSchema,\n 'adminSupportTicketCreateSchema',\n {\n description: {\n inputType: 'textarea',\n placeholder: 'Enter description',\n },\n credit_value: {\n inputType: 'currency',\n step: 0.01,\n placeholder: 'Enter credit value',\n },\n start_at: {\n inputType: 'date',\n placeholder: 'Enter date',\n },\n target_at: {\n inputType: 'date',\n placeholder: 'Enter date',\n },\n completed_at: {\n inputType: 'date',\n placeholder: 'Enter date',\n },\n },\n);\n\n// Update schema (with ID)\nexport const adminSupportTicketUpdateSchemaWithMetadata = withMetadata(\n StaffSupportTicketUpdateSchema,\n 'adminSupportTicketUpdateSchema',\n {\n description: {\n inputType: 'textarea',\n placeholder: 'Enter description',\n },\n credit_value: {\n inputType: 'currency',\n step: 0.01,\n placeholder: 'Enter credit value',\n },\n start_at: {\n inputType: 'date',\n placeholder: 'Enter date',\n },\n target_at: {\n inputType: 'date',\n placeholder: 'Enter date',\n },\n completed_at: {\n inputType: 'date',\n placeholder: 'Enter date',\n },\n },\n);\n\nexport type AdminSupportTicketCreateFormDto = UseFormTyped<\n typeof StaffSupportTicketCreateSchema\n>;\nexport type AdminSupportTicketUpdateFormDto = UseFormTyped<\n typeof StaffSupportTicketUpdateSchema\n>;\n\nexport const injectAdminSupportTicketCreateForm = () =>\n inject<AdminSupportTicketCreateFormDto['form']>(ZINIA_FORM_KEY);\nexport const injectAdminSupportTicketUpdateForm = () =>\n inject<AdminSupportTicketUpdateFormDto['form']>(ZINIA_FORM_KEY);\nexport const injectAdminSupportTicketZinia = () =>\n inject<AdminSupportTicketCreateFormDto['zinia'] | AdminSupportTicketUpdateFormDto['zinia']>(\n ZINIA_FIELDS_KEY,\n );\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 ticket details and manage workflow\"\n >\n <!-- Basic Information -->\n <FieldsetSection title=\"Ticket Details\">\n <zinia.TitleField placeholder=\"Enter ticket title\" />\n <zinia.TypeField />\n <zinia.PriorityField />\n\n <!-- Development Lifecycle -->\n <!-- Read-only: DEPLOYED (completed successfully) -->\n <div v-if=\"form.extraData.read_data?.dev_lifecycle === 'DEPLOYED'\" class=\"form-control\">\n <label class=\"label\">\n <span class=\"label-text\">Development Lifecycle</span>\n </label>\n <div class=\"alert alert-success py-2\">\n <div class=\"flex items-center gap-3\">\n <span class=\"text-xl\">✅</span>\n <div>\n <div class=\"font-semibold text-sm\">DEPLOYED</div>\n <div class=\"text-xs opacity-80\">\n Completed successfully - use Workflow tab if needed\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Read-only: CANCELLED (terminal state) -->\n <div\n v-else-if=\"form.extraData.read_data?.dev_lifecycle === 'CANCELLED'\"\n class=\"form-control\"\n >\n <label class=\"label\">\n <span class=\"label-text\">Development Lifecycle</span>\n </label>\n <div class=\"alert alert-error py-2\">\n <div class=\"flex items-center gap-3\">\n <span class=\"text-xl\">❌</span>\n <div>\n <div class=\"font-semibold text-sm\">CANCELLED</div>\n <div class=\"text-xs opacity-80\">\n Task cancelled - use Workflow tab to reactivate if needed\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Editable: APPROVED or INTERNAL (in development) -->\n <zinia.DevLifecycleField\n v-else-if=\"\n ['APPROVED', 'INTERNAL'].includes(form.extraData.read_data?.approval_status || '')\n \"\n />\n <!-- Read-only: Workflow states (PENDING/REJECTED) -->\n <div v-else-if=\"form.extraData.read_data?.approval_status\" class=\"form-control\">\n <label class=\"label\">\n <span class=\"label-text\">Development Lifecycle</span>\n </label>\n <div class=\"alert alert-info py-2\">\n <div class=\"flex items-center gap-3\">\n <span class=\"text-xl\">ℹ️</span>\n <div>\n <div class=\"font-semibold text-sm\">\n {{ form.extraData.read_data?.approval_status }}\n </div>\n <div class=\"text-xs opacity-80\">Workflow state - not in development yet</div>\n </div>\n </div>\n </div>\n </div>\n </FieldsetSection>\n\n <!-- Description -->\n <FieldsetSection title=\"Description\">\n <zinia.DescriptionField placeholder=\"Describe the 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 <!-- Credits (only for customer support tickets) -->\n <FieldsetSection\n v-if=\"form.extraData.read_data?.approval_status === 'PENDING'\"\n title=\"Credits (Optional)\"\n >\n <zinia.CreditValueField placeholder=\"0.00\" />\n </FieldsetSection>\n\n <!-- Timeline (Optional) - Show for all statuses except REJECTED -->\n <FieldsetSection\n v-if=\"\n form.extraData.read_data?.approval_status !== 'REJECTED' ||\n form.extraData.read_data?.dev_lifecycle === 'DEPLOYED' ||\n form.extraData.read_data?.dev_lifecycle === 'CANCELLED'\n \"\n title=\"Timeline (Optional)\"\n >\n <!-- Planning dates: Visible for PENDING, APPROVED, or INTERNAL (not in terminal states) -->\n <zinia.StartAtField\n v-if=\"\n ['PENDING', 'APPROVED', 'INTERNAL'].includes(\n form.extraData.read_data?.approval_status || '',\n ) &&\n form.extraData.read_data?.dev_lifecycle !== 'CANCELLED' &&\n form.extraData.read_data?.dev_lifecycle !== 'DEPLOYED'\n \"\n :formatter=\"formatToISODate\"\n />\n <zinia.TargetAtField\n v-if=\"\n ['PENDING', 'APPROVED', 'INTERNAL'].includes(\n form.extraData.read_data?.approval_status || '',\n ) &&\n form.extraData.read_data?.dev_lifecycle !== 'CANCELLED' &&\n form.extraData.read_data?.dev_lifecycle !== 'DEPLOYED'\n \"\n :formatter=\"formatToISODate\"\n />\n\n <!-- Delivery tracking: Only visible when DEPLOYED -->\n <zinia.DeliveredValueField\n v-if=\"form.extraData.read_data?.dev_lifecycle === 'DEPLOYED'\"\n placeholder=\"0.00\"\n />\n <zinia.CompletedAtField\n v-if=\"\n form.extraData.read_data?.dev_lifecycle === 'DEPLOYED' ||\n form.extraData.read_data?.dev_lifecycle === 'CANCELLED'\n \"\n :formatter=\"formatToISODate\"\n />\n </FieldsetSection>\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\n submitText=\"Update SupportTicket\"\n submittingText=\"Updating SupportTicket...\"\n />\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 { formatToISODate } from '../../../utils/convertToLocalDateTime';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport type {\n StaffSupportTicketReadDto,\n StaffSupportTicketUpdateDto,\n} from '@dragonmastery/dragoncore-shared';\nimport { useRoute } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport InlineAttachments from '../shared/InlineAttachments.vue';\nimport { adminSupportTicketUpdateSchemaWithMetadata } from './StaffSupportTicketMetadata';\n\ninterface Props {\n ticket: StaffSupportTicketReadDto | 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;\n\nconst {\n form,\n zinia,\n ZiniaForm,\n ZiniaSubmitButton,\n ZiniaResetButton,\n ZiniaFormErrorsSummary,\n clearSavedFormState,\n} = useForm(adminSupportTicketUpdateSchemaWithMetadata, {\n storeName: `edit-admin-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 StaffSupportTicketUpdateDto;\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 as StaffSupportTicketReadDto;\n },\n },\n\n // Configure how server data is merged with local changes\n mergeOptions: {\n // Fields to preserve from local storage (user edits)\n // preserveLocalFields: [],\n },\n});\n\n// ============================================================\n// FIELD EDITABILITY - Based on Permissions Matrix\n// ============================================================\n// Note: These computed properties are used in template conditionals\n// but TypeScript doesn't detect their usage in v-if directives\n\n// ============================================================\n// MUTATIONS\n// ============================================================\n\n// Setup mutation for updating support_ticket\nconst { mutate: updateSupportTicket } = useMutation(\n (api, input: StaffSupportTicketUpdateDto) => api.supportTickets.staffUpdateTicket(input),\n { invalidate: /^support-tickets?:/ },\n);\n\nconst beforeValidate = () => {\n // Clear workflow-only dev_lifecycle values before validation\n // The restricted enum doesn't accept PENDING, DEPLOYED, or CANCELLED (they're workflow-only)\n const currentLifecycle = form.extraData.read_data?.dev_lifecycle;\n if (\n currentLifecycle === 'PENDING' ||\n currentLifecycle === 'DEPLOYED' ||\n currentLifecycle === 'CANCELLED'\n ) {\n form.values.dev_lifecycle = undefined;\n }\n return true;\n};\n\n// Handle form submission - returns a promise to work with Zinia's form handling\nconst handleSubmit = async (formData: StaffSupportTicketUpdateDto) => {\n console.log('formData', JSON.stringify(formData, null, 2));\n const approvalStatus = form.extraData.read_data?.approval_status;\n\n // Build args dynamically based on what's visible/editable\n const args: StaffSupportTicketUpdateDto = {\n id: formData.id,\n // Basic fields - always included\n title: formData.title,\n description: formData.description,\n type: formData.type,\n priority: formData.priority,\n };\n\n // Conditional fields based on visibility rules\n if (approvalStatus === 'PENDING') {\n args.credit_value = formData.credit_value;\n args.start_at = formData.start_at;\n args.target_at = formData.target_at;\n }\n\n if (approvalStatus === 'APPROVED' || approvalStatus === 'INTERNAL') {\n args.dev_lifecycle = formData.dev_lifecycle;\n args.start_at = formData.start_at;\n args.target_at = formData.target_at;\n\n // Only include delivery fields if DEPLOYED (set by workflow)\n if (form.extraData.read_data?.dev_lifecycle === 'DEPLOYED') {\n args.delivered_value = formData.delivered_value;\n }\n if (\n form.extraData.read_data?.dev_lifecycle === 'CANCELLED' ||\n form.extraData.read_data?.dev_lifecycle === 'DEPLOYED'\n ) {\n args.completed_at = formData.completed_at;\n }\n }\n\n const updatedSupportTicket = await updateSupportTicket(args);\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: StaffSupportTicketUpdateDto) => {\n clearSavedFormState();\n\n // Update the read-only data to reflect changes (e.g., if devLifecycle changed)\n // This ensures visibility rules update properly\n if (form.extraData.read_data) {\n Object.assign(form.extraData.read_data, updatedSupportTicket);\n }\n\n toast.success(`SupportTicket updated successfully!`, {});\n\n // Stay on page so user can continue editing or see updated state\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,43 @@
1
+ import "./useRpcAuth-BLlRSHy8.js";
2
+ import "./useQueryCache-ByayvZgZ.js";
3
+ import "./useMutation-CFwe7H9j.js";
4
+ import "./useQuery-p7oJO7OD.js";
5
+ import { w as StaffSupportTicketAttachmentsTab_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 { StaffSupportTicketAttachmentsTab_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/staff/StaffSupportTicketCustomerNotesTab.vue
6
+ const _sfc_main = /* @__PURE__ */ defineComponent({
7
+ __name: "StaffSupportTicketCustomerNotesTab",
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 StaffSupportTicketCustomerNotesTab_default = _sfc_main;
20
+
21
+ //#endregion
22
+ export { StaffSupportTicketCustomerNotesTab_default as t };
23
+ //# sourceMappingURL=StaffSupportTicketCustomerNotesTab-CusqQV2-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaffSupportTicketCustomerNotesTab-CusqQV2-.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketCustomerNotesTab.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,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 StaffSupportTicketCustomerNotesTab_default } from "./StaffSupportTicketCustomerNotesTab-CusqQV2-.js";
7
+
8
+ export { StaffSupportTicketCustomerNotesTab_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/staff/StaffSupportTicketHistoryTab.vue
5
+ const _sfc_main = /* @__PURE__ */ defineComponent({
6
+ __name: "StaffSupportTicketHistoryTab",
7
+ setup(__props) {
8
+ return (_ctx, _cache) => {
9
+ return openBlock(), createBlock(SupportTicketHistoryTab_default);
10
+ };
11
+ }
12
+ });
13
+ var StaffSupportTicketHistoryTab_default = _sfc_main;
14
+
15
+ //#endregion
16
+ export { StaffSupportTicketHistoryTab_default as t };
17
+ //# sourceMappingURL=StaffSupportTicketHistoryTab-D24myEm3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaffSupportTicketHistoryTab-D24myEm3.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketHistoryTab.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 "./ZiniaContainer-C7c7Vwkh.js";
3
+ import "./SupportTicketHistoryTab-CLMopA7a.js";
4
+ import { t as StaffSupportTicketHistoryTab_default } from "./StaffSupportTicketHistoryTab-D24myEm3.js";
5
+
6
+ export { StaffSupportTicketHistoryTab_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/staff/StaffSupportTicketInternalNotesTab.vue
6
+ const _sfc_main = /* @__PURE__ */ defineComponent({
7
+ __name: "StaffSupportTicketInternalNotesTab",
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: "internal"
15
+ }, null, 8, ["recordId"]);
16
+ };
17
+ }
18
+ });
19
+ var StaffSupportTicketInternalNotesTab_default = _sfc_main;
20
+
21
+ //#endregion
22
+ export { StaffSupportTicketInternalNotesTab_default as t };
23
+ //# sourceMappingURL=StaffSupportTicketInternalNotesTab-D8HM--dp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaffSupportTicketInternalNotesTab-D8HM--dp.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketInternalNotesTab.vue"],"sourcesContent":["<template>\n <NoteList :recordId=\"support_ticket_id\" recordType=\"support_ticket\" mode=\"internal\" />\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,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 StaffSupportTicketInternalNotesTab_default } from "./StaffSupportTicketInternalNotesTab-D8HM--dp.js";
7
+
8
+ export { StaffSupportTicketInternalNotesTab_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 { D as StaffSupportTicketList_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 { StaffSupportTicketList_default as default };
@@ -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 StaffSupportTicketParent_default } from "./StaffSupportTicketParent-Cx1buQZw.js";
6
+
7
+ export { StaffSupportTicketParent_default as default };
@@ -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/staff/StaffSupportTicketParent.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: "StaffSupportTicketParent",
18
+ setup(__props) {
19
+ const ticketId = useRoute().params.id;
20
+ const { data, loading: isLoading, error, refetch } = useQuery((api) => api.supportTickets.staffGetTicket(ticketId), {});
21
+ const ticket = computed(() => data.value ?? null);
22
+ const refreshTicket = async () => {
23
+ await refetch();
24
+ };
25
+ provide("refreshTicket", refreshTicket);
26
+ useBreadcrumbs(() => [{
27
+ label: "Staff Support",
28
+ to: { name: "StaffSupportTicketList" }
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: "StaffEditSupportTicket",
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 StaffSupportTicketParent_default = _sfc_main;
63
+
64
+ //#endregion
65
+ export { StaffSupportTicketParent_default as t };
66
+ //# sourceMappingURL=StaffSupportTicketParent-Cx1buQZw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaffSupportTicketParent-Cx1buQZw.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketParent.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.staffGetTicket(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: 'Staff Support',\n to: { name: 'StaffSupportTicketList' },\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: 'StaffEditSupportTicket',\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,eAAe,SAAS,EAAE,EAAE,CAAC;EAEtE,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,0BAA0B;GACvC,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"}