@dragonmastery/dragoncore-vue 0.0.8 → 0.0.9
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/package.json +4 -13
- package/dist/AppLink-CHMMrSFI.js +0 -54
- package/dist/AppLink-CHMMrSFI.js.map +0 -1
- package/dist/Appearance-BfPdKMXw.js +0 -70
- package/dist/Appearance-BfPdKMXw.js.map +0 -1
- package/dist/Appearance-C3WguxT-.js +0 -3
- package/dist/ChangePasswordPage-DCews8GU.js +0 -86
- package/dist/ChangePasswordPage-DCews8GU.js.map +0 -1
- package/dist/ChangePasswordPage-Dm5vW0nl.js +0 -6
- package/dist/CreateTeamForm-Cg4sD65k.js +0 -27
- package/dist/CreateTeamMemberForm-CiG-fCJD.js +0 -27
- package/dist/CreateUserPage-B8qeBZij.js +0 -76
- package/dist/CreateUserPage-B8qeBZij.js.map +0 -1
- package/dist/CreateUserPage-WjYDkwpb.js +0 -6
- package/dist/CreditBalanceDashboard-BUdKWieE.js +0 -27
- package/dist/CreditManagement-BcyUY_J0.js +0 -27
- package/dist/CustomerCreateSupportTicketForm-BplS0xSi.js +0 -27
- package/dist/CustomerSupportTicketDetailPage-DZQCplSM.js +0 -717
- package/dist/CustomerSupportTicketDetailPage-DZQCplSM.js.map +0 -1
- package/dist/CustomerSupportTicketList-DGwy4Wje.js +0 -27
- package/dist/CustomerSupportTicketParent-BnmTFigo.js +0 -7
- package/dist/CustomerSupportTicketParent-BzY4pmBk.js +0 -66
- package/dist/CustomerSupportTicketParent-BzY4pmBk.js.map +0 -1
- package/dist/CustomerSupportTicketSuccess-DC1jJG1E.js +0 -27
- package/dist/EditTeamForm-BnPwhv5B.js +0 -27
- package/dist/EditTeamMemberForm-B8-pI6Xm.js +0 -6
- package/dist/EditTeamMemberForm-CKbKomrL.js +0 -191
- package/dist/EditTeamMemberForm-CKbKomrL.js.map +0 -1
- package/dist/EditUserPage-BG-Fkx_c.js +0 -7
- package/dist/EditUserPage-XqF25iwz.js +0 -112
- package/dist/EditUserPage-XqF25iwz.js.map +0 -1
- package/dist/ForgotPassword-CjWv2V7p.js +0 -7
- package/dist/ForgotPassword-D3bjL48L.js +0 -73
- package/dist/ForgotPassword-D3bjL48L.js.map +0 -1
- package/dist/LoginForm--br4Il85.js +0 -7
- package/dist/LoginForm-C85U2E2r.js +0 -116
- package/dist/LoginForm-C85U2E2r.js.map +0 -1
- package/dist/Logout-DHT-5Qz3.js +0 -6
- package/dist/Logout-DZuWLh0O.js +0 -38
- package/dist/Logout-DZuWLh0O.js.map +0 -1
- package/dist/ResetPassword-M6mvTS24.js +0 -27
- package/dist/SavedFiltersPage-D3vJrfzt.js +0 -419
- package/dist/SavedFiltersPage-D3vJrfzt.js.map +0 -1
- package/dist/Signup-VZa7U-Ur.js +0 -7
- package/dist/Signup-hpV8J5cM.js +0 -106
- package/dist/Signup-hpV8J5cM.js.map +0 -1
- package/dist/StaffCreateSupportTicketForm-Bc7UnK0Q.js +0 -27
- package/dist/StaffSupportTicketDetailPage-DY07Ez0R.js +0 -1928
- package/dist/StaffSupportTicketDetailPage-DY07Ez0R.js.map +0 -1
- package/dist/StaffSupportTicketList-ChJP_67k.js +0 -27
- package/dist/StaffSupportTicketParent-CWWhaM37.js +0 -66
- package/dist/StaffSupportTicketParent-CWWhaM37.js.map +0 -1
- package/dist/StaffSupportTicketParent-Dp1G85wc.js +0 -7
- package/dist/StaffSupportTicketSuccess-B6X_dP4f.js +0 -27
- package/dist/SupportStaffPage-nd0HowtH.js +0 -156
- package/dist/SupportStaffPage-nd0HowtH.js.map +0 -1
- package/dist/SupportTicketDevLifecycleBadge-Ba-Rm6QW.js +0 -116
- package/dist/SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map +0 -1
- package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js +0 -56
- package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js.map +0 -1
- package/dist/TeamAttachmentsTab-Dk_Bnk-1.js +0 -27
- package/dist/TeamHistoryTab-CNelXR3Q.js +0 -232
- package/dist/TeamHistoryTab-CNelXR3Q.js.map +0 -1
- package/dist/TeamHistoryTab-siesF93u.js +0 -4
- package/dist/TeamList-BtLzbjls.js +0 -27
- package/dist/TeamMemberList-EoDXIr0w.js +0 -27
- package/dist/TeamMemberParent-DZ5YVyi6.js +0 -27
- package/dist/TeamMembersTab-4gmnP9sD.js +0 -21
- package/dist/TeamMembersTab-4gmnP9sD.js.map +0 -1
- package/dist/TeamMembersTab-DTJxmb-M.js +0 -3
- package/dist/TeamNotesTab-BhVRLG8h.js +0 -458
- package/dist/TeamNotesTab-BhVRLG8h.js.map +0 -1
- package/dist/TeamNotesTab-Crp-afAe.js +0 -7
- package/dist/TeamParent-CbrXXzAr.js +0 -27
- package/dist/TimelineNoteInput-BVqF4MtZ.js +0 -513
- package/dist/TimelineNoteInput-BVqF4MtZ.js.map +0 -1
- package/dist/TimelineSystemEvent-D58zN850.js +0 -1897
- package/dist/TimelineSystemEvent-D58zN850.js.map +0 -1
- package/dist/UserListPage-D68AjrjM.js +0 -4
- package/dist/UserListPage-OGYOLwlw.js +0 -153
- package/dist/UserListPage-OGYOLwlw.js.map +0 -1
- package/dist/UserProfilePage-Q68NAGQQ.js +0 -7
- package/dist/UserProfilePage-uAIfC_NW.js +0 -125
- package/dist/UserProfilePage-uAIfC_NW.js.map +0 -1
- package/dist/ViewTeam-DpE_NfRq.js +0 -27
- package/dist/ViewTeamMember-BdBwkuXC.js +0 -27
- package/dist/convertToLocalDateTime-DOSGtMn8.js +0 -121
- package/dist/convertToLocalDateTime-DOSGtMn8.js.map +0 -1
- package/dist/displayIdFormatter-B1ZKgofu.js +0 -13
- package/dist/displayIdFormatter-B1ZKgofu.js.map +0 -1
- package/dist/extractRpcErrorMessage-C_UbKgHL.js +0 -20
- package/dist/extractRpcErrorMessage-C_UbKgHL.js.map +0 -1
- package/dist/index.d.ts +0 -6366
- package/dist/index.js +0 -30
- package/dist/src-CEBiyg_f.css +0 -13
- package/dist/src-CEBiyg_f.css.map +0 -1
- package/dist/src-CHw8DdkR.js +0 -9200
- package/dist/src-CHw8DdkR.js.map +0 -1
- package/dist/useBreadcrumbs-DmgSucoe.js +0 -41
- package/dist/useBreadcrumbs-DmgSucoe.js.map +0 -1
- package/dist/useMutation-B4_S4Xoa.js +0 -50
- package/dist/useMutation-B4_S4Xoa.js.map +0 -1
- package/dist/useQuery-B7ndu5_P.js +0 -107
- package/dist/useQuery-B7ndu5_P.js.map +0 -1
- package/dist/useQueryCache-DqcDMsxb.js +0 -254
- package/dist/useQueryCache-DqcDMsxb.js.map +0 -1
- package/dist/useRpcAuth-Dp2sec-X.js +0 -731
- package/dist/useRpcAuth-Dp2sec-X.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TeamMembersTab-4gmnP9sD.js","names":[],"sources":["../src/slices/team/TeamMembersTab.vue"],"sourcesContent":["<template>\n <RouterView />\n</template>\n"],"mappings":";;;;;;;;;;;;;;qBACE,YAAc,sBAAA"}
|
|
@@ -1,458 +0,0 @@
|
|
|
1
|
-
import { r as executeWithAuth, s as getRefreshTokenHandler } from "./useRpcAuth-Dp2sec-X.js";
|
|
2
|
-
import { t as useMutation } from "./useMutation-B4_S4Xoa.js";
|
|
3
|
-
import { t as useQuery } from "./useQuery-B7ndu5_P.js";
|
|
4
|
-
import { t as formatSystemTimestamp } from "./convertToLocalDateTime-DOSGtMn8.js";
|
|
5
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, toDisplayString, unref, watch, withCtx } from "vue";
|
|
6
|
-
import { useRoute } from "vue-router";
|
|
7
|
-
import { NoteCreateSchema, NoteReadSchema, NoteUpdateSchema, OPERATORS } from "@dragonmastery/dragoncore-shared";
|
|
8
|
-
import { ActionIcons, useCursorDataTable, useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
9
|
-
import { toast } from "vue3-toastify";
|
|
10
|
-
|
|
11
|
-
//#region src/slices/note/noteUpdateMetadata.ts
|
|
12
|
-
const noteUpdateMetadata = withMetadata(NoteUpdateSchema.pick({
|
|
13
|
-
body: true,
|
|
14
|
-
tag: true
|
|
15
|
-
}), "noteUpdateForm", {
|
|
16
|
-
body: {
|
|
17
|
-
label: "Note",
|
|
18
|
-
placeholder: "Enter your note here...",
|
|
19
|
-
inputType: "textarea",
|
|
20
|
-
helpText: "Update the note content"
|
|
21
|
-
},
|
|
22
|
-
tag: {
|
|
23
|
-
label: "Tag",
|
|
24
|
-
inputType: "combobox",
|
|
25
|
-
helpText: "Optional tag to categorize this note"
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
//#endregion
|
|
30
|
-
//#region src/slices/note/components/EditNoteModal.vue
|
|
31
|
-
const _hoisted_1$1 = { class: "modal-box" };
|
|
32
|
-
const _hoisted_2$1 = { class: "form-control" };
|
|
33
|
-
const _hoisted_3$1 = { class: "label" };
|
|
34
|
-
const _hoisted_4$1 = {
|
|
35
|
-
key: 0,
|
|
36
|
-
class: "alert alert-error mt-2"
|
|
37
|
-
};
|
|
38
|
-
const _hoisted_5$1 = { class: "flex justify-end gap-2 mt-6" };
|
|
39
|
-
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
40
|
-
__name: "EditNoteModal",
|
|
41
|
-
props: {
|
|
42
|
-
note: {},
|
|
43
|
-
isOpen: { type: Boolean }
|
|
44
|
-
},
|
|
45
|
-
emits: ["close", "success"],
|
|
46
|
-
setup(__props, { emit: __emit }) {
|
|
47
|
-
const props = __props;
|
|
48
|
-
const emit = __emit;
|
|
49
|
-
const modal = ref();
|
|
50
|
-
const isInternalNote = ref(false);
|
|
51
|
-
const { data: noteTagsData, loading: noteTagsLoading, error: noteTagsError, refetch: refetchNoteTags } = useQuery((api) => api.notes.getNoteTags());
|
|
52
|
-
const loadNoteTags = async () => {
|
|
53
|
-
while (noteTagsLoading.value) await new Promise((resolve) => setTimeout(resolve, 100));
|
|
54
|
-
if (noteTagsError.value) return [];
|
|
55
|
-
return (noteTagsData.value || []).map((tag) => ({
|
|
56
|
-
value: tag,
|
|
57
|
-
label: tag
|
|
58
|
-
}));
|
|
59
|
-
};
|
|
60
|
-
const { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaFormErrorsSummary, clearSavedFormState, refreshFormData } = useForm(noteUpdateMetadata, {
|
|
61
|
-
storeName: `edit-note-form-${props.note?.id || "new"}`,
|
|
62
|
-
persistToLocalStorage: false,
|
|
63
|
-
renderStyle: "daisy_ui",
|
|
64
|
-
dataLoaders: { tag: loadNoteTags },
|
|
65
|
-
fetchData: async () => {
|
|
66
|
-
if (!props.note) return {
|
|
67
|
-
body: "",
|
|
68
|
-
tag: null
|
|
69
|
-
};
|
|
70
|
-
return {
|
|
71
|
-
body: props.note.body || "",
|
|
72
|
-
tag: props.note.tag || null
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
const { mutate: updateNote } = useMutation((api, input) => api.notes.updateNote(input), {
|
|
77
|
-
invalidate: /^notes?:/,
|
|
78
|
-
onSuccess: () => {
|
|
79
|
-
refetchNoteTags();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
const handleSubmit = async (formData) => {
|
|
83
|
-
if (!props.note) throw new Error("No note selected for editing");
|
|
84
|
-
const response = await updateNote({
|
|
85
|
-
id: props.note.id,
|
|
86
|
-
body: formData.body,
|
|
87
|
-
tag: formData.tag || null
|
|
88
|
-
});
|
|
89
|
-
if (!response) throw new Error("Failed to update note");
|
|
90
|
-
return response;
|
|
91
|
-
};
|
|
92
|
-
const handleSuccess = async () => {
|
|
93
|
-
clearSavedFormState();
|
|
94
|
-
refreshFormData();
|
|
95
|
-
toast.success("Note updated successfully!");
|
|
96
|
-
emit("success");
|
|
97
|
-
closeModal();
|
|
98
|
-
};
|
|
99
|
-
const handleError = (error) => {
|
|
100
|
-
form.setSubmitError(error instanceof Error ? error.message : "An unknown error occurred");
|
|
101
|
-
};
|
|
102
|
-
const closeModal = () => {
|
|
103
|
-
emit("close");
|
|
104
|
-
};
|
|
105
|
-
watch(() => props.isOpen, (isOpen) => {
|
|
106
|
-
if (isOpen && modal.value) modal.value.showModal();
|
|
107
|
-
else if (!isOpen && modal.value) {
|
|
108
|
-
modal.value.close();
|
|
109
|
-
refreshFormData();
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
watch(() => props.note, () => {
|
|
113
|
-
if (props.note && props.isOpen) {
|
|
114
|
-
form.setValue("body", props.note.body || "");
|
|
115
|
-
form.setValue("tag", props.note.tag || null);
|
|
116
|
-
isInternalNote.value = props.note.is_internal || false;
|
|
117
|
-
}
|
|
118
|
-
}, { immediate: true });
|
|
119
|
-
return (_ctx, _cache) => {
|
|
120
|
-
return openBlock(), createElementBlock("dialog", {
|
|
121
|
-
ref_key: "modal",
|
|
122
|
-
ref: modal,
|
|
123
|
-
class: "modal"
|
|
124
|
-
}, [createElementVNode("div", _hoisted_1$1, [_cache[1] || (_cache[1] = createElementVNode("h3", { class: "font-bold text-lg mb-4" }, "Edit Note", -1)), createVNode(unref(ZiniaForm), {
|
|
125
|
-
onHandleSubmit: handleSubmit,
|
|
126
|
-
onSuccess: handleSuccess,
|
|
127
|
-
onError: handleError,
|
|
128
|
-
title: "",
|
|
129
|
-
subtitle: ""
|
|
130
|
-
}, {
|
|
131
|
-
default: withCtx(() => [
|
|
132
|
-
createVNode(unref(zinia).TagField, {
|
|
133
|
-
"select-options": unref(form).extraData.tag || [],
|
|
134
|
-
"allow-create": true
|
|
135
|
-
}, null, 8, ["select-options"]),
|
|
136
|
-
createVNode(unref(zinia).BodyField),
|
|
137
|
-
createCommentVNode(" Show visibility status (read-only) "),
|
|
138
|
-
createElementVNode("div", _hoisted_2$1, [createElementVNode("label", _hoisted_3$1, [_cache[0] || (_cache[0] = createElementVNode("span", { class: "label-text" }, "Visibility", -1)), createElementVNode("span", { class: normalizeClass(["badge", isInternalNote.value ? "badge-warning" : "badge-info"]) }, toDisplayString(isInternalNote.value ? "Internal" : "External"), 3)])]),
|
|
139
|
-
unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_4$1, [createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
|
|
140
|
-
createElementVNode("div", _hoisted_5$1, [createElementVNode("button", {
|
|
141
|
-
type: "button",
|
|
142
|
-
class: "btn btn-ghost",
|
|
143
|
-
onClick: closeModal
|
|
144
|
-
}, "Cancel"), createVNode(unref(ZiniaSubmitButton), {
|
|
145
|
-
submitText: "Update Note",
|
|
146
|
-
submittingText: "Updating..."
|
|
147
|
-
})]),
|
|
148
|
-
createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" })
|
|
149
|
-
]),
|
|
150
|
-
_: 1
|
|
151
|
-
})]), createElementVNode("form", {
|
|
152
|
-
method: "dialog",
|
|
153
|
-
class: "modal-backdrop"
|
|
154
|
-
}, [createElementVNode("button", { onClick: closeModal }, "close")])], 512);
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
var EditNoteModal_default = _sfc_main$2;
|
|
159
|
-
|
|
160
|
-
//#endregion
|
|
161
|
-
//#region src/slices/note/noteFormMetadata.ts
|
|
162
|
-
const noteCreateMetadata = withMetadata(NoteCreateSchema.pick({
|
|
163
|
-
body: true,
|
|
164
|
-
is_internal: true,
|
|
165
|
-
tag: true
|
|
166
|
-
}), "noteCreateForm", {
|
|
167
|
-
body: {
|
|
168
|
-
label: "Note",
|
|
169
|
-
placeholder: "Enter your note here...",
|
|
170
|
-
inputType: "textarea",
|
|
171
|
-
helpText: "Add a note about this record"
|
|
172
|
-
},
|
|
173
|
-
is_internal: {
|
|
174
|
-
label: "Internal Note",
|
|
175
|
-
helpText: "Check this box to make this note visible only to staff"
|
|
176
|
-
},
|
|
177
|
-
tag: {
|
|
178
|
-
label: "Tag",
|
|
179
|
-
inputType: "combobox",
|
|
180
|
-
helpText: "Optional tag to categorize this note"
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
//#endregion
|
|
185
|
-
//#region src/slices/note/noteRowSchema.ts
|
|
186
|
-
const noteRowSchemaWithMetadata = withMetadata(NoteReadSchema, "noteRowSchema", {
|
|
187
|
-
body: { label: "Note" },
|
|
188
|
-
tag: {
|
|
189
|
-
label: "Tag",
|
|
190
|
-
sortable: true
|
|
191
|
-
},
|
|
192
|
-
is_internal: {
|
|
193
|
-
label: "Visibility",
|
|
194
|
-
sortable: true
|
|
195
|
-
},
|
|
196
|
-
created_at: {
|
|
197
|
-
label: "Created",
|
|
198
|
-
sortable: true
|
|
199
|
-
},
|
|
200
|
-
created_by: {
|
|
201
|
-
label: "Created By",
|
|
202
|
-
sortable: true
|
|
203
|
-
},
|
|
204
|
-
updated_at: {
|
|
205
|
-
label: "Updated",
|
|
206
|
-
sortable: true
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
//#endregion
|
|
211
|
-
//#region src/slices/note/components/NoteList.vue
|
|
212
|
-
const _hoisted_1 = { class: "space-y-6" };
|
|
213
|
-
const _hoisted_2 = { class: "mt-4" };
|
|
214
|
-
const _hoisted_3 = {
|
|
215
|
-
key: 0,
|
|
216
|
-
class: "alert alert-error mt-2"
|
|
217
|
-
};
|
|
218
|
-
const _hoisted_4 = { class: "flex justify-end mt-6" };
|
|
219
|
-
const _hoisted_5 = { class: "whitespace-pre-wrap" };
|
|
220
|
-
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
221
|
-
__name: "NoteList",
|
|
222
|
-
props: {
|
|
223
|
-
recordId: {},
|
|
224
|
-
recordType: {},
|
|
225
|
-
mode: { default: "customer" }
|
|
226
|
-
},
|
|
227
|
-
setup(__props) {
|
|
228
|
-
const props = __props;
|
|
229
|
-
const selectedNote = ref(null);
|
|
230
|
-
const isEditModalOpen = ref(false);
|
|
231
|
-
const isInternalNote = computed(() => {
|
|
232
|
-
return props.mode === "internal";
|
|
233
|
-
});
|
|
234
|
-
const queryFilters = ref({
|
|
235
|
-
record_id: {
|
|
236
|
-
operator: OPERATORS.EQUALS,
|
|
237
|
-
value: props.recordId
|
|
238
|
-
},
|
|
239
|
-
record_type: {
|
|
240
|
-
operator: OPERATORS.EQUALS,
|
|
241
|
-
value: props.recordType
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
const currentPaginationToken = ref();
|
|
245
|
-
const { data: noteTagsData, loading: noteTagsLoading, error: noteTagsError, refetch: refetchNoteTags } = useQuery((api) => api.notes.getNoteTags());
|
|
246
|
-
const loadNoteTags = async () => {
|
|
247
|
-
while (noteTagsLoading.value) await new Promise((resolve) => setTimeout(resolve, 100));
|
|
248
|
-
if (noteTagsError.value) return [];
|
|
249
|
-
return (noteTagsData.value || []).map((tag) => ({
|
|
250
|
-
value: tag,
|
|
251
|
-
label: tag
|
|
252
|
-
}));
|
|
253
|
-
};
|
|
254
|
-
const { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaFormErrorsSummary, refreshFormData } = useForm(noteCreateMetadata, {
|
|
255
|
-
storeName: `note-form-${props.recordId}`,
|
|
256
|
-
persistToLocalStorage: false,
|
|
257
|
-
renderStyle: "daisy_ui",
|
|
258
|
-
dataLoaders: { tag: loadNoteTags },
|
|
259
|
-
fetchData: async () => ({
|
|
260
|
-
body: "",
|
|
261
|
-
tag: null,
|
|
262
|
-
is_internal: isInternalNote.value
|
|
263
|
-
})
|
|
264
|
-
});
|
|
265
|
-
const { ZiniaDataTable, refresh } = useCursorDataTable(noteRowSchemaWithMetadata, {
|
|
266
|
-
fetchData: async ({ cursor, pageSize, sort, filters, search }) => {
|
|
267
|
-
const variables = {
|
|
268
|
-
first: pageSize,
|
|
269
|
-
sortBy: sort?.field ? sort.field : "created_at",
|
|
270
|
-
sortDirection: sort?.direction === "asc" ? "asc" : "desc",
|
|
271
|
-
...cursor ? { after: cursor } : {},
|
|
272
|
-
...currentPaginationToken.value ? { paginationToken: currentPaginationToken.value } : {},
|
|
273
|
-
...search ? { search } : {},
|
|
274
|
-
record_id: {
|
|
275
|
-
operator: OPERATORS.EQUALS,
|
|
276
|
-
value: props.recordId
|
|
277
|
-
},
|
|
278
|
-
record_type: {
|
|
279
|
-
operator: OPERATORS.EQUALS,
|
|
280
|
-
value: props.recordType
|
|
281
|
-
},
|
|
282
|
-
...filters
|
|
283
|
-
};
|
|
284
|
-
if (props.mode === "customer") variables.is_internal = {
|
|
285
|
-
operator: OPERATORS.EQUALS,
|
|
286
|
-
value: false
|
|
287
|
-
};
|
|
288
|
-
else if (props.mode === "internal") variables.is_internal = {
|
|
289
|
-
operator: OPERATORS.EQUALS,
|
|
290
|
-
value: true
|
|
291
|
-
};
|
|
292
|
-
queryFilters.value = variables;
|
|
293
|
-
const result = await executeWithAuth(async (api) => {
|
|
294
|
-
return await api.notes.getNotes(variables);
|
|
295
|
-
}, { refreshTokenHandler: getRefreshTokenHandler() });
|
|
296
|
-
currentPaginationToken.value = result?.pageInfo?.paginationToken;
|
|
297
|
-
return {
|
|
298
|
-
data: result?.items || [],
|
|
299
|
-
hasNextPage: result?.pageInfo?.hasNextPage ?? false,
|
|
300
|
-
hasPreviousPage: result?.pageInfo?.hasPreviousPage ?? false,
|
|
301
|
-
prevPageCursor: result?.pageInfo?.prevPageCursor ?? void 0,
|
|
302
|
-
nextPageCursor: result?.pageInfo?.nextPageCursor ?? void 0
|
|
303
|
-
};
|
|
304
|
-
},
|
|
305
|
-
columns: {
|
|
306
|
-
created_by: {
|
|
307
|
-
label: "Created By",
|
|
308
|
-
field: "created_by",
|
|
309
|
-
sortable: true,
|
|
310
|
-
verticalAlign: "top"
|
|
311
|
-
},
|
|
312
|
-
updated_at: {
|
|
313
|
-
label: "Updated",
|
|
314
|
-
field: "updated_at",
|
|
315
|
-
sortable: true,
|
|
316
|
-
verticalAlign: "top"
|
|
317
|
-
},
|
|
318
|
-
tag: {
|
|
319
|
-
label: "Tag",
|
|
320
|
-
field: "tag",
|
|
321
|
-
sortable: true,
|
|
322
|
-
filterable: true,
|
|
323
|
-
filterType: "select",
|
|
324
|
-
filterOptionsLoader: loadNoteTags,
|
|
325
|
-
verticalAlign: "top"
|
|
326
|
-
},
|
|
327
|
-
body: {
|
|
328
|
-
label: "Note",
|
|
329
|
-
field: "body",
|
|
330
|
-
sortable: false
|
|
331
|
-
}
|
|
332
|
-
},
|
|
333
|
-
actions: {
|
|
334
|
-
column: { verticalAlign: "top" },
|
|
335
|
-
items: [{
|
|
336
|
-
key: "edit",
|
|
337
|
-
icon: ActionIcons.edit,
|
|
338
|
-
size: "xs",
|
|
339
|
-
variant: "primary",
|
|
340
|
-
type: "button",
|
|
341
|
-
onClick: (row) => openEditModal(row)
|
|
342
|
-
}]
|
|
343
|
-
},
|
|
344
|
-
pagination: { pageSize: 25 }
|
|
345
|
-
});
|
|
346
|
-
const { mutate: createNote } = useMutation((api, input) => api.notes.createNote(input), {
|
|
347
|
-
invalidate: /^notes?:/,
|
|
348
|
-
onSuccess: () => {
|
|
349
|
-
refetchNoteTags();
|
|
350
|
-
}
|
|
351
|
-
});
|
|
352
|
-
const handleSubmit = async (formData) => {
|
|
353
|
-
const result = await createNote({
|
|
354
|
-
record_id: props.recordId,
|
|
355
|
-
record_type: props.recordType,
|
|
356
|
-
body: formData.body,
|
|
357
|
-
tag: formData.tag || null,
|
|
358
|
-
is_internal: isInternalNote.value
|
|
359
|
-
});
|
|
360
|
-
refresh();
|
|
361
|
-
return result;
|
|
362
|
-
};
|
|
363
|
-
const handleSuccess = async () => {
|
|
364
|
-
refreshFormData();
|
|
365
|
-
toast.success("Note added successfully!");
|
|
366
|
-
refresh();
|
|
367
|
-
};
|
|
368
|
-
const handleError = (error) => {
|
|
369
|
-
form.setSubmitError(error instanceof Error ? error.message : "An unknown error occurred");
|
|
370
|
-
};
|
|
371
|
-
const openEditModal = (note) => {
|
|
372
|
-
selectedNote.value = note;
|
|
373
|
-
isEditModalOpen.value = true;
|
|
374
|
-
};
|
|
375
|
-
const closeEditModal = () => {
|
|
376
|
-
isEditModalOpen.value = false;
|
|
377
|
-
selectedNote.value = null;
|
|
378
|
-
};
|
|
379
|
-
const handleEditSuccess = async () => {
|
|
380
|
-
await refetchNoteTags();
|
|
381
|
-
refresh();
|
|
382
|
-
};
|
|
383
|
-
watch(() => [props.recordId, props.recordType], () => {
|
|
384
|
-
if (props.recordId && props.recordType) refresh();
|
|
385
|
-
});
|
|
386
|
-
watch(noteTagsData, async () => {
|
|
387
|
-
if (form.extraData && form.extraData.tag !== void 0) {
|
|
388
|
-
const newTags = await loadNoteTags();
|
|
389
|
-
form.extraData.tag = newTags;
|
|
390
|
-
}
|
|
391
|
-
}, { deep: true });
|
|
392
|
-
return (_ctx, _cache) => {
|
|
393
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
394
|
-
createCommentVNode(" Add Note Form "),
|
|
395
|
-
createElementVNode("div", _hoisted_2, [createVNode(unref(ZiniaForm), {
|
|
396
|
-
onHandleSubmit: handleSubmit,
|
|
397
|
-
onSuccess: handleSuccess,
|
|
398
|
-
onError: handleError,
|
|
399
|
-
title: "",
|
|
400
|
-
subtitle: ""
|
|
401
|
-
}, {
|
|
402
|
-
default: withCtx(() => [
|
|
403
|
-
createVNode(unref(zinia).TagField, {
|
|
404
|
-
"select-options": unref(form).extraData.tag || [],
|
|
405
|
-
"allow-create": true
|
|
406
|
-
}, null, 8, ["select-options"]),
|
|
407
|
-
createVNode(unref(zinia).BodyField),
|
|
408
|
-
unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_3, [createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
|
|
409
|
-
createElementVNode("div", _hoisted_4, [createVNode(unref(ZiniaSubmitButton), {
|
|
410
|
-
submitText: "Add Note",
|
|
411
|
-
submittingText: "Adding..."
|
|
412
|
-
})]),
|
|
413
|
-
createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" })
|
|
414
|
-
]),
|
|
415
|
-
_: 1
|
|
416
|
-
})]),
|
|
417
|
-
createCommentVNode(" Notes Table "),
|
|
418
|
-
createVNode(unref(ZiniaDataTable), null, {
|
|
419
|
-
"cell-created_by": withCtx(({ row }) => [createTextVNode(toDisplayString(row.created_by_display_name ?? row.created_by ?? "-"), 1)]),
|
|
420
|
-
"cell-created_at": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatSystemTimestamp)(row.created_at)), 1)]),
|
|
421
|
-
"cell-tag": withCtx(({ row }) => [createTextVNode(toDisplayString(row.tag || "-"), 1)]),
|
|
422
|
-
"cell-updated_at": withCtx(({ row }) => [createTextVNode(toDisplayString(row.updated_at ? unref(formatSystemTimestamp)(row.updated_at) : "-"), 1)]),
|
|
423
|
-
"cell-body": withCtx(({ row }) => [createElementVNode("div", _hoisted_5, toDisplayString(row.body || "No content"), 1)]),
|
|
424
|
-
_: 1
|
|
425
|
-
}),
|
|
426
|
-
createCommentVNode(" Edit Modal "),
|
|
427
|
-
createVNode(EditNoteModal_default, {
|
|
428
|
-
note: selectedNote.value,
|
|
429
|
-
"is-open": isEditModalOpen.value,
|
|
430
|
-
onClose: closeEditModal,
|
|
431
|
-
onSuccess: handleEditSuccess
|
|
432
|
-
}, null, 8, ["note", "is-open"])
|
|
433
|
-
]);
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
});
|
|
437
|
-
var NoteList_default = _sfc_main$1;
|
|
438
|
-
|
|
439
|
-
//#endregion
|
|
440
|
-
//#region src/slices/team/TeamNotesTab.vue
|
|
441
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
442
|
-
__name: "TeamNotesTab",
|
|
443
|
-
setup(__props) {
|
|
444
|
-
const team_id = useRoute().params.id;
|
|
445
|
-
return (_ctx, _cache) => {
|
|
446
|
-
return openBlock(), createBlock(NoteList_default, {
|
|
447
|
-
recordId: unref(team_id),
|
|
448
|
-
recordType: "team",
|
|
449
|
-
mode: "customer"
|
|
450
|
-
}, null, 8, ["recordId"]);
|
|
451
|
-
};
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
var TeamNotesTab_default = _sfc_main;
|
|
455
|
-
|
|
456
|
-
//#endregion
|
|
457
|
-
export { EditNoteModal_default as a, noteCreateMetadata as i, NoteList_default as n, noteUpdateMetadata as o, noteRowSchemaWithMetadata as r, TeamNotesTab_default as t };
|
|
458
|
-
//# sourceMappingURL=TeamNotesTab-BhVRLG8h.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TeamNotesTab-BhVRLG8h.js","names":["variables: NoteFiltersDto"],"sources":["../src/slices/note/noteUpdateMetadata.ts","../src/slices/note/components/EditNoteModal.vue","../src/slices/note/noteFormMetadata.ts","../src/slices/note/noteRowSchema.ts","../src/slices/note/components/NoteList.vue","../src/slices/team/TeamNotesTab.vue"],"sourcesContent":["import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { NoteUpdateSchema } from '@dragonmastery/dragoncore-shared';\n\nexport const noteUpdateMetadata = withMetadata(\n NoteUpdateSchema.pick({ body: true, tag: true }),\n 'noteUpdateForm',\n {\n body: {\n label: 'Note',\n placeholder: 'Enter your note here...',\n inputType: 'textarea',\n helpText: 'Update the note content',\n },\n tag: {\n label: 'Tag',\n inputType: 'combobox',\n helpText: 'Optional tag to categorize this note',\n },\n },\n);\n","<template>\n <dialog ref=\"modal\" class=\"modal\">\n <div class=\"modal-box\">\n <h3 class=\"font-bold text-lg mb-4\">Edit Note</h3>\n\n <ZiniaForm\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"\"\n subtitle=\"\"\n >\n <zinia.TagField :select-options=\"form.extraData.tag || []\" :allow-create=\"true\" />\n <zinia.BodyField />\n\n <!-- Show visibility status (read-only) -->\n <div class=\"form-control\">\n <label class=\"label\">\n <span class=\"label-text\">Visibility</span>\n <span class=\"badge\" :class=\"isInternalNote ? 'badge-warning' : 'badge-info'\">\n {{ isInternalNote ? 'Internal' : 'External' }}\n </span>\n </label>\n </div>\n\n <div v-if=\"form.submitError\" class=\"alert alert-error mt-2\">\n <span>{{ form.submitError }}</span>\n </div>\n\n <div class=\"flex justify-end gap-2 mt-6\">\n <button type=\"button\" class=\"btn btn-ghost\" @click=\"closeModal\">Cancel</button>\n <ZiniaSubmitButton submitText=\"Update Note\" submittingText=\"Updating...\" />\n </div>\n\n <ZiniaFormErrorsSummary title=\"Please fix the following errors:\" />\n </ZiniaForm>\n </div>\n <form method=\"dialog\" class=\"modal-backdrop\">\n <button @click=\"closeModal\">close</button>\n </form>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { ref, watch } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { useMutation } from '../../../composables/useMutation';\nimport { useQuery } from '../../../composables/useQuery';\nimport type { NoteRow } from '../noteRowSchema';\nimport { noteUpdateMetadata } from '../noteUpdateMetadata';\n\ninterface Props {\n note: NoteRow | null;\n isOpen: boolean;\n}\n\ninterface Emits {\n (e: 'close'): void;\n (e: 'success'): void;\n}\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst modal = ref<HTMLDialogElement>();\n\n// Internal note toggle state\nconst isInternalNote = ref(false);\n\n// Fetch note tags for combobox\nconst {\n data: noteTagsData,\n loading: noteTagsLoading,\n error: noteTagsError,\n refetch: refetchNoteTags,\n} = useQuery((api) => api.notes.getNoteTags());\n\n// Load note tags for combobox options\nconst loadNoteTags = async () => {\n // Wait for query to complete\n while (noteTagsLoading.value) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n if (noteTagsError.value) {\n return [];\n }\n\n const tags = noteTagsData.value || [];\n\n return tags.map((tag: string) => ({\n value: tag,\n label: tag,\n }));\n};\n\nconst {\n form,\n zinia,\n ZiniaForm,\n ZiniaSubmitButton,\n ZiniaFormErrorsSummary,\n clearSavedFormState,\n refreshFormData,\n} = useForm(noteUpdateMetadata, {\n storeName: `edit-note-form-${props.note?.id || 'new'}`,\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n dataLoaders: {\n tag: loadNoteTags,\n },\n fetchData: async () => {\n if (!props.note) {\n return { body: '', tag: null };\n }\n return {\n body: props.note.body || '',\n tag: props.note.tag || null,\n };\n },\n});\n\nconst { mutate: updateNote } = useMutation(\n (api, input: { id: string; body: string; tag?: string | null }) =>\n api.notes.updateNote(input),\n {\n invalidate: /^notes?:/,\n onSuccess: () => {\n // Refetch tags to include any new tags\n refetchNoteTags();\n },\n },\n);\n\nconst handleSubmit = async (formData: any) => {\n if (!props.note) {\n throw new Error('No note selected for editing');\n }\n\n const response = await updateNote({\n id: props.note.id,\n body: formData.body,\n tag: formData.tag || null,\n });\n\n if (!response) {\n throw new Error('Failed to update note');\n }\n\n return response;\n};\n\nconst handleSuccess = async () => {\n clearSavedFormState();\n refreshFormData(); // Reset form to initial state\n toast.success('Note updated successfully!');\n emit('success');\n closeModal();\n};\n\nconst handleError = (error: Error | unknown) => {\n form.setSubmitError(error instanceof Error ? error.message : 'An unknown error occurred');\n};\n\nconst closeModal = () => {\n emit('close');\n};\n\n// Watch for modal open/close\nwatch(\n () => props.isOpen,\n (isOpen) => {\n if (isOpen && modal.value) {\n modal.value.showModal();\n } else if (!isOpen && modal.value) {\n modal.value.close();\n // Reset form when modal closes\n refreshFormData();\n }\n },\n);\n\n// Watch for note changes to refresh form data\nwatch(\n () => props.note,\n () => {\n if (props.note && props.isOpen) {\n form.setValue('body', props.note.body || '');\n form.setValue('tag', props.note.tag || null);\n isInternalNote.value = props.note.is_internal || false;\n }\n },\n { immediate: true },\n);\n</script>\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { NoteCreateSchema } from '@dragonmastery/dragoncore-shared';\n\nexport const noteCreateMetadata = withMetadata(\n NoteCreateSchema.pick({ body: true, is_internal: true, tag: true }),\n 'noteCreateForm',\n {\n body: {\n label: 'Note',\n placeholder: 'Enter your note here...',\n inputType: 'textarea',\n helpText: 'Add a note about this record',\n },\n is_internal: {\n label: 'Internal Note',\n helpText: 'Check this box to make this note visible only to staff',\n },\n tag: {\n label: 'Tag',\n inputType: 'combobox',\n helpText: 'Optional tag to categorize this note',\n },\n },\n);\n","import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { NoteReadSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\nexport const noteRowSchemaWithMetadata = withMetadata(NoteReadSchema, 'noteRowSchema', {\n body: { label: 'Note' },\n tag: { label: 'Tag', sortable: true },\n is_internal: { label: 'Visibility', sortable: true },\n created_at: { label: 'Created', sortable: true },\n created_by: { label: 'Created By', sortable: true },\n updated_at: { label: 'Updated', sortable: true },\n});\n\nexport type NoteRow = z.infer<typeof NoteReadSchema>;\n","<template>\n <div class=\"space-y-6\">\n <!-- Add Note Form -->\n <div class=\"mt-4\">\n <ZiniaForm\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"\"\n subtitle=\"\"\n >\n <zinia.TagField :select-options=\"form.extraData.tag || []\" :allow-create=\"true\" />\n <zinia.BodyField />\n\n <div v-if=\"form.submitError\" class=\"alert alert-error mt-2\">\n <span>{{ form.submitError }}</span>\n </div>\n\n <div class=\"flex justify-end mt-6\">\n <ZiniaSubmitButton submitText=\"Add Note\" submittingText=\"Adding...\" />\n </div>\n\n <ZiniaFormErrorsSummary title=\"Please fix the following errors:\" />\n </ZiniaForm>\n </div>\n\n <!-- Notes Table -->\n <ZiniaDataTable>\n <template #cell-created_by=\"{ row }\">\n {{ row.created_by_display_name ?? row.created_by ?? '-' }}\n </template>\n <template #cell-created_at=\"{ row }\">\n {{ formatSystemTimestamp(row.created_at) }}\n </template>\n\n <template #cell-tag=\"{ row }\">\n {{ row.tag || '-' }}\n </template>\n\n <template #cell-updated_at=\"{ row }\">\n {{ row.updated_at ? formatSystemTimestamp(row.updated_at) : '-' }}\n </template>\n\n <template #cell-body=\"{ row }\">\n <div class=\"whitespace-pre-wrap\">\n {{ row.body || 'No content' }}\n </div>\n </template>\n </ZiniaDataTable>\n\n <!-- Edit Modal -->\n <EditNoteModal\n :note=\"selectedNote\"\n :is-open=\"isEditModalOpen\"\n @close=\"closeEditModal\"\n @success=\"handleEditSuccess\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { executeWithAuth } from '../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../utils/EnhancedRefreshTokenHandler';\nimport { useMutation } from '../../../composables/useMutation';\nimport { useQuery } from '../../../composables/useQuery';\nimport { formatSystemTimestamp } from '../../../utils/convertToLocalDateTime';\nimport EditNoteModal from './EditNoteModal.vue';\nimport { noteCreateMetadata } from '../noteFormMetadata';\nimport { noteRowSchemaWithMetadata, type NoteRow } from '../noteRowSchema';\nimport { ActionIcons, useCursorDataTable, useForm } from '@dragonmastery/zinia-forms-core';\nimport { OPERATORS, type NoteFiltersDto } from '@dragonmastery/dragoncore-shared';\nimport { computed, ref, watch } from 'vue';\nimport { toast } from 'vue3-toastify';\n\ninterface Props {\n recordId: string;\n recordType: string;\n mode?: 'customer' | 'internal';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n mode: 'customer',\n});\n\n// Edit modal state\nconst selectedNote = ref<NoteRow | null>(null);\nconst isEditModalOpen = ref(false);\n\n// Computed properties for component intelligence\nconst isInternalNote = computed(() => {\n // Determine internal state based on mode\n return props.mode === 'internal';\n});\n\n// Query filters state\nconst queryFilters = ref<NoteFiltersDto>({\n record_id: { operator: OPERATORS.EQUALS, value: props.recordId },\n record_type: { operator: OPERATORS.EQUALS, value: props.recordType as any },\n});\n\n// Pagination token for breadcrumb navigation\nconst currentPaginationToken = ref<string | undefined | null>();\n\n// Fetch note tags for filter and form\nconst {\n data: noteTagsData,\n loading: noteTagsLoading,\n error: noteTagsError,\n refetch: refetchNoteTags,\n} = useQuery((api) => api.notes.getNoteTags());\n\n// Load note tags for filter options and form combobox\n// This function reads from noteTagsData.value, which is reactive\n// When refetchNoteTags() is called, noteTagsData.value updates\n// The next time this function is called (when filter dropdown opens), it will get fresh data\nconst loadNoteTags = async () => {\n // If query is loading, wait for it to complete to ensure we have fresh data\n while (noteTagsLoading.value) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n if (noteTagsError.value) {\n return [];\n }\n\n const tags = noteTagsData.value || [];\n\n return tags.map((tag: string) => ({\n value: tag,\n label: tag,\n }));\n};\n\n// Form setup\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaFormErrorsSummary, refreshFormData } =\n useForm(noteCreateMetadata, {\n storeName: `note-form-${props.recordId}`,\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n dataLoaders: {\n tag: loadNoteTags,\n },\n fetchData: async () => ({\n body: '',\n tag: null,\n is_internal: isInternalNote.value,\n }),\n });\n\n// Data table configuration\nconst { ZiniaDataTable, refresh } = useCursorDataTable(noteRowSchemaWithMetadata, {\n fetchData: async ({ cursor, pageSize, sort, filters, search }) => {\n // Build query variables\n const variables: NoteFiltersDto = {\n first: pageSize,\n sortBy: sort?.field ? (sort.field as string) : 'created_at',\n sortDirection: (sort?.direction === 'asc' ? 'asc' : 'desc') as any,\n ...(cursor ? { after: cursor } : {}),\n ...(currentPaginationToken.value\n ? { paginationToken: currentPaginationToken.value }\n : {}),\n ...(search ? { search } : {}),\n record_id: { operator: OPERATORS.EQUALS, value: props.recordId },\n record_type: { operator: OPERATORS.EQUALS, value: props.recordType as any },\n ...filters,\n };\n\n // Apply visibility filter based on mode\n if (props.mode === 'customer') {\n variables.is_internal = { operator: OPERATORS.EQUALS, value: false };\n } else if (props.mode === 'internal') {\n variables.is_internal = { operator: OPERATORS.EQUALS, value: true };\n }\n // For 'all' mode, no filter is applied (shows everything)\n\n // Update query filters and execute\n queryFilters.value = variables;\n const result = await executeWithAuth(\n async (api) => {\n return await api.notes.getNotes(variables);\n },\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n currentPaginationToken.value = result?.pageInfo?.paginationToken;\n\n // Return paginated data\n return {\n data: result?.items || [],\n hasNextPage: result?.pageInfo?.hasNextPage ?? false,\n hasPreviousPage: result?.pageInfo?.hasPreviousPage ?? false,\n prevPageCursor: result?.pageInfo?.prevPageCursor ?? undefined,\n nextPageCursor: result?.pageInfo?.nextPageCursor ?? undefined,\n };\n },\n\n // Column configuration\n columns: {\n created_by: {\n label: 'Created By',\n field: 'created_by',\n sortable: true,\n verticalAlign: 'top',\n },\n updated_at: {\n label: 'Updated',\n field: 'updated_at',\n sortable: true,\n verticalAlign: 'top',\n },\n tag: {\n label: 'Tag',\n field: 'tag',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptionsLoader: loadNoteTags,\n verticalAlign: 'top',\n },\n body: {\n label: 'Note',\n field: 'body',\n sortable: false,\n },\n },\n\n // Action buttons\n actions: {\n column: {\n verticalAlign: 'top',\n },\n items: [\n {\n key: 'edit',\n icon: ActionIcons.edit,\n size: 'xs',\n variant: 'primary',\n type: 'button',\n onClick: (row: NoteRow) => openEditModal(row),\n },\n ],\n },\n\n // Pagination settings\n pagination: {\n pageSize: 25,\n },\n});\n\n// Mutations\nconst { mutate: createNote } = useMutation((api, input: any) => api.notes.createNote(input), {\n invalidate: /^notes?:/,\n onSuccess: () => {\n // Refetch tags to include any new tags\n refetchNoteTags();\n },\n});\n\n// Form handlers\nconst handleSubmit = async (formData: any) => {\n const result = await createNote({\n record_id: props.recordId,\n record_type: props.recordType,\n body: formData.body,\n tag: formData.tag || null,\n is_internal: isInternalNote.value,\n });\n refresh();\n return result;\n};\n\nconst handleSuccess = async () => {\n refreshFormData();\n toast.success('Note added successfully!');\n refresh();\n};\n\nconst handleError = (error: Error | unknown) => {\n form.setSubmitError(error instanceof Error ? error.message : 'An unknown error occurred');\n};\n\n// Edit modal handlers\nconst openEditModal = (note: NoteRow) => {\n selectedNote.value = note;\n isEditModalOpen.value = true;\n};\n\nconst closeEditModal = () => {\n isEditModalOpen.value = false;\n selectedNote.value = null;\n};\n\nconst handleEditSuccess = async () => {\n // Refetch tags to include any new tags from the updated note\n await refetchNoteTags();\n // Refresh the data table to show updated note\n refresh();\n};\n\n// Watch for changes in recordId or recordType to refresh the data table\nwatch(\n () => [props.recordId, props.recordType],\n () => {\n if (props.recordId && props.recordType) {\n refresh();\n }\n },\n);\n\n// Watch for changes in noteTagsData to refresh form's data loaders\n// This ensures the create note form's tag combobox gets updated options\nwatch(\n noteTagsData,\n async () => {\n // Reload the tag data loader to refresh form.extraData.tag\n if (form.extraData && form.extraData.tag !== undefined) {\n const newTags = await loadNoteTags();\n form.extraData.tag = newTags;\n }\n },\n { deep: true },\n);\n</script>\n","<template>\n <NoteList :recordId=\"team_id\" recordType=\"team\" 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 team_id = route.params.id as string;\n</script>\n"],"mappings":";;;;;;;;;;;AAGA,MAAa,qBAAqB,aAChC,iBAAiB,KAAK;CAAE,MAAM;CAAM,KAAK;CAAM,CAAC,EAChD,kBACA;CACE,MAAM;EACJ,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACX;CACD,KAAK;EACH,OAAO;EACP,WAAW;EACX,UAAU;EACX;CACF,CACF;;;;;;;;;;;;;;;;;;;;EC2CD,MAAM,QAAQ;EACd,MAAM,OAAO;EAEb,MAAM,QAAQ,KAAwB;EAGtC,MAAM,iBAAiB,IAAI,MAAM;EAGjC,MAAM,EACJ,MAAM,cACN,SAAS,iBACT,OAAO,eACP,SAAS,oBACP,UAAU,QAAQ,IAAI,MAAM,aAAa,CAAC;EAG9C,MAAM,eAAe,YAAY;AAE/B,UAAO,gBAAgB,MACrB,OAAM,IAAI,SAAS,YAAY,WAAW,SAAS,IAAI,CAAC;AAG1D,OAAI,cAAc,MAChB,QAAO,EAAE;AAKX,WAFa,aAAa,SAAS,EAAE,EAEzB,KAAK,SAAiB;IAChC,OAAO;IACP,OAAO;IACR,EAAE;;EAGL,MAAM,EACJ,MACA,OACA,WACA,mBACA,wBACA,qBACA,oBACE,QAAQ,oBAAoB;GAC9B,WAAW,kBAAkB,MAAM,MAAM,MAAM;GAC/C,uBAAuB;GACvB,aAAa;GACb,aAAa,EACX,KAAK,cACN;GACD,WAAW,YAAY;AACrB,QAAI,CAAC,MAAM,KACT,QAAO;KAAE,MAAM;KAAI,KAAK;KAAM;AAEhC,WAAO;KACL,MAAM,MAAM,KAAK,QAAQ;KACzB,KAAK,MAAM,KAAK,OAAO;KACxB;;GAEJ,CAAC;EAEF,MAAM,EAAE,QAAQ,eAAe,aAC5B,KAAK,UACJ,IAAI,MAAM,WAAW,MAAM,EAC7B;GACE,YAAY;GACZ,iBAAiB;AAEf,qBAAiB;;GAEpB,CACF;EAED,MAAM,eAAe,OAAO,aAAkB;AAC5C,OAAI,CAAC,MAAM,KACT,OAAM,IAAI,MAAM,+BAA+B;GAGjD,MAAM,WAAW,MAAM,WAAW;IAChC,IAAI,MAAM,KAAK;IACf,MAAM,SAAS;IACf,KAAK,SAAS,OAAO;IACtB,CAAC;AAEF,OAAI,CAAC,SACH,OAAM,IAAI,MAAM,wBAAwB;AAG1C,UAAO;;EAGT,MAAM,gBAAgB,YAAY;AAChC,wBAAqB;AACrB,oBAAiB;AACjB,SAAM,QAAQ,6BAA6B;AAC3C,QAAK,UAAU;AACf,eAAY;;EAGd,MAAM,eAAe,UAA2B;AAC9C,QAAK,eAAe,iBAAiB,QAAQ,MAAM,UAAU,4BAA4B;;EAG3F,MAAM,mBAAmB;AACvB,QAAK,QAAQ;;AAIf,cACQ,MAAM,SACX,WAAW;AACV,OAAI,UAAU,MAAM,MAClB,OAAM,MAAM,WAAW;YACd,CAAC,UAAU,MAAM,OAAO;AACjC,UAAM,MAAM,OAAO;AAEnB,qBAAiB;;IAGtB;AAGD,cACQ,MAAM,YACN;AACJ,OAAI,MAAM,QAAQ,MAAM,QAAQ;AAC9B,SAAK,SAAS,QAAQ,MAAM,KAAK,QAAQ,GAAG;AAC5C,SAAK,SAAS,OAAO,MAAM,KAAK,OAAO,KAAK;AAC5C,mBAAe,QAAQ,MAAM,KAAK,eAAe;;KAGrD,EAAE,WAAW,MAAM,CACpB;;uBAjMC,mBAuCS,UAAA;aAvCG;IAAJ,KAAI;IAAQ,OAAM;OACxB,mBAkCM,OAlCN,cAkCM,CAAA,OAAA,OAAA,OAAA,KAjCJ,mBAAiD,MAAA,EAA7C,OAAM,0BAAwB,EAAC,aAAS,GAAA,GAE5C,YA8BY,MAAA,UAAA,EAAA;IA7BT,gBAAe;IACf,WAAS;IACT,SAAO;IACR,OAAM;IACN,UAAS;;2BAEyE;KAAlF,YAAkF,MAAA,MAAA,CAAA,UAAA;MAAjE,kBAAgB,MAAA,KAAI,CAAC,UAAU,OAAG,EAAA;MAAS,gBAAc;;KAC1E,YAAmB,MAAA,MAAA,CAAA,UAAA;KAEnB,mBAAA,uCAA2C;KAC3C,mBAOM,OAPN,cAOM,CANJ,mBAKQ,SALR,cAKQ,CAAA,OAAA,OAAA,OAAA,KAJN,mBAA0C,QAAA,EAApC,OAAM,cAAY,EAAC,cAAU,GAAA,GACnC,mBAEO,QAAA,EAFD,OAAK,eAAA,CAAC,SAAgB,eAAA,QAAc,kBAAA,aAAA,CAAA,EAAA,kBACrC,eAAA,QAAc,aAAA,WAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;KAKZ,MAAA,KAAI,CAAC,eAAA,WAAA,EAAhB,mBAEM,OAFN,cAEM,CADJ,mBAAmC,QAAA,MAAA,gBAA1B,MAAA,KAAI,CAAC,YAAW,EAAA,EAAA,CAAA,CAAA,IAAA,mBAAA,QAAA,KAAA;KAG3B,mBAGM,OAHN,cAGM,CAFJ,mBAA+E,UAAA;MAAvE,MAAK;MAAS,OAAM;MAAiB,SAAO;QAAY,SAAM,EACtE,YAA2E,MAAA,kBAAA,EAAA;MAAxD,YAAW;MAAc,gBAAe;;KAG7D,YAAmE,MAAA,uBAAA,EAAA,EAA3C,OAAM,oCAAkC,CAAA;;;SAGpE,mBAEO,QAAA;IAFD,QAAO;IAAS,OAAM;OAC1B,mBAA0C,UAAA,EAAjC,SAAO,YAAU,EAAE,QAAK,CAAA,CAAA,CAAA;;;;;;;;ACnCvC,MAAa,qBAAqB,aAChC,iBAAiB,KAAK;CAAE,MAAM;CAAM,aAAa;CAAM,KAAK;CAAM,CAAC,EACnE,kBACA;CACE,MAAM;EACJ,OAAO;EACP,aAAa;EACb,WAAW;EACX,UAAU;EACX;CACD,aAAa;EACX,OAAO;EACP,UAAU;EACX;CACD,KAAK;EACH,OAAO;EACP,WAAW;EACX,UAAU;EACX;CACF,CACF;;;;ACnBD,MAAa,4BAA4B,aAAa,gBAAgB,iBAAiB;CACrF,MAAM,EAAE,OAAO,QAAQ;CACvB,KAAK;EAAE,OAAO;EAAO,UAAU;EAAM;CACrC,aAAa;EAAE,OAAO;EAAc,UAAU;EAAM;CACpD,YAAY;EAAE,OAAO;EAAW,UAAU;EAAM;CAChD,YAAY;EAAE,OAAO;EAAc,UAAU;EAAM;CACnD,YAAY;EAAE,OAAO;EAAW,UAAU;EAAM;CACjD,CAAC;;;;;;;;;;;;;;;;;;;;ECqEF,MAAM,QAAQ;EAKd,MAAM,eAAe,IAAoB,KAAK;EAC9C,MAAM,kBAAkB,IAAI,MAAM;EAGlC,MAAM,iBAAiB,eAAe;AAEpC,UAAO,MAAM,SAAS;IACtB;EAGF,MAAM,eAAe,IAAoB;GACvC,WAAW;IAAE,UAAU,UAAU;IAAQ,OAAO,MAAM;IAAU;GAChE,aAAa;IAAE,UAAU,UAAU;IAAQ,OAAO,MAAM;IAAmB;GAC5E,CAAC;EAGF,MAAM,yBAAyB,KAAgC;EAG/D,MAAM,EACJ,MAAM,cACN,SAAS,iBACT,OAAO,eACP,SAAS,oBACP,UAAU,QAAQ,IAAI,MAAM,aAAa,CAAC;EAM9C,MAAM,eAAe,YAAY;AAE/B,UAAO,gBAAgB,MACrB,OAAM,IAAI,SAAS,YAAY,WAAW,SAAS,IAAI,CAAC;AAG1D,OAAI,cAAc,MAChB,QAAO,EAAE;AAKX,WAFa,aAAa,SAAS,EAAE,EAEzB,KAAK,SAAiB;IAChC,OAAO;IACP,OAAO;IACR,EAAE;;EAIL,MAAM,EAAE,MAAM,OAAO,WAAW,mBAAmB,wBAAwB,oBACzE,QAAQ,oBAAoB;GAC1B,WAAW,aAAa,MAAM;GAC9B,uBAAuB;GACvB,aAAa;GACb,aAAa,EACX,KAAK,cACN;GACD,WAAW,aAAa;IACtB,MAAM;IACN,KAAK;IACL,aAAa,eAAe;IAC7B;GACF,CAAC;EAGJ,MAAM,EAAE,gBAAgB,YAAY,mBAAmB,2BAA2B;GAChF,WAAW,OAAO,EAAE,QAAQ,UAAU,MAAM,SAAS,aAAa;IAEhE,MAAMA,YAA4B;KAChC,OAAO;KACP,QAAQ,MAAM,QAAS,KAAK,QAAmB;KAC/C,eAAgB,MAAM,cAAc,QAAQ,QAAQ;KACpD,GAAI,SAAS,EAAE,OAAO,QAAQ,GAAG,EAAE;KACnC,GAAI,uBAAuB,QACvB,EAAE,iBAAiB,uBAAuB,OAAM,GAChD,EAAE;KACN,GAAI,SAAS,EAAE,QAAQ,GAAG,EAAE;KAC5B,WAAW;MAAE,UAAU,UAAU;MAAQ,OAAO,MAAM;MAAU;KAChE,aAAa;MAAE,UAAU,UAAU;MAAQ,OAAO,MAAM;MAAmB;KAC3E,GAAG;KACJ;AAGD,QAAI,MAAM,SAAS,WACjB,WAAU,cAAc;KAAE,UAAU,UAAU;KAAQ,OAAO;KAAO;aAC3D,MAAM,SAAS,WACxB,WAAU,cAAc;KAAE,UAAU,UAAU;KAAQ,OAAO;KAAM;AAKrE,iBAAa,QAAQ;IACrB,MAAM,SAAS,MAAM,gBACnB,OAAO,QAAQ;AACb,YAAO,MAAM,IAAI,MAAM,SAAS,UAAU;OAE5C,EAAE,qBAAqB,wBAAwB,EAAE,CAClD;AACD,2BAAuB,QAAQ,QAAQ,UAAU;AAGjD,WAAO;KACL,MAAM,QAAQ,SAAS,EAAE;KACzB,aAAa,QAAQ,UAAU,eAAe;KAC9C,iBAAiB,QAAQ,UAAU,mBAAmB;KACtD,gBAAgB,QAAQ,UAAU,kBAAkB;KACpD,gBAAgB,QAAQ,UAAU,kBAAkB;KACrD;;GAIH,SAAS;IACP,YAAY;KACV,OAAO;KACP,OAAO;KACP,UAAU;KACV,eAAe;KAChB;IACD,YAAY;KACV,OAAO;KACP,OAAO;KACP,UAAU;KACV,eAAe;KAChB;IACD,KAAK;KACH,OAAO;KACP,OAAO;KACP,UAAU;KACV,YAAY;KACZ,YAAY;KACZ,qBAAqB;KACrB,eAAe;KAChB;IACD,MAAM;KACJ,OAAO;KACP,OAAO;KACP,UAAU;KACX;IACF;GAGD,SAAS;IACP,QAAQ,EACN,eAAe,OAChB;IACD,OAAO,CACL;KACE,KAAK;KACL,MAAM,YAAY;KAClB,MAAM;KACN,SAAS;KACT,MAAM;KACN,UAAU,QAAiB,cAAc,IAAI;KAC9C,CACF;IACF;GAGD,YAAY,EACV,UAAU,IACX;GACF,CAAC;EAGF,MAAM,EAAE,QAAQ,eAAe,aAAa,KAAK,UAAe,IAAI,MAAM,WAAW,MAAM,EAAE;GAC3F,YAAY;GACZ,iBAAiB;AAEf,qBAAiB;;GAEpB,CAAC;EAGF,MAAM,eAAe,OAAO,aAAkB;GAC5C,MAAM,SAAS,MAAM,WAAW;IAC9B,WAAW,MAAM;IACjB,aAAa,MAAM;IACnB,MAAM,SAAS;IACf,KAAK,SAAS,OAAO;IACrB,aAAa,eAAe;IAC7B,CAAC;AACF,YAAS;AACT,UAAO;;EAGT,MAAM,gBAAgB,YAAY;AAChC,oBAAiB;AACjB,SAAM,QAAQ,2BAA2B;AACzC,YAAS;;EAGX,MAAM,eAAe,UAA2B;AAC9C,QAAK,eAAe,iBAAiB,QAAQ,MAAM,UAAU,4BAA4B;;EAI3F,MAAM,iBAAiB,SAAkB;AACvC,gBAAa,QAAQ;AACrB,mBAAgB,QAAQ;;EAG1B,MAAM,uBAAuB;AAC3B,mBAAgB,QAAQ;AACxB,gBAAa,QAAQ;;EAGvB,MAAM,oBAAoB,YAAY;AAEpC,SAAM,iBAAiB;AAEvB,YAAS;;AAIX,cACQ,CAAC,MAAM,UAAU,MAAM,WAAW,QAClC;AACJ,OAAI,MAAM,YAAY,MAAM,WAC1B,UAAS;IAGd;AAID,QACE,cACA,YAAY;AAEV,OAAI,KAAK,aAAa,KAAK,UAAU,QAAQ,QAAW;IACtD,MAAM,UAAU,MAAM,cAAc;AACpC,SAAK,UAAU,MAAM;;KAGzB,EAAE,MAAM,MAAM,CACf;;uBA/TC,mBAwDM,OAxDN,YAwDM;IAvDJ,mBAAA,kBAAsB;IACtB,mBAqBM,OArBN,YAqBM,CApBJ,YAmBY,MAAA,UAAA,EAAA;KAlBT,gBAAe;KACf,WAAS;KACT,SAAO;KACR,OAAM;KACN,UAAS;;4BAEyE;MAAlF,YAAkF,MAAA,MAAA,CAAA,UAAA;OAAjE,kBAAgB,MAAA,KAAI,CAAC,UAAU,OAAG,EAAA;OAAS,gBAAc;;MAC1E,YAAmB,MAAA,MAAA,CAAA,UAAA;MAER,MAAA,KAAI,CAAC,eAAA,WAAA,EAAhB,mBAEM,OAFN,YAEM,CADJ,mBAAmC,QAAA,MAAA,gBAA1B,MAAA,KAAI,CAAC,YAAW,EAAA,EAAA,CAAA,CAAA,IAAA,mBAAA,QAAA,KAAA;MAG3B,mBAEM,OAFN,YAEM,CADJ,YAAsE,MAAA,kBAAA,EAAA;OAAnD,YAAW;OAAW,gBAAe;;MAG1D,YAAmE,MAAA,uBAAA,EAAA,EAA3C,OAAM,oCAAkC,CAAA;;;;IAIpE,mBAAA,gBAAoB;IACpB,YAqBiB,MAAA,eAAA,EAAA,MAAA;KApBJ,mBAAe,SACkC,EAD9B,UAAG,CAAA,gCAC5B,IAAI,2BAA2B,IAAI,cAAU,IAAA,EAAA,EAAA,CAAA,CAAA;KAEvC,mBAAe,SACmB,EADf,UAAG,CAAA,gCAC5B,MAAA,sBAAqB,CAAC,IAAI,WAAU,CAAA,EAAA,EAAA,CAAA,CAAA;KAG9B,YAAQ,SACG,EADC,UAAG,CAAA,gCACrB,IAAI,OAAG,IAAA,EAAA,EAAA,CAAA,CAAA;KAGD,mBAAe,SAC0C,EADtC,UAAG,CAAA,gCAC5B,IAAI,aAAa,MAAA,sBAAqB,CAAC,IAAI,WAAU,GAAA,IAAA,EAAA,EAAA,CAAA,CAAA;KAG/C,aAAS,SAGZ,EAHgB,UAAG,CACzB,mBAEM,OAFN,YAEM,gBADD,IAAI,QAAI,aAAA,EAAA,EAAA,CAAA,CAAA;;;IAKjB,mBAAA,eAAmB;IACnB,YAKE,uBAAA;KAJC,MAAM,aAAA;KACN,WAAS,gBAAA;KACT,SAAO;KACP,WAAS;;;;;;;;;;;;;EC9ChB,MAAM,UADQ,UAAU,CACF,OAAO;;uBAR3B,YAAkE,kBAAA;IAAvD,UAAU,MAAA,QAAO;IAAE,YAAW;IAAO,MAAK"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import "./useRpcAuth-Dp2sec-X.js";
|
|
2
|
-
import "./useQueryCache-DqcDMsxb.js";
|
|
3
|
-
import "./useMutation-B4_S4Xoa.js";
|
|
4
|
-
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { t as TeamNotesTab_default } from "./TeamNotesTab-BhVRLG8h.js";
|
|
6
|
-
|
|
7
|
-
export { TeamNotesTab_default as default };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import "./useRpcAuth-Dp2sec-X.js";
|
|
2
|
-
import "./useQueryCache-DqcDMsxb.js";
|
|
3
|
-
import "./useMutation-B4_S4Xoa.js";
|
|
4
|
-
import "./useQuery-B7ndu5_P.js";
|
|
5
|
-
import { ut as TeamParent_default } from "./src-CHw8DdkR.js";
|
|
6
|
-
import "./AppLink-CHMMrSFI.js";
|
|
7
|
-
import "./TimelineSystemEvent-D58zN850.js";
|
|
8
|
-
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
-
import "./Appearance-BfPdKMXw.js";
|
|
10
|
-
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
-
import "./EditTeamMemberForm-CKbKomrL.js";
|
|
12
|
-
import "./TeamHistoryTab-CNelXR3Q.js";
|
|
13
|
-
import "./UserProfilePage-uAIfC_NW.js";
|
|
14
|
-
import "./ChangePasswordPage-DCews8GU.js";
|
|
15
|
-
import "./TeamNotesTab-BhVRLG8h.js";
|
|
16
|
-
import "./CustomerSupportTicketParent-BzY4pmBk.js";
|
|
17
|
-
import "./SupportTicketDevLifecycleBadge-Ba-Rm6QW.js";
|
|
18
|
-
import "./StaffSupportTicketParent-CWWhaM37.js";
|
|
19
|
-
import "./LoginForm-C85U2E2r.js";
|
|
20
|
-
import "./Signup-hpV8J5cM.js";
|
|
21
|
-
import "./ForgotPassword-D3bjL48L.js";
|
|
22
|
-
import "./Logout-DZuWLh0O.js";
|
|
23
|
-
import "./UserListPage-OGYOLwlw.js";
|
|
24
|
-
import "./CreateUserPage-B8qeBZij.js";
|
|
25
|
-
import "./EditUserPage-XqF25iwz.js";
|
|
26
|
-
|
|
27
|
-
export { TeamParent_default as default };
|