@dragonmastery/dragoncore-vue 0.0.16 → 0.0.17
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/dist/{ChangePasswordPage-BXPuAPAw.js → ChangePasswordPage-D2Ci00Sh.js} +1 -1
- package/dist/{ChangePasswordPage-BXPuAPAw.js.map → ChangePasswordPage-D2Ci00Sh.js.map} +1 -1
- package/dist/{ChangePasswordPage-D4rzAT2e.js → ChangePasswordPage-DqnWhaUa.js} +1 -1
- package/dist/CreateTeamForm-DH0k3ra-.js +32 -0
- package/dist/CreateTeamMemberForm-DR0krDAy.js +32 -0
- package/dist/{CreateUserPage-25iC5JNs.js → CreateUserPage-DbT_l32W.js} +1 -1
- package/dist/{CreateUserPage-25iC5JNs.js.map → CreateUserPage-DbT_l32W.js.map} +1 -1
- package/dist/CreateUserPage-cduuWl9g.js +6 -0
- package/dist/CreditBalanceDashboard-Bh6G7DdM.js +32 -0
- package/dist/CreditManagement-BGqIkJf8.js +32 -0
- package/dist/CustomerCreateSupportTicketForm-DROOc8QU.js +32 -0
- package/dist/{CustomerSupportTicketDetailPage-DDMwp3lY.js → CustomerSupportTicketDetailPage-CPnNMJRz.js} +3 -3
- package/dist/{CustomerSupportTicketDetailPage-DDMwp3lY.js.map → CustomerSupportTicketDetailPage-CPnNMJRz.js.map} +1 -1
- package/dist/CustomerSupportTicketList-BdCyjYTK.js +32 -0
- package/dist/{CustomerSupportTicketParent-0TLLQujw.js → CustomerSupportTicketParent-C_vgUq3B.js} +2 -2
- package/dist/{CustomerSupportTicketParent-0TLLQujw.js.map → CustomerSupportTicketParent-C_vgUq3B.js.map} +1 -1
- package/dist/{CustomerSupportTicketParent-BItQs6qz.js → CustomerSupportTicketParent-Ex-sumQ_.js} +1 -1
- package/dist/CustomerSupportTicketSuccess-BiccWyEb.js +32 -0
- package/dist/EditTeamForm-COtlNY2k.js +32 -0
- package/dist/{EditUserPage-DFMiGciD.js → EditUserPage-0lqrgP5T.js} +1 -1
- package/dist/{EditUserPage-DFMiGciD.js.map → EditUserPage-0lqrgP5T.js.map} +1 -1
- package/dist/{TeamNotesTab-CpGM8HXg.js → EditUserPage-BgMNOa8G.js} +2 -2
- package/dist/{ForgotPassword-DYN5QAho.js → ForgotPassword-CiEfdVT-.js} +10 -6
- package/dist/ForgotPassword-CiEfdVT-.js.map +1 -0
- package/dist/{ForgotPassword-Cq1lKwSI.js → ForgotPassword-DTqvZE3S.js} +1 -1
- package/dist/{LoginForm-DLdl5qLw.js → LoginForm-INwjqMmZ.js} +1 -1
- package/dist/{LoginForm-Bv4pzTYW.js → LoginForm-o4gJ0QwA.js} +14 -14
- package/dist/LoginForm-o4gJ0QwA.js.map +1 -0
- package/dist/{Logout-7daBTqXu.js → Logout-D8Ql8-OY.js} +9 -6
- package/dist/Logout-D8Ql8-OY.js.map +1 -0
- package/dist/{Logout-DukqZAYW.js → Logout-KA5WB93_.js} +1 -1
- package/dist/{MfaSetup-C6Pku6P_.js → MfaSetup-B3-QSuKe.js} +2 -2
- package/dist/{MfaSetup-Drj1hQJ6.js → MfaSetup-DzaJLZtx.js} +12 -7
- package/dist/MfaSetup-DzaJLZtx.js.map +1 -0
- package/dist/{MfaVerify-CeTPsWRU.js → MfaVerify-5DOMPhdq.js} +2 -2
- package/dist/{MfaVerify-DMvK-ius.js → MfaVerify-C04XD4r3.js} +9 -7
- package/dist/MfaVerify-C04XD4r3.js.map +1 -0
- package/dist/ResetPassword-DcVvfMU3.js +92 -0
- package/dist/ResetPassword-DcVvfMU3.js.map +1 -0
- package/dist/ResetPassword-rtEJreLv.js +7 -0
- package/dist/{SavedFiltersPage-BnRm3u1G.js → SavedFiltersPage-PfwukNXV.js} +20 -19
- package/dist/{SavedFiltersPage-BnRm3u1G.js.map → SavedFiltersPage-PfwukNXV.js.map} +1 -1
- package/dist/{Signup-pBflBiRz.js → Signup-DWFxpoGA.js} +1 -1
- package/dist/{Signup-DkImN_pp.js → Signup-Wz2h_ayt.js} +17 -10
- package/dist/Signup-Wz2h_ayt.js.map +1 -0
- package/dist/StaffCreateSupportTicketForm-Cs3puA0j.js +32 -0
- package/dist/{StaffSupportTicketDetailPage-pCzgt0bn.js → StaffSupportTicketDetailPage-DDkJcKVC.js} +4 -4
- package/dist/{StaffSupportTicketDetailPage-pCzgt0bn.js.map → StaffSupportTicketDetailPage-DDkJcKVC.js.map} +1 -1
- package/dist/StaffSupportTicketList-B3HBQJ9r.js +32 -0
- package/dist/{StaffSupportTicketParent-BqMBB52c.js → StaffSupportTicketParent-BiyZAW5w.js} +1 -1
- package/dist/{StaffSupportTicketParent-Hj4m2xeF.js → StaffSupportTicketParent-Bp5pNF45.js} +2 -2
- package/dist/{StaffSupportTicketParent-Hj4m2xeF.js.map → StaffSupportTicketParent-Bp5pNF45.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-CegCdk-v.js +32 -0
- package/dist/{SupportStaffPage-BmcE-1-G.js → SupportStaffPage-DwILSSas.js} +1 -1
- package/dist/{SupportStaffPage-BmcE-1-G.js.map → SupportStaffPage-DwILSSas.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js → SupportTicketDevLifecycleBadge-B2NysMAj.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-Ba-Rm6QW.js.map → SupportTicketDevLifecycleBadge-B2NysMAj.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-DbH9gLlG.js → SupportTicketMaintenancePage-CpK1esq2.js} +1 -1
- package/dist/{SupportTicketMaintenancePage-DbH9gLlG.js.map → SupportTicketMaintenancePage-CpK1esq2.js.map} +1 -1
- package/dist/TeamAttachmentsTab-B6_qHPKJ.js +32 -0
- package/dist/TeamList-DrMqaMvI.js +32 -0
- package/dist/TeamMemberList-CEV6-g3t.js +32 -0
- package/dist/TeamMemberParent-D-MnEdRq.js +32 -0
- package/dist/{EditUserPage-CG9qOvLb.js → TeamNotesTab-BlmZQfCR.js} +2 -2
- package/dist/{TeamNotesTab-CXKv0UF9.js → TeamNotesTab-DBrJGCIe.js} +1 -1
- package/dist/{TeamNotesTab-CXKv0UF9.js.map → TeamNotesTab-DBrJGCIe.js.map} +1 -1
- package/dist/TeamParent-Dw6Njuup.js +32 -0
- package/dist/{TimelineNoteInput-hpCxzQjP.js → TimelineNoteInput-DGDgyGe-.js} +1 -1
- package/dist/{TimelineNoteInput-hpCxzQjP.js.map → TimelineNoteInput-DGDgyGe-.js.map} +1 -1
- package/dist/{UserListPage-DtftDtVo.js → UserListPage-BGDgsd_S.js} +1 -1
- package/dist/{UserListPage-DtftDtVo.js.map → UserListPage-BGDgsd_S.js.map} +1 -1
- package/dist/UserListPage-BZp9fGeT.js +4 -0
- package/dist/{UserProfilePage-Ex-rpoTJ.js → UserProfilePage-D52_Q5yf.js} +1 -1
- package/dist/{UserProfilePage-1UWJUhqk.js → UserProfilePage-DMwDVgXa.js} +1 -1
- package/dist/{UserProfilePage-1UWJUhqk.js.map → UserProfilePage-DMwDVgXa.js.map} +1 -1
- package/dist/{VerifyEmail-tkPdmmBN.js → VerifyEmail-CG1BHGSh.js} +1 -1
- package/dist/{VerifyEmail-De72yrDX.js → VerifyEmail-CUexC8mg.js} +9 -6
- package/dist/VerifyEmail-CUexC8mg.js.map +1 -0
- package/dist/{VerifyEmailRequired-BMnPXJzY.js → VerifyEmailRequired-C35bkaXZ.js} +8 -3
- package/dist/VerifyEmailRequired-C35bkaXZ.js.map +1 -0
- package/dist/ViewTeam-D9PDDpY6.js +32 -0
- package/dist/ViewTeamMember-sJb79wUy.js +32 -0
- package/dist/{displayIdFormatter-B1ZKgofu.js → displayIdFormatter-rSbbsHIX.js} +1 -1
- package/dist/{displayIdFormatter-B1ZKgofu.js.map → displayIdFormatter-rSbbsHIX.js.map} +1 -1
- package/dist/index.d.ts +810 -787
- package/dist/index.js +22 -20
- package/dist/{mfaSchema-DN655dny.js → mfaSchema-_vbG9jiT.js} +1 -1
- package/dist/{mfaSchema-DN655dny.js.map → mfaSchema-_vbG9jiT.js.map} +1 -1
- package/dist/{src-eLdX-D-O.js → src-DYBi81fS.js} +385 -436
- package/dist/src-DYBi81fS.js.map +1 -0
- package/dist/useReturnUrl-DobHOKp3.js +23 -0
- package/dist/useReturnUrl-DobHOKp3.js.map +1 -0
- package/package.json +1 -1
- package/dist/CreateTeamForm-CkjGTLz_.js +0 -31
- package/dist/CreateTeamMemberForm-CVpIyvAR.js +0 -31
- package/dist/CreateUserPage-BvsE7tFH.js +0 -6
- package/dist/CreditBalanceDashboard-B4ql-qT9.js +0 -31
- package/dist/CreditManagement-D99fYSac.js +0 -31
- package/dist/CustomerCreateSupportTicketForm-eMNpLn4_.js +0 -31
- package/dist/CustomerSupportTicketList-DnE-0wkZ.js +0 -31
- package/dist/CustomerSupportTicketSuccess-CBqqfJVd.js +0 -31
- package/dist/EditTeamForm-DhuxhKvO.js +0 -31
- package/dist/ForgotPassword-DYN5QAho.js.map +0 -1
- package/dist/LoginForm-Bv4pzTYW.js.map +0 -1
- package/dist/Logout-7daBTqXu.js.map +0 -1
- package/dist/MfaSetup-Drj1hQJ6.js.map +0 -1
- package/dist/MfaVerify-DMvK-ius.js.map +0 -1
- package/dist/ResetPassword-Bl34xbJ7.js +0 -31
- package/dist/Signup-DkImN_pp.js.map +0 -1
- package/dist/StaffCreateSupportTicketForm-Cy3zALqx.js +0 -31
- package/dist/StaffSupportTicketList-CdsRKYEj.js +0 -31
- package/dist/StaffSupportTicketSuccess-DS52WQ4o.js +0 -31
- package/dist/TeamAttachmentsTab-mB4y2I62.js +0 -31
- package/dist/TeamList-CRc3XZ2k.js +0 -31
- package/dist/TeamMemberList-DcJ0EKv0.js +0 -31
- package/dist/TeamMemberParent-BrDpy4QM.js +0 -31
- package/dist/TeamParent-dplHxTlz.js +0 -31
- package/dist/UserListPage-mOMo6rE7.js +0 -4
- package/dist/VerifyEmail-De72yrDX.js.map +0 -1
- package/dist/VerifyEmailRequired-BMnPXJzY.js.map +0 -1
- package/dist/ViewTeam-B9L8tANd.js +0 -31
- package/dist/ViewTeamMember-DKwVCMp7.js +0 -31
- package/dist/src-eLdX-D-O.js.map +0 -1
- /package/dist/{Appearance-C3WguxT-.js → Appearance-CohgRf-_.js} +0 -0
- /package/dist/{EditTeamMemberForm-poMUw7tK.js → EditTeamMemberForm-8CNRrEIT.js} +0 -0
- /package/dist/{TeamHistoryTab-B5DOTCUd.js → TeamHistoryTab-HXc3zqhQ.js} +0 -0
- /package/dist/{TeamMembersTab-DTJxmb-M.js → TeamMembersTab-CpE9BaCi.js} +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { w as StaffSupportTicketList_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { StaffSupportTicketList_default as default };
|
|
@@ -2,6 +2,6 @@ import "./useRpcAuth-SgNzCAPa.js";
|
|
|
2
2
|
import "./useQueryCache-DIGf3fCM.js";
|
|
3
3
|
import "./useQuery-bvJabe9Q.js";
|
|
4
4
|
import "./useBreadcrumbs-DmgSucoe.js";
|
|
5
|
-
import { t as StaffSupportTicketParent_default } from "./StaffSupportTicketParent-
|
|
5
|
+
import { t as StaffSupportTicketParent_default } from "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
6
6
|
|
|
7
7
|
export { StaffSupportTicketParent_default as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as useQuery } from "./useQuery-bvJabe9Q.js";
|
|
2
2
|
import { n as useBreadcrumbs } from "./useBreadcrumbs-DmgSucoe.js";
|
|
3
|
-
import { t as formatTicketDisplayId } from "./displayIdFormatter-
|
|
3
|
+
import { t as formatTicketDisplayId } from "./displayIdFormatter-rSbbsHIX.js";
|
|
4
4
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, openBlock, provide, resolveComponent, toDisplayString, unref } from "vue";
|
|
5
5
|
import { useRoute } from "vue-router";
|
|
6
6
|
|
|
@@ -63,4 +63,4 @@ var StaffSupportTicketParent_default = _sfc_main;
|
|
|
63
63
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { StaffSupportTicketParent_default as t };
|
|
66
|
-
//# sourceMappingURL=StaffSupportTicketParent-
|
|
66
|
+
//# sourceMappingURL=StaffSupportTicketParent-Bp5pNF45.js.map
|
package/dist/{StaffSupportTicketParent-Hj4m2xeF.js.map → StaffSupportTicketParent-Bp5pNF45.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaffSupportTicketParent-
|
|
1
|
+
{"version":3,"file":"StaffSupportTicketParent-Bp5pNF45.js","names":[],"sources":["../src/slices/support_ticket/staff/StaffSupportTicketParent.vue"],"sourcesContent":["<template>\n <!-- Only show full-page spinner on initial load; refetch keeps content visible -->\n <div v-if=\"isLoading && !ticket\" class=\"flex justify-center items-center p-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"error && !ticket\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ error.message }}</span>\n </div>\n\n <RouterView v-else :ticket=\"ticket\" :isLoading=\"isLoading\" :error=\"error\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { useBreadcrumbs } from '../../../composables/useBreadcrumbs';\nimport { useQuery } from '../../../composables/useQuery';\nimport { computed, provide } from 'vue';\nimport { useRoute } from 'vue-router';\nimport { formatTicketDisplayId } from '../utils/displayIdFormatter';\n\nconst route = useRoute();\nconst ticketId = route.params.id as string;\n\n// Fetch ticket data once at parent level\nconst {\n data,\n loading: isLoading,\n error,\n refetch,\n} = useQuery((api) => api.supportTickets.staffGetTicket(ticketId), {});\n\nconst ticket = computed(() => data.value ?? null);\n\n// Provide refresh function to child components\nconst refreshTicket = async () => {\n await refetch();\n};\n\nprovide('refreshTicket', refreshTicket);\n\n// Manage breadcrumbs at parent level\nuseBreadcrumbs(() => [\n {\n label: 'Staff Support',\n to: { name: 'StaffSupportTicketList' },\n },\n {\n label: ticket.value\n ? formatTicketDisplayId(\n ticket.value.display_id,\n ticket.value.display_id_prefix,\n ticket.value.id,\n )\n : '',\n loading: !ticket.value,\n to: {\n name: 'StaffEditSupportTicket',\n params: { id: ticketId },\n },\n },\n]);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAkCA,MAAM,WADQ,UAAU,CACD,OAAO;EAG9B,MAAM,EACJ,MACA,SAAS,WACT,OACA,YACE,UAAU,QAAQ,IAAI,eAAe,eAAe,SAAS,EAAE,EAAE,CAAC;EAEtE,MAAM,SAAS,eAAe,KAAK,SAAS,KAAK;EAGjD,MAAM,gBAAgB,YAAY;AAChC,SAAM,SAAS;;AAGjB,UAAQ,iBAAiB,cAAc;AAGvC,uBAAqB,CACnB;GACE,OAAO;GACP,IAAI,EAAE,MAAM,0BAA0B;GACvC,EACD;GACE,OAAO,OAAO,QACV,sBACE,OAAO,MAAM,YACb,OAAO,MAAM,mBACb,OAAO,MAAM,GACf,GACA;GACJ,SAAS,CAAC,OAAO;GACjB,IAAI;IACF,MAAM;IACN,QAAQ,EAAE,IAAI,UAAU;IACzB;GACF,CACF,CAAC;;;2DAxEA,mBAAA,+EAAmF,EACxE,MAAA,UAAS,IAAA,CAAK,OAAA,SAAA,WAAA,EAAzB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAAwD,QAAA,EAAlD,OAAM,sCAAoC,EAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAGlC,MAAA,MAAK,IAAA,CAAK,OAAA,SAAA,WAAA,EAA1B,mBAeM,OAfN,YAeM,CAAA,OAAA,OAAA,OAAA,KAdJ,mBAYM,OAAA;IAXJ,OAAM;IACN,OAAM;IACN,MAAK;IACL,SAAQ;OAER,mBAKE,QAAA;IAJA,kBAAe;IACf,mBAAgB;IAChB,gBAAa;IACb,GAAE;cAGN,mBAAgC,QAAA,MAAA,gBAAvB,MAAA,MAAK,CAAC,QAAO,EAAA,EAAA,CAAA,CAAA,KAAA,WAAA,EAGxB,YAA4E,uBAAA;;IAAxD,QAAQ,OAAA;IAAS,WAAW,MAAA,UAAS;IAAG,OAAO,MAAA,MAAK"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { C as StaffSupportTicketSuccess_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { StaffSupportTicketSuccess_default as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupportStaffPage-
|
|
1
|
+
{"version":3,"file":"SupportStaffPage-DwILSSas.js","names":[],"sources":["../src/slices/admin/features/support_staff/SupportStaffPage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Staff</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Users who can triage support tickets. They receive round-robin assignment when new tickets are created.\n </p>\n\n <!-- Add support staff -->\n <div class=\"card bg-base-200 mb-6\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Add Support Staff</h2>\n <div class=\"flex flex-wrap items-end gap-4\">\n <div class=\"form-control flex-1 min-w-[200px]\">\n <label class=\"label\">\n <span class=\"label-text\">User</span>\n </label>\n <select\n v-model=\"selectedUserId\"\n class=\"select select-bordered w-full\"\n :disabled=\"isAdding || !addableUsers.length\"\n >\n <option value=\"\">Select a user...</option>\n <option\n v-for=\"u in addableUsers\"\n :key=\"u.id\"\n :value=\"u.id\"\n >\n {{ u.email }} ({{ u.user_type }})\n </option>\n </select>\n <p v-if=\"!addableUsers.length && !isLoading\" class=\"text-sm text-base-content/50 mt-1\">\n All staff users are already support staff.\n </p>\n </div>\n <button\n class=\"btn btn-primary\"\n :disabled=\"!selectedUserId || isAdding\"\n @click=\"handleAdd\"\n >\n <span v-if=\"isAdding\" class=\"loading loading-spinner loading-sm\"></span>\n {{ isAdding ? 'Adding...' : 'Add' }}\n </button>\n </div>\n <p v-if=\"addError\" class=\"text-sm text-error mt-2\">{{ addError }}</p>\n </div>\n </div>\n\n <!-- List -->\n <div v-if=\"isLoading\" class=\"flex justify-center py-8\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n\n <div v-else-if=\"!(supportStaffPageData?.members ?? []).length\" class=\"alert alert-info\">\n <span>No support staff yet. Add users above to enable triage assignment.</span>\n </div>\n\n <div v-else class=\"overflow-x-auto\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>Email</th>\n <th>Added</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"m in (supportStaffPageData?.members ?? [])\" :key=\"m.id\">\n <td>{{ m.email }}</td>\n <td>{{ formatDate(m.created_at) }}</td>\n <td>\n <button\n class=\"btn btn-sm btn-ghost text-error\"\n :disabled=\"isRemoving === m.user_id\"\n @click=\"handleRemove(m.user_id)\"\n >\n <span v-if=\"isRemoving === m.user_id\" class=\"loading loading-spinner loading-xs\"></span>\n {{ isRemoving === m.user_id ? 'Removing...' : 'Remove' }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { BATCH_MODE } from '../../../../composables/useRpcAuth';\nimport { executeWithAuth } from '../../../../composables/useRpcAuth';\nimport { getRefreshTokenHandler } from '../../../../utils/EnhancedRefreshTokenHandler';\nimport { formatSystemTimestamp } from '../../../../utils/convertToLocalDateTime';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { extractRpcErrorMessage } from '../../../../utils/extractRpcErrorMessage';\n\nconst STAFF_TYPES = ['staff', 'super_admin'] as const;\n\nconst {\n data: supportStaffPageData,\n loading: isLoading,\n refetch,\n} = useQuery(\n async (api) => {\n const [members, allUsers] = await Promise.all([\n api.supportStaff.listSupportStaff(),\n api.users.listUsers(),\n ]);\n return { members, allUsers };\n },\n {\n cacheKey: 'support-staff-page',\n staleTime: 30 * 1000,\n batchMode: BATCH_MODE.batch,\n trackedSegment: 'support-staff-page',\n },\n);\n\nconst addableUsers = computed(() => {\n const users = supportStaffPageData.value?.allUsers ?? [];\n const staffIds = new Set((supportStaffPageData.value?.members ?? []).map((m) => m.user_id));\n return users.filter(\n (u) =>\n STAFF_TYPES.includes(u.user_type as (typeof STAFF_TYPES)[number]) &&\n !staffIds.has(u.id),\n );\n});\n\nconst selectedUserId = ref('');\nwatch(addableUsers, (users) => {\n if (!selectedUserId.value || !users.some((u) => u.id === selectedUserId.value)) {\n selectedUserId.value = '';\n }\n});\n\nconst { mutate: addSupportStaff, loading: isAdding } = useMutation(\n (api, userId: string) => api.supportStaff.addSupportStaff(userId),\n { invalidate: /support-staff|triage-users/ },\n);\n\nconst addError = ref<string | null>(null);\n\nasync function handleAdd() {\n if (!selectedUserId.value) return;\n addError.value = null;\n try {\n await addSupportStaff(selectedUserId.value);\n toast.success('Support staff added');\n selectedUserId.value = '';\n await refetch();\n } catch (e) {\n addError.value = extractRpcErrorMessage(e, 'Failed to add support staff');\n toast.error(addError.value);\n }\n}\n\nconst isRemoving = ref<string | null>(null);\n\nasync function handleRemove(userId: string) {\n isRemoving.value = userId;\n try {\n await executeWithAuth(\n async (api) => api.supportStaff.removeSupportStaff(userId),\n { refreshTokenHandler: getRefreshTokenHandler() },\n );\n toast.success('Support staff removed');\n await refetch();\n } catch (e) {\n toast.error(extractRpcErrorMessage(e, 'Failed to remove support staff'));\n } finally {\n isRemoving.value = null;\n }\n}\n\nfunction formatDate(s: string) {\n return formatSystemTimestamp(s);\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -113,4 +113,4 @@ var SupportTicketDevLifecycleBadge_default = _sfc_main;
|
|
|
113
113
|
|
|
114
114
|
//#endregion
|
|
115
115
|
export { SupportTicketDevLifecycleBadge_default as t };
|
|
116
|
-
//# sourceMappingURL=SupportTicketDevLifecycleBadge-
|
|
116
|
+
//# sourceMappingURL=SupportTicketDevLifecycleBadge-B2NysMAj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupportTicketDevLifecycleBadge-
|
|
1
|
+
{"version":3,"file":"SupportTicketDevLifecycleBadge-B2NysMAj.js","names":["devLifecycleConfig: Record<SupportTicketDevLifecycle, DevLifecycleBadgeConfig>"],"sources":["../src/slices/support_ticket/shared/SupportTicketDevLifecycleBadge.vue"],"sourcesContent":["<template>\n <div :class=\"badgeClasses\" :aria-label=\"ariaLabel\" role=\"status\">\n {{ displayText }}\n </div>\n</template>\n\n<script setup lang=\"ts\">\n/**\n * SupportTicketDevLifecycleBadge - A reusable Vue component for displaying support ticket dev lifecycle\n * as color-coded badges with consistent DaisyUI styling and accessibility features.\n *\n * @example\n * <SupportTicketDevLifecycleBadge :devLifecycle=\"'DEVELOPMENT'\" size=\"md\" />\n * <SupportTicketDevLifecycleBadge :devLifecycle=\"'TESTING'\" size=\"sm\" variant=\"outline\" />\n */\nimport type { SupportTicketDevLifecycle } from '@dragonmastery/dragoncore-shared';\nimport { computed } from 'vue';\n\n/**\n * Props for the SupportTicketDevLifecycleBadge component\n */\ninterface Props {\n /** The support ticket dev lifecycle to display */\n devLifecycle: SupportTicketDevLifecycle;\n /** Size of the badge - defaults to 'md' */\n size?: 'sm' | 'md' | 'lg';\n /** Visual variant of the badge - defaults to 'default' */\n variant?: 'default' | 'outline';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n size: 'md',\n variant: 'default',\n});\n\n/**\n * Configuration for each dev lifecycle badge\n */\ninterface DevLifecycleBadgeConfig {\n /** DaisyUI badge color class */\n color: string;\n /** Display text for the badge */\n text: string;\n /** Accessibility label for screen readers */\n ariaLabel: string;\n}\n\nconst devLifecycleConfig: Record<SupportTicketDevLifecycle, DevLifecycleBadgeConfig> = {\n PENDING: {\n color: 'badge-neutral',\n text: 'Pending',\n ariaLabel: 'Dev Stage: Pending',\n },\n BACKLOG: {\n color: 'badge-info',\n text: 'Backlog',\n ariaLabel: 'Dev Stage: In backlog',\n },\n PLANNING: {\n color: 'badge-info',\n text: 'Planning',\n ariaLabel: 'Dev Stage: Planning phase',\n },\n DEVELOPMENT: {\n color: 'badge-secondary',\n text: 'Dev',\n ariaLabel: 'Dev Stage: In development',\n },\n CODE_REVIEW: {\n color: 'badge-secondary',\n text: 'Review',\n ariaLabel: 'Dev Stage: Code review',\n },\n TESTING: {\n color: 'badge-warning',\n text: 'Testing',\n ariaLabel: 'Dev Stage: Testing phase',\n },\n STAGING: {\n color: 'badge-warning',\n text: 'Staging',\n ariaLabel: 'Dev Stage: On staging',\n },\n PO_APPROVAL: {\n color: 'badge-warning',\n text: 'PO Review',\n ariaLabel: 'Dev Stage: Awaiting PO approval',\n },\n VERIFICATION: {\n color: 'badge-warning',\n text: 'Verification',\n ariaLabel: 'Dev Stage: Awaiting customer verification and comment',\n },\n DEPLOYED: {\n color: 'badge-success',\n text: 'Live',\n ariaLabel: 'Dev Stage: Deployed to production',\n },\n CANCELLED: {\n color: 'badge-error',\n text: 'Cancelled',\n ariaLabel: 'Dev Stage: Cancelled',\n },\n};\n\nconst getDevLifecycleConfig = (\n devLifecycle: SupportTicketDevLifecycle,\n): DevLifecycleBadgeConfig => {\n const config = devLifecycleConfig[devLifecycle];\n if (!config) {\n return {\n color: 'badge-neutral',\n text: devLifecycle || 'Unknown',\n ariaLabel: `Dev Stage: ${devLifecycle || 'Unknown stage'}`,\n };\n }\n return config;\n};\n\nconst config = computed(() => getDevLifecycleConfig(props.devLifecycle));\n\nconst badgeClasses = computed(() => {\n const baseClasses = ['badge', 'text-xs'];\n\n // Add color class\n baseClasses.push(config.value.color);\n\n // Add size class with responsive text sizing\n if (props.size === 'sm') {\n baseClasses.push('badge-sm', 'text-xs');\n } else if (props.size === 'lg') {\n baseClasses.push('badge-lg', 'text-sm');\n } else {\n // md size - responsive text\n baseClasses.push('text-xs', 'sm:text-sm');\n }\n\n // Add variant class\n if (props.variant === 'outline') {\n baseClasses.push('badge-outline');\n }\n\n return baseClasses.join(' ');\n});\n\nconst displayText = computed(() => config.value.text);\nconst ariaLabel = computed(() => config.value.ariaLabel);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,QAAQ;;;;EAiBd,MAAMA,qBAAiF;GACrF,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,UAAU;IACR,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,SAAS;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,aAAa;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,cAAc;IACZ,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,UAAU;IACR,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACD,WAAW;IACT,OAAO;IACP,MAAM;IACN,WAAW;IACZ;GACF;EAED,MAAM,yBACJ,iBAC4B;GAC5B,MAAM,WAAS,mBAAmB;AAClC,OAAI,CAAC,SACH,QAAO;IACL,OAAO;IACP,MAAM,gBAAgB;IACtB,WAAW,cAAc,gBAAgB;IAC1C;AAEH,UAAO;;EAGT,MAAM,SAAS,eAAe,sBAAsB,MAAM,aAAa,CAAC;EAExE,MAAM,eAAe,eAAe;GAClC,MAAM,cAAc,CAAC,SAAS,UAAU;AAGxC,eAAY,KAAK,OAAO,MAAM,MAAM;AAGpC,OAAI,MAAM,SAAS,KACjB,aAAY,KAAK,YAAY,UAAU;YAC9B,MAAM,SAAS,KACxB,aAAY,KAAK,YAAY,UAAU;OAGvC,aAAY,KAAK,WAAW,aAAa;AAI3C,OAAI,MAAM,YAAY,UACpB,aAAY,KAAK,gBAAgB;AAGnC,UAAO,YAAY,KAAK,IAAI;IAC5B;EAEF,MAAM,cAAc,eAAe,OAAO,MAAM,KAAK;EACrD,MAAM,YAAY,eAAe,OAAO,MAAM,UAAU;;uBAjJtD,mBAEM,OAAA;IAFA,OAAK,eAAE,aAAA,MAAY;IAAG,cAAY,UAAA;IAAW,MAAK;sBACnD,YAAA,MAAW,EAAA,IAAA,WAAA"}
|
package/dist/{SupportTicketMaintenancePage-DbH9gLlG.js → SupportTicketMaintenancePage-CpK1esq2.js}
RENAMED
|
@@ -53,4 +53,4 @@ var SupportTicketMaintenancePage_default = _sfc_main;
|
|
|
53
53
|
|
|
54
54
|
//#endregion
|
|
55
55
|
export { SupportTicketMaintenancePage_default as default };
|
|
56
|
-
//# sourceMappingURL=SupportTicketMaintenancePage-
|
|
56
|
+
//# sourceMappingURL=SupportTicketMaintenancePage-CpK1esq2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupportTicketMaintenancePage-
|
|
1
|
+
{"version":3,"file":"SupportTicketMaintenancePage-CpK1esq2.js","names":[],"sources":["../src/slices/admin/features/support_ticket_maintenance/SupportTicketMaintenancePage.vue"],"sourcesContent":["<template>\n <div class=\"mt-2\">\n <div class=\"flex justify-between items-center mb-4\">\n <h1 class=\"text-2xl font-bold\">Support Ticket Maintenance</h1>\n </div>\n\n <p class=\"text-base-content/70 mb-4\">\n Admin utilities for fixing support ticket data issues.\n </p>\n\n <div class=\"card bg-base-200\">\n <div class=\"card-body\">\n <h2 class=\"card-title text-lg\">Fix User IDs</h2>\n <p class=\"text-sm text-base-content/70 mb-4\">\n Some support tickets may have email addresses stored in user ID fields (e.g. updated_by, created_by)\n instead of user IDs. This tool scans for such tickets and replaces emails with the correct user IDs\n where a matching user exists.\n </p>\n <button\n type=\"button\"\n class=\"btn btn-primary btn-sm w-fit\"\n :disabled=\"isFixingUserIds\"\n @click=\"handleFixUserIds\"\n >\n <span v-if=\"isFixingUserIds\" class=\"loading loading-spinner loading-sm\"></span>\n <span v-else>Fix User IDs</span>\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { toast } from 'vue3-toastify';\n\nconst { mutate: fixUserIds, loading: isFixingUserIds } = useMutation(\n (api) => api.supportTickets.staffFixSupportTicketUserIds(),\n {\n invalidate: /^support-ticket/,\n onSuccess: (result) => {\n toast.success(\n `Fixed ${result.ticketsFixed} ticket(s). Scanned: ${result.ticketsScanned}, skipped (no match): ${result.ticketsSkipped}`,\n );\n },\n onError: (err) => {\n toast.error(err?.message ?? 'Failed to fix user IDs');\n },\n },\n);\n\nasync function handleFixUserIds() {\n try {\n await fixUserIds(undefined);\n } catch {\n // Error handled by onError\n }\n}\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAoCA,MAAM,EAAE,QAAQ,YAAY,SAAS,oBAAoB,aACtD,QAAQ,IAAI,eAAe,8BAA8B,EAC1D;GACE,YAAY;GACZ,YAAY,WAAW;AACrB,UAAM,QACJ,SAAS,OAAO,aAAa,uBAAuB,OAAO,eAAe,wBAAwB,OAAO,iBAC1G;;GAEH,UAAU,QAAQ;AAChB,UAAM,MAAM,KAAK,WAAW,yBAAyB;;GAExD,CACF;EAED,eAAe,mBAAmB;AAChC,OAAI;AACF,UAAM,WAAW,OAAU;WACrB;;;uBArDR,mBA4BM,OA5BN,YA4BM;8BA3BJ,mBAEM,OAAA,EAFD,OAAM,0CAAwC,EAAA,CACjD,mBAA8D,MAAA,EAA1D,OAAM,sBAAoB,EAAC,6BAA0B,CAAA;8BAG3D,mBAEI,KAAA,EAFD,OAAM,6BAA2B,EAAC,4DAErC,GAAA;IAEA,mBAkBM,OAlBN,YAkBM,CAjBJ,mBAgBM,OAhBN,YAgBM;+BAfJ,mBAAgD,MAAA,EAA5C,OAAM,sBAAoB,EAAC,gBAAY,GAAA;+BAC3C,mBAII,KAAA,EAJD,OAAM,qCAAmC,EAAC,4OAI7C,GAAA;KACA,mBAQS,UAAA;MAPP,MAAK;MACL,OAAM;MACL,UAAU,MAAA,gBAAe;MACzB,SAAO;SAEI,MAAA,gBAAe,IAAA,WAAA,EAA3B,mBAA+E,QAA/E,WAA+E,KAAA,WAAA,EAC/E,mBAAgC,QAAA,YAAnB,eAAY,EAAA,EAAA,GAAA,WAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { ft as TeamAttachmentsTab_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { TeamAttachmentsTab_default as default };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { lt as TeamList_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { TeamList_default as default };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { rt as TeamMemberList_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { TeamMemberList_default as default };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { nt as TeamMemberParent_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { TeamMemberParent_default as default };
|
|
@@ -2,6 +2,6 @@ import "./useRpcAuth-SgNzCAPa.js";
|
|
|
2
2
|
import "./useQueryCache-DIGf3fCM.js";
|
|
3
3
|
import "./useMutation-DzRSXPB1.js";
|
|
4
4
|
import "./useQuery-bvJabe9Q.js";
|
|
5
|
-
import { t as
|
|
5
|
+
import { t as TeamNotesTab_default } from "./TeamNotesTab-DBrJGCIe.js";
|
|
6
6
|
|
|
7
|
-
export {
|
|
7
|
+
export { TeamNotesTab_default as default };
|
|
@@ -455,4 +455,4 @@ var TeamNotesTab_default = _sfc_main;
|
|
|
455
455
|
|
|
456
456
|
//#endregion
|
|
457
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-
|
|
458
|
+
//# sourceMappingURL=TeamNotesTab-DBrJGCIe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamNotesTab-CXKv0UF9.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":"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"}
|
|
1
|
+
{"version":3,"file":"TeamNotesTab-DBrJGCIe.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":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "./useRpcAuth-SgNzCAPa.js";
|
|
2
|
+
import "./useQueryCache-DIGf3fCM.js";
|
|
3
|
+
import "./useMutation-DzRSXPB1.js";
|
|
4
|
+
import "./useQuery-bvJabe9Q.js";
|
|
5
|
+
import { ct as TeamParent_default } from "./src-DYBi81fS.js";
|
|
6
|
+
import "./AppLink-CHMMrSFI.js";
|
|
7
|
+
import "./TimelineSystemEvent-CBwUl5G8.js";
|
|
8
|
+
import "./TeamMembersTab-4gmnP9sD.js";
|
|
9
|
+
import "./Appearance-BfPdKMXw.js";
|
|
10
|
+
import "./useBreadcrumbs-DmgSucoe.js";
|
|
11
|
+
import "./EditTeamMemberForm-y4Klbm2x.js";
|
|
12
|
+
import "./TeamHistoryTab-B3DvaIzC.js";
|
|
13
|
+
import "./UserProfilePage-DMwDVgXa.js";
|
|
14
|
+
import "./ChangePasswordPage-D2Ci00Sh.js";
|
|
15
|
+
import "./TeamNotesTab-DBrJGCIe.js";
|
|
16
|
+
import "./CustomerSupportTicketParent-C_vgUq3B.js";
|
|
17
|
+
import "./SupportTicketDevLifecycleBadge-B2NysMAj.js";
|
|
18
|
+
import "./StaffSupportTicketParent-Bp5pNF45.js";
|
|
19
|
+
import "./LoginForm-o4gJ0QwA.js";
|
|
20
|
+
import "./Signup-Wz2h_ayt.js";
|
|
21
|
+
import "./ForgotPassword-CiEfdVT-.js";
|
|
22
|
+
import "./ResetPassword-DcVvfMU3.js";
|
|
23
|
+
import "./Logout-D8Ql8-OY.js";
|
|
24
|
+
import "./mfaSchema-_vbG9jiT.js";
|
|
25
|
+
import "./MfaSetup-DzaJLZtx.js";
|
|
26
|
+
import "./MfaVerify-C04XD4r3.js";
|
|
27
|
+
import "./VerifyEmail-CUexC8mg.js";
|
|
28
|
+
import "./UserListPage-BGDgsd_S.js";
|
|
29
|
+
import "./CreateUserPage-DbT_l32W.js";
|
|
30
|
+
import "./EditUserPage-0lqrgP5T.js";
|
|
31
|
+
|
|
32
|
+
export { TeamParent_default as default };
|
|
@@ -510,4 +510,4 @@ var TimelineNoteInput_default = _sfc_main;
|
|
|
510
510
|
|
|
511
511
|
//#endregion
|
|
512
512
|
export { SupportTicketAttachmentsCollapsible_default as a, parseRecordVersions as i, MetadataField_default as n, ActionBannerAlert_default as r, TimelineNoteInput_default as t };
|
|
513
|
-
//# sourceMappingURL=TimelineNoteInput-
|
|
513
|
+
//# sourceMappingURL=TimelineNoteInput-DGDgyGe-.js.map
|