@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,141 @@
|
|
|
1
|
+
import { t as useMutation } from "./useMutation-CFwe7H9j.js";
|
|
2
|
+
import { t as useQuery } from "./useQuery-p7oJO7OD.js";
|
|
3
|
+
import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, openBlock, ref, toDisplayString, unref, withCtx } from "vue";
|
|
4
|
+
import { UpdateNotificationEmailsSchema, createNewEmailEntry } from "@dragonmastery/dragoncore-shared";
|
|
5
|
+
import { useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
6
|
+
import { toast } from "vue3-toastify";
|
|
7
|
+
|
|
8
|
+
//#region src/slices/admin/features/notification-emails/notificationEmailsMetadata.ts
|
|
9
|
+
const notificationEmailsSchemaWithMetadata = withMetadata(UpdateNotificationEmailsSchema, "notificationEmailsSchema", { emails: {
|
|
10
|
+
label: "Notification Email Addresses",
|
|
11
|
+
ariaLabels: {
|
|
12
|
+
addButton: "Add email address",
|
|
13
|
+
removeButton: "Remove email address",
|
|
14
|
+
moveUpButton: "Move email up",
|
|
15
|
+
moveDownButton: "Move email down",
|
|
16
|
+
item: "Email address"
|
|
17
|
+
}
|
|
18
|
+
} });
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/slices/admin/features/notification-emails/NotificationEmailsPage.vue
|
|
22
|
+
const _hoisted_1 = { class: "max-w-2xl mx-auto bg-base-200 p-6 rounded-xl shadow-md container" };
|
|
23
|
+
const _hoisted_2 = {
|
|
24
|
+
key: 0,
|
|
25
|
+
class: "flex justify-center py-8"
|
|
26
|
+
};
|
|
27
|
+
const _hoisted_3 = { class: "alert alert-error mb-4" };
|
|
28
|
+
const _hoisted_4 = { class: "space-y-4" };
|
|
29
|
+
const _hoisted_5 = { class: "border border-base-300 rounded-lg p-4 bg-base-50" };
|
|
30
|
+
const _hoisted_6 = { class: "flex items-start justify-between mb-3" };
|
|
31
|
+
const _hoisted_7 = { class: "flex-1" };
|
|
32
|
+
const _hoisted_8 = { class: "font-semibold text-lg mb-2" };
|
|
33
|
+
const _hoisted_9 = { class: "space-y-2" };
|
|
34
|
+
const _hoisted_10 = {
|
|
35
|
+
key: 0,
|
|
36
|
+
class: "alert alert-error mb-4"
|
|
37
|
+
};
|
|
38
|
+
const _hoisted_11 = { class: "flex justify-center mt-6" };
|
|
39
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
40
|
+
__name: "NotificationEmailsPage",
|
|
41
|
+
setup(__props) {
|
|
42
|
+
const { data, loading: fetching, error } = useQuery((api) => api.appSettings.getNotificationEmails(), { staleTime: 600 * 1e3 });
|
|
43
|
+
const notificationEmailsData = ref(null);
|
|
44
|
+
const { form, zinia, ziniaGeneric, ZiniaForm, ZiniaSubmitButton, ZiniaResetButton, ZiniaFormErrorsSummary } = useForm(notificationEmailsSchemaWithMetadata, {
|
|
45
|
+
storeName: "notification-emails-form",
|
|
46
|
+
persistToLocalStorage: false,
|
|
47
|
+
renderStyle: "daisy_ui",
|
|
48
|
+
fetchData: async () => {
|
|
49
|
+
while (fetching.value) await new Promise((resolve) => setTimeout(resolve, 100));
|
|
50
|
+
if (!data.value) throw new Error("Notification emails not found");
|
|
51
|
+
notificationEmailsData.value = data.value;
|
|
52
|
+
return { emails: (data.value?.emails || []).map((email) => ({
|
|
53
|
+
id: `email-${Math.random().toString(36).substr(2, 9)}`,
|
|
54
|
+
email: email.email
|
|
55
|
+
})) };
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const { mutate: updateNotificationEmails } = useMutation((api, formData) => {
|
|
59
|
+
return api.appSettings.updateNotificationEmails(formData);
|
|
60
|
+
}, { invalidate: /^app-settings:/ });
|
|
61
|
+
const handleSubmit = async (formData) => {
|
|
62
|
+
await updateNotificationEmails(formData);
|
|
63
|
+
return formData;
|
|
64
|
+
};
|
|
65
|
+
const handleSuccess = async (_result) => {
|
|
66
|
+
toast.success("Notification emails updated successfully!");
|
|
67
|
+
};
|
|
68
|
+
const handleError = (error$1) => {
|
|
69
|
+
form.setSubmitError(error$1 instanceof Error ? error$1.message : "An unknown error occurred");
|
|
70
|
+
toast.error("Failed to update notification emails. Please try again.");
|
|
71
|
+
};
|
|
72
|
+
return (_ctx, _cache) => {
|
|
73
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
74
|
+
_cache[2] || (_cache[2] = createElementVNode("h1", { class: "text-2xl font-bold mb-6 text-center" }, "Support Ticket Notification Emails", -1)),
|
|
75
|
+
createCommentVNode(" Loading State "),
|
|
76
|
+
unref(fetching) ? (openBlock(), createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "loading loading-spinner loading-lg" }, null, -1)])])) : unref(error) ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" Error State "), createElementVNode("div", _hoisted_3, [createElementVNode("span", null, "Error loading notification emails: " + toDisplayString(unref(error).message), 1)])], 2112)) : notificationEmailsData.value ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createCommentVNode(" Form "), createElementVNode("div", null, [createVNode(unref(ZiniaForm), {
|
|
77
|
+
onHandleSubmit: handleSubmit,
|
|
78
|
+
onSuccess: handleSuccess,
|
|
79
|
+
onError: handleError,
|
|
80
|
+
title: "Configure Notification Emails",
|
|
81
|
+
subtitle: "Configure which staff members receive email notifications when new support tickets are created."
|
|
82
|
+
}, {
|
|
83
|
+
default: withCtx(() => [
|
|
84
|
+
createElementVNode("div", _hoisted_4, [
|
|
85
|
+
createCommentVNode(" Email addresses array field "),
|
|
86
|
+
createVNode(unref(zinia).EmailsField, {
|
|
87
|
+
name: "emails",
|
|
88
|
+
label: "Notification Email Addresses",
|
|
89
|
+
createItem: unref(createNewEmailEntry),
|
|
90
|
+
autoPrefixFields: true,
|
|
91
|
+
ariaLabels: {
|
|
92
|
+
addButton: "Add email address",
|
|
93
|
+
removeButton: "Remove email address",
|
|
94
|
+
moveUpButton: "Move email up",
|
|
95
|
+
moveDownButton: "Move email down",
|
|
96
|
+
item: "Email address"
|
|
97
|
+
}
|
|
98
|
+
}, {
|
|
99
|
+
itemRenderer: withCtx(({ item: _, index, fields }) => [createElementVNode("div", _hoisted_5, [createElementVNode("div", _hoisted_6, [createElementVNode("div", _hoisted_7, [createElementVNode("h4", _hoisted_8, "Email Address #" + toDisplayString(index + 1), 1), createElementVNode("div", _hoisted_9, [createVNode(unref(ziniaGeneric).TextField, {
|
|
100
|
+
name: fields.email,
|
|
101
|
+
label: "Email Address",
|
|
102
|
+
placeholder: "Enter email address",
|
|
103
|
+
type: "email",
|
|
104
|
+
class: "input input-bordered"
|
|
105
|
+
}, null, 8, ["name"])])])])])]),
|
|
106
|
+
_: 1
|
|
107
|
+
}, 8, ["createItem"]),
|
|
108
|
+
createCommentVNode(" Information alert "),
|
|
109
|
+
_cache[1] || (_cache[1] = createElementVNode("div", { class: "alert alert-info" }, [createElementVNode("svg", {
|
|
110
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
111
|
+
fill: "none",
|
|
112
|
+
viewBox: "0 0 24 24",
|
|
113
|
+
class: "stroke-current shrink-0 w-6 h-6"
|
|
114
|
+
}, [createElementVNode("path", {
|
|
115
|
+
"stroke-linecap": "round",
|
|
116
|
+
"stroke-linejoin": "round",
|
|
117
|
+
"stroke-width": "2",
|
|
118
|
+
d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
119
|
+
})]), createElementVNode("div", null, [createElementVNode("h3", { class: "font-bold" }, "How it works"), createElementVNode("div", { class: "text-sm" }, [createElementVNode("p", null, " Add email addresses for staff members who should receive notifications. When a new support ticket is created, all listed recipients will receive an email notification with the ticket details. "), createElementVNode("p", { class: "mt-2" }, " Click \"Add Email\" to add more recipients. Each email is validated individually. ")])])], -1))
|
|
120
|
+
]),
|
|
121
|
+
createCommentVNode(" Form Status Messages "),
|
|
122
|
+
unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_10, [createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
|
|
123
|
+
createCommentVNode(" Submit Button "),
|
|
124
|
+
createElementVNode("div", _hoisted_11, [createVNode(unref(ZiniaSubmitButton), {
|
|
125
|
+
submitText: "Update Notification Emails",
|
|
126
|
+
submittingText: "Updating..."
|
|
127
|
+
})]),
|
|
128
|
+
createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" }),
|
|
129
|
+
createVNode(unref(ZiniaResetButton))
|
|
130
|
+
]),
|
|
131
|
+
_: 1
|
|
132
|
+
})])], 2112)) : createCommentVNode("v-if", true)
|
|
133
|
+
]);
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
var NotificationEmailsPage_default = _sfc_main;
|
|
138
|
+
|
|
139
|
+
//#endregion
|
|
140
|
+
export { notificationEmailsSchemaWithMetadata as n, NotificationEmailsPage_default as t };
|
|
141
|
+
//# sourceMappingURL=NotificationEmailsPage-BjRqtW95.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationEmailsPage-BjRqtW95.js","names":[],"sources":["../src/slices/admin/features/notification-emails/notificationEmailsMetadata.ts","../src/slices/admin/features/notification-emails/NotificationEmailsPage.vue"],"sourcesContent":["import {\n type UseFormTyped,\n withMetadata,\n ZINIA_FIELDS_KEY,\n ZINIA_FORM_KEY,\n} from '@dragonmastery/zinia-forms-core';\nimport { UpdateNotificationEmailsSchema } from '@dragonmastery/dragoncore-shared';\nimport { inject } from 'vue';\n\n// Create an enhanced schema with metadata attached\nexport const notificationEmailsSchemaWithMetadata = withMetadata(\n UpdateNotificationEmailsSchema,\n 'notificationEmailsSchema',\n {\n emails: {\n label: 'Notification Email Addresses',\n ariaLabels: {\n addButton: 'Add email address',\n removeButton: 'Remove email address',\n moveUpButton: 'Move email up',\n moveDownButton: 'Move email down',\n item: 'Email address',\n },\n },\n },\n);\n\nexport type NotificationEmailsFormDto = UseFormTyped<typeof UpdateNotificationEmailsSchema>;\n\nexport const injectNotificationEmailsForm = () =>\n inject<NotificationEmailsFormDto['form']>(ZINIA_FORM_KEY);\nexport const injectNotificationEmailsZinia = () =>\n inject<NotificationEmailsFormDto['zinia']>(ZINIA_FIELDS_KEY);\n","<template>\n <div class=\"max-w-2xl mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Support Ticket Notification Emails</h1>\n\n <!-- Loading State -->\n <div v-if=\"fetching\" class=\"flex justify-center py-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <!-- Error State -->\n <div v-else-if=\"error\" class=\"alert alert-error mb-4\">\n <span>Error loading notification emails: {{ error.message }}</span>\n </div>\n\n <!-- Form -->\n <div v-else-if=\"notificationEmailsData\">\n <ZiniaForm\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"Configure Notification Emails\"\n subtitle=\"Configure which staff members receive email notifications when new support tickets are created.\"\n >\n <div class=\"space-y-4\">\n <!-- Email addresses array field -->\n <zinia.EmailsField\n name=\"emails\"\n label=\"Notification Email Addresses\"\n :createItem=\"createNewEmailEntry\"\n :autoPrefixFields=\"true\"\n :ariaLabels=\"{\n addButton: 'Add email address',\n removeButton: 'Remove email address',\n moveUpButton: 'Move email up',\n moveDownButton: 'Move email down',\n item: 'Email address',\n }\"\n >\n <template #itemRenderer=\"{ item: _, index, fields }\">\n <div class=\"border border-base-300 rounded-lg p-4 bg-base-50\">\n <div class=\"flex items-start justify-between mb-3\">\n <div class=\"flex-1\">\n <h4 class=\"font-semibold text-lg mb-2\">Email Address #{{ index + 1 }}</h4>\n <div class=\"space-y-2\">\n <ziniaGeneric.TextField\n :name=\"fields.email\"\n label=\"Email Address\"\n placeholder=\"Enter email address\"\n type=\"email\"\n class=\"input input-bordered\"\n />\n </div>\n </div>\n </div>\n </div>\n </template>\n </zinia.EmailsField>\n\n <!-- Information alert -->\n <div class=\"alert alert-info\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n class=\"stroke-current shrink-0 w-6 h-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n ></path>\n </svg>\n <div>\n <h3 class=\"font-bold\">How it works</h3>\n <div class=\"text-sm\">\n <p>\n Add email addresses for staff members who should receive notifications. When\n a new support ticket is created, all listed recipients will receive an email\n notification with the ticket details.\n </p>\n <p class=\"mt-2\">\n Click \"Add Email\" to add more recipients. Each email is validated\n individually.\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Form Status Messages -->\n <div v-if=\"form.submitError\" class=\"alert alert-error mb-4\">\n <span>{{ form.submitError }}</span>\n </div>\n\n <!-- Submit Button -->\n <div class=\"flex justify-center mt-6\">\n <ZiniaSubmitButton\n submitText=\"Update Notification Emails\"\n submittingText=\"Updating...\"\n />\n </div>\n\n <ZiniaFormErrorsSummary title=\"Please fix the following errors:\" />\n <ZiniaResetButton />\n </ZiniaForm>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport type { UpdateNotificationEmails } from '@dragonmastery/dragoncore-shared';\nimport { createNewEmailEntry } from '@dragonmastery/dragoncore-shared';\nimport { ref } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { notificationEmailsSchemaWithMetadata } from './notificationEmailsMetadata';\n\n// Fetch notification emails data\nconst {\n data,\n loading: fetching,\n error,\n} = useQuery((api) => api.appSettings.getNotificationEmails(), {\n staleTime: 10 * 60 * 1000,\n});\n\nconst notificationEmailsData = ref<any | null>(null);\n\n// Create form with notification emails data\nconst {\n form,\n zinia,\n ziniaGeneric,\n ZiniaForm,\n ZiniaSubmitButton,\n ZiniaResetButton,\n ZiniaFormErrorsSummary,\n} = useForm(notificationEmailsSchemaWithMetadata, {\n storeName: 'notification-emails-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n fetchData: async () => {\n while (fetching.value) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n if (!data.value) {\n throw new Error('Notification emails not found');\n }\n\n notificationEmailsData.value = data.value;\n\n // Transform the API response to match EmailEntry type\n const emails = data.value?.emails || [];\n const transformedEmails = emails.map((email: any) => ({\n id: `email-${Math.random().toString(36).substr(2, 9)}`,\n email: email.email,\n }));\n\n return {\n emails: transformedEmails,\n } satisfies UpdateNotificationEmails;\n },\n});\n\nconst { mutate: updateNotificationEmails } = useMutation(\n (api, formData: UpdateNotificationEmails) => {\n return api.appSettings.updateNotificationEmails(formData);\n },\n { invalidate: /^app-settings:/ },\n);\n\nconst handleSubmit = async (formData: UpdateNotificationEmails) => {\n await updateNotificationEmails(formData);\n return formData;\n};\n\nconst handleSuccess = async (_result: any) => {\n toast.success('Notification emails updated successfully!');\n};\n\nconst handleError = (error: Error | unknown) => {\n form.setSubmitError(error instanceof Error ? error.message : 'An unknown error occurred');\n toast.error('Failed to update notification emails. Please try again.');\n};\n</script>\n"],"mappings":";;;;;;;;AAUA,MAAa,uCAAuC,aAClD,gCACA,4BACA,EACE,QAAQ;CACN,OAAO;CACP,YAAY;EACV,WAAW;EACX,cAAc;EACd,cAAc;EACd,gBAAgB;EAChB,MAAM;EACP;CACF,EACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;ECgGD,MAAM,EACJ,MACA,SAAS,UACT,UACE,UAAU,QAAQ,IAAI,YAAY,uBAAuB,EAAE,EAC7D,WAAW,MAAU,KACtB,CAAC;EAEF,MAAM,yBAAyB,IAAgB,KAAK;EAGpD,MAAM,EACJ,MACA,OACA,cACA,WACA,mBACA,kBACA,2BACE,QAAQ,sCAAsC;GAChD,WAAW;GACX,uBAAuB;GACvB,aAAa;GACb,WAAW,YAAY;AACrB,WAAO,SAAS,MACd,OAAM,IAAI,SAAS,YAAY,WAAW,SAAS,IAAI,CAAC;AAG1D,QAAI,CAAC,KAAK,MACR,OAAM,IAAI,MAAM,gCAAgC;AAGlD,2BAAuB,QAAQ,KAAK;AASpC,WAAO,EACL,SAPa,KAAK,OAAO,UAAU,EAAE,EACN,KAAK,WAAgB;KACpD,IAAI,SAAS,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE;KACpD,OAAO,MAAM;KACd,EAAE,EAIF;;GAEJ,CAAC;EAEF,MAAM,EAAE,QAAQ,6BAA6B,aAC1C,KAAK,aAAuC;AAC3C,UAAO,IAAI,YAAY,yBAAyB,SAAS;KAE3D,EAAE,YAAY,kBAAkB,CACjC;EAED,MAAM,eAAe,OAAO,aAAuC;AACjE,SAAM,yBAAyB,SAAS;AACxC,UAAO;;EAGT,MAAM,gBAAgB,OAAO,YAAiB;AAC5C,SAAM,QAAQ,4CAA4C;;EAG5D,MAAM,eAAe,YAA2B;AAC9C,QAAK,eAAe,mBAAiB,QAAQ,QAAM,UAAU,4BAA4B;AACzF,SAAM,MAAM,0DAA0D;;;uBAzLtE,mBA0GM,OA1GN,YA0GM;8BAzGJ,mBAAuF,MAAA,EAAnF,OAAM,uCAAqC,EAAC,sCAAkC,GAAA;IAElF,mBAAA,kBAAsB;IACX,MAAA,SAAQ,IAAA,WAAA,EAAnB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAAwD,QAAA,EAAlD,OAAM,sCAAoC,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAIlC,MAAA,MAAK,IAAA,WAAA,EAArB,mBAEM,UAAA,EAAA,KAAA,GAAA,EAAA,CAHN,mBAAA,gBAAoB,EACpB,mBAEM,OAFN,YAEM,CADJ,mBAAmE,QAAA,MAA7D,wCAAmC,gBAAG,MAAA,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,CAAA,WAI3C,uBAAA,SAAA,WAAA,EAAhB,mBA2FM,UAAA,EAAA,KAAA,GAAA,EAAA,CA5FN,mBAAA,SAAa,EACb,mBA2FM,OAAA,MAAA,CA1FJ,YAyFY,MAAA,UAAA,EAAA;KAxFT,gBAAe;KACf,WAAS;KACT,SAAO;KACR,OAAM;KACN,UAAS;;4BAmEH;MAjEN,mBAiEM,OAjEN,YAiEM;OAhEJ,mBAAA,gCAAoC;OACpC,YA+BoB,MAAA,MAAA,CAAA,aAAA;QA9BlB,MAAK;QACL,OAAM;QACL,YAAY,MAAA,oBAAmB;QAC/B,kBAAkB;QAClB,YAAY;;;;;;SAMZ;;QAEU,cAAY,SAgBf,EAAA,MAhByB,GAAG,OAAO,aAAM,CAC/C,mBAeM,OAfN,YAeM,CAdJ,mBAaM,OAbN,YAaM,CAZJ,mBAWM,OAXN,YAWM,CAVJ,mBAA0E,MAA1E,YAAuC,oBAAe,gBAAG,QAAK,EAAA,EAAA,EAAA,EAC9D,mBAQM,OARN,YAQM,CAPJ,YAME,MAAA,aAAA,CAAA,WAAA;SALC,MAAM,OAAO;SACd,OAAM;SACN,aAAY;SACZ,MAAK;SACL,OAAM;;;;OASpB,mBAAA,sBAA0B;iCAC1B,mBA4BM,OAAA,EA5BD,OAAM,oBAAkB,EAAA,CAC3B,mBAYM,OAAA;QAXJ,OAAM;QACN,MAAK;QACL,SAAQ;QACR,OAAM;WAEN,mBAKQ,QAAA;QAJN,kBAAe;QACf,mBAAgB;QAChB,gBAAa;QACb,GAAE;aAGN,mBAaM,OAAA,MAAA,CAZJ,mBAAuC,MAAA,EAAnC,OAAM,aAAW,EAAC,eAAY,EAClC,mBAUM,OAAA,EAVD,OAAM,WAAS,EAAA,CAClB,mBAII,KAAA,MAJD,oMAIH,EACA,mBAGI,KAAA,EAHD,OAAM,QAAM,EAAC,sFAGhB,CAAA,CAAA,CAAA,CAAA,CAAA;;MAMR,mBAAA,yBAA6B;MAClB,MAAA,KAAI,CAAC,eAAA,WAAA,EAAhB,mBAEM,OAFN,aAEM,CADJ,mBAAmC,QAAA,MAAA,gBAA1B,MAAA,KAAI,CAAC,YAAW,EAAA,EAAA,CAAA,CAAA,IAAA,mBAAA,QAAA,KAAA;MAG3B,mBAAA,kBAAsB;MACtB,mBAKM,OALN,aAKM,CAJJ,YAGE,MAAA,kBAAA,EAAA;OAFA,YAAW;OACX,gBAAe;;MAInB,YAAmE,MAAA,uBAAA,EAAA,EAA3C,OAAM,oCAAkC,CAAA;MAChE,YAAoB,MAAA,iBAAA,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import "./useQueryCache-ByayvZgZ.js";
|
|
3
|
+
import "./useMutation-CFwe7H9j.js";
|
|
4
|
+
import "./useQuery-p7oJO7OD.js";
|
|
5
|
+
import { t as NotificationEmailsPage_default } from "./NotificationEmailsPage-BjRqtW95.js";
|
|
6
|
+
|
|
7
|
+
export { NotificationEmailsPage_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 { g as ResetPassword_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 { ResetPassword_default as default };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { l as useUserSessionStore } from "./useRpcAuth-BLlRSHy8.js";
|
|
2
|
+
import { t as useMutation } from "./useMutation-CFwe7H9j.js";
|
|
3
|
+
import { t as AppLink_default } from "./AppLink-CHMMrSFI.js";
|
|
4
|
+
import { createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
5
|
+
import { useRouter } from "vue-router";
|
|
6
|
+
import { signupSchema } from "@dragonmastery/dragoncore-shared";
|
|
7
|
+
import { useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
8
|
+
import { toast } from "vue3-toastify";
|
|
9
|
+
|
|
10
|
+
//#region src/slices/auth/features/signup/signupSchema.ts
|
|
11
|
+
const signupSchemaWithMetadata = withMetadata(signupSchema, "signupSchema", {
|
|
12
|
+
email: {
|
|
13
|
+
inputType: "email",
|
|
14
|
+
placeholder: "you@example.com",
|
|
15
|
+
helpText: "Enter the email address you used to register",
|
|
16
|
+
autocomplete: "email",
|
|
17
|
+
className: "login-field",
|
|
18
|
+
autofocus: true
|
|
19
|
+
},
|
|
20
|
+
"passwords.password": {
|
|
21
|
+
inputType: "password",
|
|
22
|
+
placeholder: "••••••••",
|
|
23
|
+
helpText: "Must be at least 8 characters",
|
|
24
|
+
autocomplete: "current-password",
|
|
25
|
+
className: "login-field"
|
|
26
|
+
},
|
|
27
|
+
"passwords.password_confirm": {
|
|
28
|
+
inputType: "password",
|
|
29
|
+
placeholder: "••••••••",
|
|
30
|
+
helpText: "Must be at least 8 characters",
|
|
31
|
+
autocomplete: "current-password",
|
|
32
|
+
className: "login-field"
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/slices/auth/features/signup/Signup.vue
|
|
38
|
+
const _hoisted_1 = { class: "max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container" };
|
|
39
|
+
const _hoisted_2 = { class: "text-center mt-2" };
|
|
40
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
41
|
+
__name: "Signup",
|
|
42
|
+
setup(__props) {
|
|
43
|
+
const { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(signupSchemaWithMetadata, {
|
|
44
|
+
storeName: "signup-form",
|
|
45
|
+
persistToLocalStorage: false,
|
|
46
|
+
renderStyle: "daisy_ui"
|
|
47
|
+
});
|
|
48
|
+
const sessionStore = useUserSessionStore();
|
|
49
|
+
const router = useRouter();
|
|
50
|
+
const { mutate: signupMutate } = useMutation((api, input) => api.users.signupUser(input), { skipAuthCheck: true });
|
|
51
|
+
const { mutate: loginMutate } = useMutation((api, input) => api.userSessions.login(input), { credentials: "include" });
|
|
52
|
+
const handleSubmit = async (data) => {
|
|
53
|
+
if (!await signupMutate(data)) throw new Error("Signup failed");
|
|
54
|
+
const loginResult = await loginMutate({
|
|
55
|
+
email: data.email,
|
|
56
|
+
password: data.passwords.password
|
|
57
|
+
});
|
|
58
|
+
if (!loginResult?.access_token || !loginResult?.user_details_token) throw new Error("Failed to login after signup");
|
|
59
|
+
return {
|
|
60
|
+
access_token: loginResult.access_token,
|
|
61
|
+
user_details_token: loginResult.user_details_token
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
const handleSuccess = async (data) => {
|
|
65
|
+
sessionStore.setSession(data.user_details_token);
|
|
66
|
+
sessionStore.setAccessToken(data.access_token);
|
|
67
|
+
form.reset();
|
|
68
|
+
await router.push("/");
|
|
69
|
+
toast.success("Registration successful! You are now logged in.");
|
|
70
|
+
};
|
|
71
|
+
const handleError = (error) => {
|
|
72
|
+
console.log("Signup failed", error);
|
|
73
|
+
toast.error(error.message || "Registration failed");
|
|
74
|
+
};
|
|
75
|
+
return (_ctx, _cache) => {
|
|
76
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [_cache[2] || (_cache[2] = createElementVNode("h1", { class: "text-2xl font-bold mb-6 text-center" }, "Sign Up", -1)), createVNode(unref(ZiniaForm), {
|
|
77
|
+
onHandleSubmit: handleSubmit,
|
|
78
|
+
onSuccess: handleSuccess,
|
|
79
|
+
onError: handleError
|
|
80
|
+
}, {
|
|
81
|
+
default: withCtx(() => [
|
|
82
|
+
createVNode(unref(zinia).EmailField),
|
|
83
|
+
createVNode(unref(zinia).PasswordsPasswordField),
|
|
84
|
+
createVNode(unref(zinia).PasswordsPasswordConfirmField),
|
|
85
|
+
createVNode(unref(ZiniaSubmitButton), {
|
|
86
|
+
submitText: "Sign Up",
|
|
87
|
+
submittingText: "Signing up..."
|
|
88
|
+
}),
|
|
89
|
+
createElementVNode("div", _hoisted_2, [createElementVNode("p", null, [_cache[1] || (_cache[1] = createTextVNode(" Already have an account? ", -1)), createVNode(AppLink_default, {
|
|
90
|
+
class: "link-accent link",
|
|
91
|
+
to: "/auth/login"
|
|
92
|
+
}, {
|
|
93
|
+
default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode("Login", -1)])]),
|
|
94
|
+
_: 1
|
|
95
|
+
})])])
|
|
96
|
+
]),
|
|
97
|
+
_: 1
|
|
98
|
+
})]);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
var Signup_default = _sfc_main;
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
export { signupSchemaWithMetadata as n, Signup_default as t };
|
|
106
|
+
//# sourceMappingURL=Signup-c2-_yMOM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signup-c2-_yMOM.js","names":[],"sources":["../src/slices/auth/features/signup/signupSchema.ts","../src/slices/auth/features/signup/Signup.vue"],"sourcesContent":["import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { signupSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\n// Define the login form type\nexport type SignupForm = z.infer<typeof signupSchema>;\n\n// Enhance the schema with metadata\nexport const signupSchemaWithMetadata = withMetadata(signupSchema, 'signupSchema', {\n email: {\n inputType: 'email',\n placeholder: 'you@example.com',\n helpText: 'Enter the email address you used to register',\n autocomplete: 'email',\n className: 'login-field',\n autofocus: true,\n },\n 'passwords.password': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'current-password',\n className: 'login-field',\n },\n 'passwords.password_confirm': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'current-password',\n className: 'login-field',\n },\n});\n","<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Sign Up</h1>\n\n <ZiniaForm @handle-submit=\"handleSubmit\" @success=\"handleSuccess\" @error=\"handleError\">\n <zinia.EmailField />\n <zinia.PasswordsPasswordField />\n <zinia.PasswordsPasswordConfirmField />\n\n <ZiniaSubmitButton submitText=\"Sign Up\" submittingText=\"Signing up...\" />\n\n <div class=\"text-center mt-2\">\n <p>\n Already have an account?\n <AppLink class=\"link-accent link\" to=\"/auth/login\">Login</AppLink>\n </p>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AppLink from '../../../../components/AppLink.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport type { SignupInputDto } from '@dragonmastery/dragoncore-shared';\nimport { useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { signupSchemaWithMetadata } from './signupSchema';\n\n// Create a type-safe form using our schema with metadata\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(signupSchemaWithMetadata, {\n storeName: 'signup-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n});\n\nconst sessionStore = useUserSessionStore();\nconst router = useRouter();\nconst { mutate: signupMutate } = useMutation(\n (api, input: SignupInputDto) => api.users.signupUser(input),\n { skipAuthCheck: true }, // Signup is a public endpoint\n);\nconst { mutate: loginMutate } = useMutation(\n (api, input: { email: string; password: string }) => api.userSessions.login(input),\n { credentials: 'include' }, // Include credentials to allow cookies\n);\n\n// Handle form submission\nconst handleSubmit = async (data: SignupInputDto) => {\n const result = await signupMutate(data);\n if (!result) throw new Error('Signup failed');\n\n // After creating user, login to get tokens\n const loginResult = await loginMutate({\n email: data.email,\n password: data.passwords.password,\n });\n\n if (!loginResult?.access_token || !loginResult?.user_details_token) {\n throw new Error('Failed to login after signup');\n }\n\n return {\n access_token: loginResult.access_token,\n user_details_token: loginResult.user_details_token,\n };\n};\n\n// Handle success\nconst handleSuccess = async (data: { access_token: string; user_details_token: string }) => {\n sessionStore.setSession(data.user_details_token);\n sessionStore.setAccessToken(data.access_token);\n\n form.reset();\n await router.push('/');\n toast.success('Registration successful! You are now logged in.');\n};\n\n// Handle error\nconst handleError = (error: any) => {\n console.log('Signup failed', error);\n toast.error(error.message || 'Registration failed');\n};\n</script>\n"],"mappings":";;;;;;;;;;AAQA,MAAa,2BAA2B,aAAa,cAAc,gBAAgB;CACjF,OAAO;EACL,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACX,WAAW;EACZ;CACD,sBAAsB;EACpB,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACZ;CACD,8BAA8B;EAC5B,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACZ;CACF,CAAC;;;;;;;;;ECCF,MAAM,EAAE,MAAM,OAAO,WAAW,sBAAsB,QAAQ,0BAA0B;GACtF,WAAW;GACX,uBAAuB;GACvB,aAAa;GACd,CAAC;EAEF,MAAM,eAAe,qBAAqB;EAC1C,MAAM,SAAS,WAAW;EAC1B,MAAM,EAAE,QAAQ,iBAAiB,aAC9B,KAAK,UAA0B,IAAI,MAAM,WAAW,MAAM,EAC3D,EAAE,eAAe,MAAM,CACxB;EACD,MAAM,EAAE,QAAQ,gBAAgB,aAC7B,KAAK,UAA+C,IAAI,aAAa,MAAM,MAAM,EAClF,EAAE,aAAa,WAAW,CAC3B;EAGD,MAAM,eAAe,OAAO,SAAyB;AAEnD,OAAI,CADW,MAAM,aAAa,KAAK,CAC1B,OAAM,IAAI,MAAM,gBAAgB;GAG7C,MAAM,cAAc,MAAM,YAAY;IACpC,OAAO,KAAK;IACZ,UAAU,KAAK,UAAU;IAC1B,CAAC;AAEF,OAAI,CAAC,aAAa,gBAAgB,CAAC,aAAa,mBAC9C,OAAM,IAAI,MAAM,+BAA+B;AAGjD,UAAO;IACL,cAAc,YAAY;IAC1B,oBAAoB,YAAY;IACjC;;EAIH,MAAM,gBAAgB,OAAO,SAA+D;AAC1F,gBAAa,WAAW,KAAK,mBAAmB;AAChD,gBAAa,eAAe,KAAK,aAAa;AAE9C,QAAK,OAAO;AACZ,SAAM,OAAO,KAAK,IAAI;AACtB,SAAM,QAAQ,kDAAkD;;EAIlE,MAAM,eAAe,UAAe;AAClC,WAAQ,IAAI,iBAAiB,MAAM;AACnC,SAAM,MAAM,MAAM,WAAW,sBAAsB;;;uBAlFnD,mBAiBM,OAjBN,YAiBM,CAAA,OAAA,OAAA,OAAA,KAhBJ,mBAA4D,MAAA,EAAxD,OAAM,uCAAqC,EAAC,WAAO,GAAA,GAEvD,YAaY,MAAA,UAAA,EAAA;IAbA,gBAAe;IAAe,WAAS;IAAgB,SAAO;;2BACpD;KAApB,YAAoB,MAAA,MAAA,CAAA,WAAA;KACpB,YAAgC,MAAA,MAAA,CAAA,uBAAA;KAChC,YAAuC,MAAA,MAAA,CAAA,8BAAA;KAEvC,YAAyE,MAAA,kBAAA,EAAA;MAAtD,YAAW;MAAU,gBAAe;;KAEvD,mBAKM,OALN,YAKM,CAJJ,mBAGI,KAAA,MAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAHD,8BAED,GAAA,GAAA,YAAkE,iBAAA;MAAzD,OAAM;MAAmB,IAAG;;6BAAmB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAL,SAAK,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -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 { E as StaffCreateSupportTicketForm_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 { StaffCreateSupportTicketForm_default as default };
|
|
@@ -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 StaffEditSupportTicketForm_default } from "./StaffEditSupportTicketForm-DuUKuIGg.js";
|
|
8
|
+
|
|
9
|
+
export { StaffEditSupportTicketForm_default as default };
|