@dragonmastery/dragoncore-vue 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/dist/{ChangePasswordPage-Btu5lf-r.js → ChangePasswordPage-DCews8GU.js} +2 -2
- package/dist/{ChangePasswordPage-Btu5lf-r.js.map → ChangePasswordPage-DCews8GU.js.map} +1 -1
- package/dist/ChangePasswordPage-Dm5vW0nl.js +6 -0
- package/dist/CreateTeamForm-zVlGgmL9.js +27 -0
- package/dist/CreateTeamMemberForm-DkCbsJDn.js +27 -0
- package/dist/{CreateUserPage-Cmx8xjjv.js → CreateUserPage-B8qeBZij.js} +2 -2
- package/dist/{CreateUserPage-Cmx8xjjv.js.map → CreateUserPage-B8qeBZij.js.map} +1 -1
- package/dist/CreateUserPage-WjYDkwpb.js +6 -0
- package/dist/CreditBalanceDashboard-BTW4IK66.js +27 -0
- package/dist/CreditManagement-0JxmCIAd.js +27 -0
- package/dist/CustomerCreateSupportTicketForm-CQcv4vrX.js +27 -0
- package/dist/CustomerSupportTicketDetailPage-DQa_Zvfe.js +703 -0
- package/dist/CustomerSupportTicketDetailPage-DQa_Zvfe.js.map +1 -0
- package/dist/CustomerSupportTicketList-CMPRQ_7O.js +27 -0
- package/dist/CustomerSupportTicketParent-BOYIren9.js +7 -0
- package/dist/{CustomerSupportTicketParent-2mONd9kL.js → CustomerSupportTicketParent-sT8hpgrA.js} +6 -6
- package/dist/CustomerSupportTicketParent-sT8hpgrA.js.map +1 -0
- package/dist/CustomerSupportTicketSuccess-CnRWm6gX.js +27 -0
- package/dist/EditTeamForm-BM90JTjr.js +27 -0
- package/dist/EditTeamMemberForm-B8-pI6Xm.js +6 -0
- package/dist/{EditTeamMemberForm-ru4WgLz-.js → EditTeamMemberForm-CKbKomrL.js} +27 -5
- package/dist/EditTeamMemberForm-CKbKomrL.js.map +1 -0
- package/dist/EditUserPage-BG-Fkx_c.js +7 -0
- package/dist/{EditUserPage-BxJ5QvIM.js → EditUserPage-XqF25iwz.js} +4 -4
- package/dist/{EditUserPage-BxJ5QvIM.js.map → EditUserPage-XqF25iwz.js.map} +1 -1
- package/dist/ForgotPassword-CjWv2V7p.js +7 -0
- package/dist/{ForgotPassword-CqhenzUG.js → ForgotPassword-D3bjL48L.js} +2 -2
- package/dist/{ForgotPassword-CqhenzUG.js.map → ForgotPassword-D3bjL48L.js.map} +1 -1
- package/dist/LoginForm--br4Il85.js +7 -0
- package/dist/{LoginForm-_PZ51Uwe.js → LoginForm-C85U2E2r.js} +3 -3
- package/dist/{LoginForm-_PZ51Uwe.js.map → LoginForm-C85U2E2r.js.map} +1 -1
- package/dist/Logout-DHT-5Qz3.js +6 -0
- package/dist/{Logout-BMjiqHnS.js → Logout-DZuWLh0O.js} +3 -3
- package/dist/{Logout-BMjiqHnS.js.map → Logout-DZuWLh0O.js.map} +1 -1
- package/dist/ResetPassword-DAn7dYAp.js +27 -0
- package/dist/SavedFiltersPage-BNasEKOY.js +391 -0
- package/dist/SavedFiltersPage-BNasEKOY.js.map +1 -0
- package/dist/Signup-VZa7U-Ur.js +7 -0
- package/dist/{Signup-c2-_yMOM.js → Signup-hpV8J5cM.js} +3 -3
- package/dist/{Signup-c2-_yMOM.js.map → Signup-hpV8J5cM.js.map} +1 -1
- package/dist/StaffCreateSupportTicketForm-DoHCw60c.js +27 -0
- package/dist/StaffSupportTicketDetailPage-D49ibqrO.js +1884 -0
- package/dist/StaffSupportTicketDetailPage-D49ibqrO.js.map +1 -0
- package/dist/StaffSupportTicketList-BgCIa_9v.js +27 -0
- package/dist/StaffSupportTicketParent-C7Mm7W_0.js +7 -0
- package/dist/{StaffSupportTicketParent-Cx1buQZw.js → StaffSupportTicketParent-CxrPxXSH.js} +6 -6
- package/dist/StaffSupportTicketParent-CxrPxXSH.js.map +1 -0
- package/dist/StaffSupportTicketSuccess-DZF2WpZc.js +27 -0
- package/dist/SupportStaffPage-nd0HowtH.js +156 -0
- package/dist/SupportStaffPage-nd0HowtH.js.map +1 -0
- package/dist/SupportTicketDevLifecycleBadge-Cl4y47Sy.js +116 -0
- package/dist/SupportTicketDevLifecycleBadge-Cl4y47Sy.js.map +1 -0
- package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js +56 -0
- package/dist/SupportTicketMaintenancePage-rcJ7EfDj.js.map +1 -0
- package/dist/TeamAttachmentsTab-BoOIuTU1.js +27 -0
- package/dist/{TeamHistoryTab-gB3H2KZv.js → TeamHistoryTab-CNelXR3Q.js} +19 -6
- package/dist/TeamHistoryTab-CNelXR3Q.js.map +1 -0
- package/dist/TeamHistoryTab-siesF93u.js +4 -0
- package/dist/TeamList-TpS3BhPd.js +27 -0
- package/dist/TeamMemberList-CQTxcWNS.js +27 -0
- package/dist/TeamMemberParent-Bt0kbyKQ.js +27 -0
- package/dist/{NoteList-C0hRPNMO.js → TeamNotesTab-BhVRLG8h.js} +30 -69
- package/dist/TeamNotesTab-BhVRLG8h.js.map +1 -0
- package/dist/TeamNotesTab-Crp-afAe.js +7 -0
- package/dist/TeamParent-BvLiiJq6.js +27 -0
- package/dist/TimelineNoteInput-BRsQ2QTz.js +490 -0
- package/dist/TimelineNoteInput-BRsQ2QTz.js.map +1 -0
- package/dist/{InlineAttachments-I39rOvip.js → TimelineSystemEvent-B69B3eeL.js} +589 -126
- package/dist/TimelineSystemEvent-B69B3eeL.js.map +1 -0
- package/dist/UserListPage-D68AjrjM.js +4 -0
- package/dist/{UserListPage-WU56KiWj.js → UserListPage-OGYOLwlw.js} +3 -3
- package/dist/{UserListPage-WU56KiWj.js.map → UserListPage-OGYOLwlw.js.map} +1 -1
- package/dist/UserProfilePage-Q68NAGQQ.js +7 -0
- package/dist/{UserProfilePage-BtLUY1kt.js → UserProfilePage-uAIfC_NW.js} +4 -4
- package/dist/{UserProfilePage-BtLUY1kt.js.map → UserProfilePage-uAIfC_NW.js.map} +1 -1
- package/dist/ViewTeam-Bb1WH_Us.js +27 -0
- package/dist/ViewTeamMember-CBTAnAhS.js +27 -0
- package/dist/{convertToLocalDateTime-D4IoNvRj.js → convertToLocalDateTime-DOSGtMn8.js} +13 -3
- package/dist/convertToLocalDateTime-DOSGtMn8.js.map +1 -0
- package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-BoKcrgF5.js} +1 -1
- package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-BoKcrgF5.js.map} +1 -1
- package/dist/extractRpcErrorMessage-C_UbKgHL.js +20 -0
- package/dist/extractRpcErrorMessage-C_UbKgHL.js.map +1 -0
- package/dist/index.d.ts +1594 -1320
- package/dist/index.js +25 -40
- package/dist/{src-o5fMIo5_.js → src-ChwBeNHB.js} +4006 -1522
- package/dist/src-ChwBeNHB.js.map +1 -0
- package/dist/{useMutation-CFwe7H9j.js → useMutation-B4_S4Xoa.js} +3 -3
- package/dist/{useMutation-CFwe7H9j.js.map → useMutation-B4_S4Xoa.js.map} +1 -1
- package/dist/{useQuery-p7oJO7OD.js → useQuery-B7ndu5_P.js} +3 -3
- package/dist/{useQuery-p7oJO7OD.js.map → useQuery-B7ndu5_P.js.map} +1 -1
- package/dist/{useQueryCache-ByayvZgZ.js → useQueryCache-DqcDMsxb.js} +2 -2
- package/dist/{useQueryCache-ByayvZgZ.js.map → useQueryCache-DqcDMsxb.js.map} +1 -1
- package/dist/{useRpcAuth-BLlRSHy8.js → useRpcAuth-Dp2sec-X.js} +13 -4
- package/dist/useRpcAuth-Dp2sec-X.js.map +1 -0
- package/package.json +8 -8
- package/dist/ChangePasswordPage-mBBuQMkT.js +0 -6
- package/dist/CreateTeamForm-n2ut93vM.js +0 -43
- package/dist/CreateTeamMemberForm-CcH3AxNL.js +0 -43
- package/dist/CreateUserPage-CDrGuW9B.js +0 -6
- package/dist/CreditBalanceDashboard-DLz0ioP3.js +0 -43
- package/dist/CreditManagement-D3q5S-qc.js +0 -43
- package/dist/CustomerCreateSupportTicketForm-Ci7QYkG-.js +0 -43
- package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js +0 -159
- package/dist/CustomerEditSupportTicketForm-Dd5ZB74k.js.map +0 -1
- package/dist/CustomerEditSupportTicketForm-lLchVjnw.js +0 -9
- package/dist/CustomerSupportTicketAttachmentsTab-gBrVO97t.js +0 -43
- package/dist/CustomerSupportTicketCustomerNotesTab-D0jhzbOY.js +0 -8
- package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js +0 -23
- package/dist/CustomerSupportTicketCustomerNotesTab-D1aa9It7.js.map +0 -1
- package/dist/CustomerSupportTicketHistoryTab-BNTf8EZq.js +0 -6
- package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js +0 -17
- package/dist/CustomerSupportTicketHistoryTab-CFYN_Sa4.js.map +0 -1
- package/dist/CustomerSupportTicketList-BkOzFxMP.js +0 -6
- package/dist/CustomerSupportTicketList-C2nUPawb.js +0 -166
- package/dist/CustomerSupportTicketList-C2nUPawb.js.map +0 -1
- package/dist/CustomerSupportTicketParent-2mONd9kL.js.map +0 -1
- package/dist/CustomerSupportTicketParent-N8ko1yFE.js +0 -7
- package/dist/CustomerSupportTicketSuccess-w_-9NXT4.js +0 -43
- package/dist/CustomerViewSupportTicket-CVwNH0lS.js +0 -11
- package/dist/CustomerViewSupportTicket-tZkxragu.js +0 -363
- package/dist/CustomerViewSupportTicket-tZkxragu.js.map +0 -1
- package/dist/EditTeamForm-BioqiTWE.js +0 -43
- package/dist/EditTeamMemberForm-DCq0Gsn_.js +0 -7
- package/dist/EditTeamMemberForm-ru4WgLz-.js.map +0 -1
- package/dist/EditUserPage-XOBuxUxd.js +0 -7
- package/dist/FieldsetSection-CsHN38_o.js +0 -27
- package/dist/FieldsetSection-CsHN38_o.js.map +0 -1
- package/dist/ForgotPassword-CpqvcSFg.js +0 -7
- package/dist/InlineAttachments-I39rOvip.js.map +0 -1
- package/dist/LoginForm-AM0qkfbU.js +0 -7
- package/dist/Logout-BfiBjlaH.js +0 -6
- package/dist/NoteList-C0hRPNMO.js.map +0 -1
- package/dist/NotificationEmailsPage-BjRqtW95.js +0 -141
- package/dist/NotificationEmailsPage-BjRqtW95.js.map +0 -1
- package/dist/NotificationEmailsPage-bx-9rg3x.js +0 -7
- package/dist/ResetPassword-BQLkR9TZ.js +0 -43
- package/dist/Signup-CnCcQlB8.js +0 -7
- package/dist/StaffCreateSupportTicketForm-ChVFDJdA.js +0 -43
- package/dist/StaffEditSupportTicketForm-DY1Zkf5k.js +0 -9
- package/dist/StaffEditSupportTicketForm-DuUKuIGg.js +0 -263
- package/dist/StaffEditSupportTicketForm-DuUKuIGg.js.map +0 -1
- package/dist/StaffSupportTicketAttachmentsTab-DpDXsHXP.js +0 -43
- package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js +0 -23
- package/dist/StaffSupportTicketCustomerNotesTab-CusqQV2-.js.map +0 -1
- package/dist/StaffSupportTicketCustomerNotesTab-rbJHJ0_V.js +0 -8
- package/dist/StaffSupportTicketHistoryTab-D24myEm3.js +0 -17
- package/dist/StaffSupportTicketHistoryTab-D24myEm3.js.map +0 -1
- package/dist/StaffSupportTicketHistoryTab-nmVma5vp.js +0 -6
- package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js +0 -23
- package/dist/StaffSupportTicketInternalNotesTab-D8HM--dp.js.map +0 -1
- package/dist/StaffSupportTicketInternalNotesTab-DihYd5XI.js +0 -8
- package/dist/StaffSupportTicketList-DelptSmK.js +0 -43
- package/dist/StaffSupportTicketParent-BCrj3ckV.js +0 -7
- package/dist/StaffSupportTicketParent-Cx1buQZw.js.map +0 -1
- package/dist/StaffSupportTicketSuccess-BYxtY5wZ.js +0 -43
- package/dist/StaffSupportTicketWorkflowTab-BrDDBeK9.js +0 -9
- package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js +0 -1234
- package/dist/StaffSupportTicketWorkflowTab-DmVTPzxS.js.map +0 -1
- package/dist/SupportTicketHistoryTab-CLMopA7a.js +0 -220
- package/dist/SupportTicketHistoryTab-CLMopA7a.js.map +0 -1
- package/dist/SupportTicketStatusBadge-YdZzjvkh.js +0 -163
- package/dist/SupportTicketStatusBadge-YdZzjvkh.js.map +0 -1
- package/dist/TeamAttachmentsTab-BxUpTWYh.js +0 -43
- package/dist/TeamHistoryTab-CUCT9MRG.js +0 -5
- package/dist/TeamHistoryTab-gB3H2KZv.js.map +0 -1
- package/dist/TeamList-By6pzWm5.js +0 -43
- package/dist/TeamMemberList-CYV9fWEb.js +0 -43
- package/dist/TeamMemberParent-CVvGqpxD.js +0 -43
- package/dist/TeamNotesTab-pfXTDhg6.js +0 -23
- package/dist/TeamNotesTab-pfXTDhg6.js.map +0 -1
- package/dist/TeamNotesTab-u4cDC67X.js +0 -8
- package/dist/TeamParent-BxT1KubK.js +0 -43
- package/dist/UserListPage-DsQdH2Sm.js +0 -4
- package/dist/UserProfilePage-B73JhjUu.js +0 -7
- package/dist/ViewTeam-DzX-obEl.js +0 -43
- package/dist/ViewTeamMember-PF6S_4Pb.js +0 -43
- package/dist/ZiniaContainer-C7c7Vwkh.js +0 -18
- package/dist/ZiniaContainer-C7c7Vwkh.js.map +0 -1
- package/dist/convertToLocalDateTime-D4IoNvRj.js.map +0 -1
- package/dist/creditValueFormatter-DftEzu8d.js +0 -128
- package/dist/creditValueFormatter-DftEzu8d.js.map +0 -1
- package/dist/src-o5fMIo5_.js.map +0 -1
- package/dist/useRpcAuth-BLlRSHy8.js.map +0 -1
- /package/dist/{TeamMembersTab-CpE9BaCi.js → TeamMembersTab-DTJxmb-M.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { l as useUserSessionStore, m as useEnv } from "./useRpcAuth-
|
|
2
|
-
import { t as useMutation } from "./useMutation-
|
|
3
|
-
import { t as useQuery } from "./useQuery-
|
|
1
|
+
import { l as useUserSessionStore, m as useEnv } 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
4
|
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, toDisplayString, unref, watch, withModifiers } from "vue";
|
|
5
5
|
|
|
6
6
|
//#region src/components/ConfirmDialog.vue
|
|
7
|
-
const _hoisted_1$
|
|
8
|
-
const _hoisted_2$
|
|
9
|
-
const _hoisted_3$
|
|
10
|
-
const _hoisted_4$
|
|
11
|
-
const _hoisted_5$
|
|
12
|
-
const _sfc_main$
|
|
7
|
+
const _hoisted_1$7 = { class: "font-bold text-lg mb-4" };
|
|
8
|
+
const _hoisted_2$4 = { class: "py-4" };
|
|
9
|
+
const _hoisted_3$4 = { class: "modal-action" };
|
|
10
|
+
const _hoisted_4$4 = ["disabled"];
|
|
11
|
+
const _hoisted_5$4 = ["disabled"];
|
|
12
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
13
13
|
__name: "ConfirmDialog",
|
|
14
14
|
props: {
|
|
15
15
|
modelValue: { type: Boolean },
|
|
@@ -64,37 +64,37 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
64
64
|
class: "modal-box",
|
|
65
65
|
onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
|
|
66
66
|
}, [
|
|
67
|
-
createElementVNode("h3", _hoisted_1$
|
|
68
|
-
createElementVNode("div", _hoisted_2$
|
|
69
|
-
createElementVNode("div", _hoisted_3$
|
|
67
|
+
createElementVNode("h3", _hoisted_1$7, toDisplayString(__props.title), 1),
|
|
68
|
+
createElementVNode("div", _hoisted_2$4, [renderSlot(_ctx.$slots, "message", {}, () => [createElementVNode("p", null, toDisplayString(__props.message), 1)])]),
|
|
69
|
+
createElementVNode("div", _hoisted_3$4, [createElementVNode("button", {
|
|
70
70
|
class: "btn btn-outline",
|
|
71
71
|
onClick: withModifiers(handleCancel, ["prevent"]),
|
|
72
72
|
disabled: __props.isProcessing,
|
|
73
73
|
type: "button"
|
|
74
|
-
}, toDisplayString(__props.cancelText), 9, _hoisted_4$
|
|
74
|
+
}, toDisplayString(__props.cancelText), 9, _hoisted_4$4), createElementVNode("button", {
|
|
75
75
|
class: normalizeClass(["btn", __props.confirmButtonClass]),
|
|
76
76
|
onClick: withModifiers(handleConfirm, ["prevent"]),
|
|
77
77
|
disabled: __props.isProcessing,
|
|
78
78
|
type: "button"
|
|
79
|
-
}, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_5$
|
|
79
|
+
}, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_5$4)])
|
|
80
80
|
])], 2);
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
});
|
|
84
|
-
var ConfirmDialog_default = _sfc_main$
|
|
84
|
+
var ConfirmDialog_default = _sfc_main$7;
|
|
85
85
|
|
|
86
86
|
//#endregion
|
|
87
87
|
//#region src/components/ImageModal.vue
|
|
88
|
-
const _hoisted_1$
|
|
89
|
-
const _hoisted_2$
|
|
90
|
-
const _hoisted_3$
|
|
91
|
-
const _hoisted_4$
|
|
92
|
-
const _hoisted_5$
|
|
88
|
+
const _hoisted_1$6 = { class: "modal-box w-full max-w-full h-full max-h-full p-0 flex flex-col bg-base-100" };
|
|
89
|
+
const _hoisted_2$3 = { class: "flex items-center justify-between p-3 sm:p-4 border-b border-base-300 flex-shrink-0 bg-base-100/95 backdrop-blur" };
|
|
90
|
+
const _hoisted_3$3 = { class: "flex-1 min-w-0 mr-2" };
|
|
91
|
+
const _hoisted_4$3 = { class: "font-semibold text-sm sm:text-base truncate" };
|
|
92
|
+
const _hoisted_5$3 = {
|
|
93
93
|
key: 0,
|
|
94
94
|
class: "text-xs text-base-content/60 mt-0.5"
|
|
95
95
|
};
|
|
96
|
-
const _hoisted_6$
|
|
97
|
-
const _hoisted_7$
|
|
96
|
+
const _hoisted_6$3 = { class: "flex items-center gap-1 sm:gap-2 flex-shrink-0" };
|
|
97
|
+
const _hoisted_7$2 = {
|
|
98
98
|
key: 0,
|
|
99
99
|
class: "absolute inset-0 flex items-center justify-center"
|
|
100
100
|
};
|
|
@@ -112,7 +112,7 @@ const _hoisted_12$1 = {
|
|
|
112
112
|
const minScale = .5;
|
|
113
113
|
const maxScale = 5;
|
|
114
114
|
const zoomStep = .05;
|
|
115
|
-
const _sfc_main$
|
|
115
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
116
116
|
__name: "ImageModal",
|
|
117
117
|
props: {
|
|
118
118
|
isOpen: { type: Boolean },
|
|
@@ -542,9 +542,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
542
542
|
class: normalizeClass(["modal", { "modal-open": isOpen.value }]),
|
|
543
543
|
onClick: handleBackdropClick,
|
|
544
544
|
onKeydown: handleKeydown
|
|
545
|
-
}, [createElementVNode("div", _hoisted_1$
|
|
545
|
+
}, [createElementVNode("div", _hoisted_1$6, [
|
|
546
546
|
createCommentVNode(" Header "),
|
|
547
|
-
createElementVNode("div", _hoisted_2$
|
|
547
|
+
createElementVNode("div", _hoisted_2$3, [createElementVNode("div", _hoisted_3$3, [createElementVNode("h3", _hoisted_4$3, toDisplayString(__props.imageName), 1), __props.imageIndex !== null && __props.totalImages !== null ? (openBlock(), createElementBlock("p", _hoisted_5$3, toDisplayString(__props.imageIndex + 1) + " / " + toDisplayString(__props.totalImages), 1)) : createCommentVNode("v-if", true)]), createElementVNode("div", _hoisted_6$3, [
|
|
548
548
|
createCommentVNode(" Navigation buttons (if multiple images) "),
|
|
549
549
|
showNavigation.value && __props.imageIndex !== null && __props.imageIndex > 0 ? (openBlock(), createElementBlock("button", {
|
|
550
550
|
key: 0,
|
|
@@ -631,7 +631,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
631
631
|
class: "flex-1 flex items-center justify-center overflow-hidden bg-base-200 relative"
|
|
632
632
|
}, [
|
|
633
633
|
createCommentVNode(" Loading state "),
|
|
634
|
-
isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_7$
|
|
634
|
+
isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_7$2, [..._cache[8] || (_cache[8] = [createElementVNode("span", { class: "loading loading-spinner loading-lg" }, null, -1)])])) : createCommentVNode("v-if", true),
|
|
635
635
|
createCommentVNode(" Error state "),
|
|
636
636
|
hasError.value ? (openBlock(), createElementBlock("div", _hoisted_8$1, [..._cache[9] || (_cache[9] = [createElementVNode("svg", {
|
|
637
637
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -744,66 +744,268 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
744
744
|
};
|
|
745
745
|
}
|
|
746
746
|
});
|
|
747
|
-
var ImageModal_default = _sfc_main$
|
|
747
|
+
var ImageModal_default = _sfc_main$6;
|
|
748
|
+
|
|
749
|
+
//#endregion
|
|
750
|
+
//#region src/slices/support_ticket/shared/SupportTicketPriorityBadge.vue
|
|
751
|
+
const _hoisted_1$5 = ["aria-label"];
|
|
752
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
753
|
+
__name: "SupportTicketPriorityBadge",
|
|
754
|
+
props: {
|
|
755
|
+
priority: {},
|
|
756
|
+
size: { default: "md" },
|
|
757
|
+
variant: { default: "default" }
|
|
758
|
+
},
|
|
759
|
+
setup(__props) {
|
|
760
|
+
/**
|
|
761
|
+
* SupportTicketPriorityBadge - A reusable Vue component for displaying support ticket priority
|
|
762
|
+
* as color-coded badges with consistent DaisyUI styling and accessibility features.
|
|
763
|
+
*
|
|
764
|
+
* @example
|
|
765
|
+
* <SupportTicketPriorityBadge :priority="'HIGH'" size="md" />
|
|
766
|
+
* <SupportTicketPriorityBadge :priority="'CRITICAL'" size="sm" variant="outline" />
|
|
767
|
+
*/
|
|
768
|
+
const props = __props;
|
|
769
|
+
/**
|
|
770
|
+
* Configuration for each priority badge
|
|
771
|
+
*/
|
|
772
|
+
const priorityConfig = {
|
|
773
|
+
LOW: {
|
|
774
|
+
color: "badge-neutral",
|
|
775
|
+
text: "Low",
|
|
776
|
+
ariaLabel: "Priority: Low priority"
|
|
777
|
+
},
|
|
778
|
+
MEDIUM: {
|
|
779
|
+
color: "badge-neutral",
|
|
780
|
+
text: "Medium",
|
|
781
|
+
ariaLabel: "Priority: Medium priority"
|
|
782
|
+
},
|
|
783
|
+
HIGH: {
|
|
784
|
+
color: "badge-neutral",
|
|
785
|
+
text: "High",
|
|
786
|
+
ariaLabel: "Priority: High priority"
|
|
787
|
+
},
|
|
788
|
+
CRITICAL: {
|
|
789
|
+
color: "badge-neutral",
|
|
790
|
+
text: "Critical",
|
|
791
|
+
ariaLabel: "Priority: Critical priority"
|
|
792
|
+
}
|
|
793
|
+
};
|
|
794
|
+
const getPriorityConfig = (priority) => {
|
|
795
|
+
const config$1 = priorityConfig[priority];
|
|
796
|
+
if (!config$1) return {
|
|
797
|
+
color: "badge-neutral",
|
|
798
|
+
text: priority || "Unknown",
|
|
799
|
+
ariaLabel: `Priority: ${priority || "Unknown priority"}`
|
|
800
|
+
};
|
|
801
|
+
return config$1;
|
|
802
|
+
};
|
|
803
|
+
const config = computed(() => getPriorityConfig(props.priority));
|
|
804
|
+
const badgeClasses = computed(() => {
|
|
805
|
+
const baseClasses = ["badge", "text-xs"];
|
|
806
|
+
baseClasses.push(config.value.color);
|
|
807
|
+
if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
|
|
808
|
+
else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
|
|
809
|
+
else baseClasses.push("text-xs", "sm:text-sm");
|
|
810
|
+
if (props.variant === "outline") baseClasses.push("badge-outline");
|
|
811
|
+
return baseClasses.join(" ");
|
|
812
|
+
});
|
|
813
|
+
const displayText = computed(() => config.value.text);
|
|
814
|
+
const ariaLabel = computed(() => config.value.ariaLabel);
|
|
815
|
+
return (_ctx, _cache) => {
|
|
816
|
+
return openBlock(), createElementBlock("div", {
|
|
817
|
+
class: normalizeClass(badgeClasses.value),
|
|
818
|
+
"aria-label": ariaLabel.value,
|
|
819
|
+
role: "status"
|
|
820
|
+
}, toDisplayString(displayText.value), 11, _hoisted_1$5);
|
|
821
|
+
};
|
|
822
|
+
}
|
|
823
|
+
});
|
|
824
|
+
var SupportTicketPriorityBadge_default = _sfc_main$5;
|
|
825
|
+
|
|
826
|
+
//#endregion
|
|
827
|
+
//#region src/slices/support_ticket/shared/SupportTicketTypeBadge.vue
|
|
828
|
+
const _hoisted_1$4 = ["aria-label"];
|
|
829
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
830
|
+
__name: "SupportTicketTypeBadge",
|
|
831
|
+
props: {
|
|
832
|
+
type: {},
|
|
833
|
+
size: { default: "md" },
|
|
834
|
+
variant: { default: "default" }
|
|
835
|
+
},
|
|
836
|
+
setup(__props) {
|
|
837
|
+
/**
|
|
838
|
+
* SupportTicketTypeBadge - A reusable Vue component for displaying support ticket type
|
|
839
|
+
* as color-coded badges with consistent DaisyUI styling and accessibility features.
|
|
840
|
+
*
|
|
841
|
+
* @example
|
|
842
|
+
* <SupportTicketTypeBadge :type="'BUG'" size="md" />
|
|
843
|
+
* <SupportTicketTypeBadge :type="'FEATURE_REQUEST'" size="sm" variant="outline" />
|
|
844
|
+
*/
|
|
845
|
+
const props = __props;
|
|
846
|
+
/**
|
|
847
|
+
* Configuration for each type badge
|
|
848
|
+
*/
|
|
849
|
+
const typeConfig = {
|
|
850
|
+
BUG: {
|
|
851
|
+
color: "badge-neutral",
|
|
852
|
+
text: "Bug",
|
|
853
|
+
ariaLabel: "Type: Bug report requiring fix"
|
|
854
|
+
},
|
|
855
|
+
FEATURE_REQUEST: {
|
|
856
|
+
color: "badge-neutral",
|
|
857
|
+
text: "Feature",
|
|
858
|
+
ariaLabel: "Type: New feature request"
|
|
859
|
+
},
|
|
860
|
+
IMPROVEMENT: {
|
|
861
|
+
color: "badge-neutral",
|
|
862
|
+
text: "Improvement",
|
|
863
|
+
ariaLabel: "Type: Enhancement to existing feature"
|
|
864
|
+
},
|
|
865
|
+
OPERATIONAL: {
|
|
866
|
+
color: "badge-neutral",
|
|
867
|
+
text: "Ops",
|
|
868
|
+
ariaLabel: "Type: Operational/admin work"
|
|
869
|
+
}
|
|
870
|
+
};
|
|
871
|
+
const getTypeConfig = (type) => {
|
|
872
|
+
const config$1 = typeConfig[type];
|
|
873
|
+
if (!config$1) return {
|
|
874
|
+
color: "badge-neutral",
|
|
875
|
+
text: type || "Unknown",
|
|
876
|
+
ariaLabel: `Type: ${type || "Unknown type"}`
|
|
877
|
+
};
|
|
878
|
+
return config$1;
|
|
879
|
+
};
|
|
880
|
+
const config = computed(() => getTypeConfig(props.type));
|
|
881
|
+
const badgeClasses = computed(() => {
|
|
882
|
+
const baseClasses = ["badge", "text-xs"];
|
|
883
|
+
baseClasses.push(config.value.color);
|
|
884
|
+
if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
|
|
885
|
+
else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
|
|
886
|
+
else baseClasses.push("text-xs", "sm:text-sm");
|
|
887
|
+
if (props.variant === "outline") baseClasses.push("badge-outline");
|
|
888
|
+
return baseClasses.join(" ");
|
|
889
|
+
});
|
|
890
|
+
const displayText = computed(() => config.value.text);
|
|
891
|
+
const ariaLabel = computed(() => config.value.ariaLabel);
|
|
892
|
+
return (_ctx, _cache) => {
|
|
893
|
+
return openBlock(), createElementBlock("div", {
|
|
894
|
+
class: normalizeClass(badgeClasses.value),
|
|
895
|
+
"aria-label": ariaLabel.value,
|
|
896
|
+
role: "status"
|
|
897
|
+
}, toDisplayString(displayText.value), 11, _hoisted_1$4);
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
});
|
|
901
|
+
var SupportTicketTypeBadge_default = _sfc_main$4;
|
|
902
|
+
|
|
903
|
+
//#endregion
|
|
904
|
+
//#region src/slices/support_ticket/utils/creditValueFormatter.ts
|
|
905
|
+
/**
|
|
906
|
+
* Helper function to check if credit value is empty
|
|
907
|
+
*/
|
|
908
|
+
function isCreditValueEmpty(value) {
|
|
909
|
+
return value === null || value === void 0 || value.trim() === "";
|
|
910
|
+
}
|
|
911
|
+
/**
|
|
912
|
+
* Core credit formatting logic
|
|
913
|
+
*/
|
|
914
|
+
function formatCreditValueCore(creditValue) {
|
|
915
|
+
if (isCreditValueEmpty(creditValue)) return "TBD";
|
|
916
|
+
const trimmed = creditValue.trim();
|
|
917
|
+
if (parseFloat(trimmed) === 0) return "0";
|
|
918
|
+
return trimmed.replace(/\.?0+$/, "");
|
|
919
|
+
}
|
|
920
|
+
/**
|
|
921
|
+
* Formats credit value for staff views (includes internal ticket logic)
|
|
922
|
+
*
|
|
923
|
+
* @param creditValue - The credit value from the database
|
|
924
|
+
* @param approvalStatus - The approval status to determine display logic
|
|
925
|
+
* @returns Formatted string for display
|
|
926
|
+
*
|
|
927
|
+
* @example
|
|
928
|
+
* formatStaffCreditValue("5.50", "PENDING") // "5.5"
|
|
929
|
+
* formatStaffCreditValue("10", "INTERNAL") // "N/A"
|
|
930
|
+
*/
|
|
931
|
+
function formatStaffCreditValue(creditValue, approvalStatus) {
|
|
932
|
+
if (approvalStatus === "INTERNAL") return "N/A";
|
|
933
|
+
return formatCreditValueCore(creditValue);
|
|
934
|
+
}
|
|
935
|
+
/**
|
|
936
|
+
* Formats credit value for customer views (status-based logic)
|
|
937
|
+
*
|
|
938
|
+
* @param creditValue - The credit value from the database
|
|
939
|
+
* @param status - The computed status from the customer query
|
|
940
|
+
* @returns Formatted string for display
|
|
941
|
+
*
|
|
942
|
+
* @example
|
|
943
|
+
* formatCustomerCreditValue("5.50", "PENDING") // "5.5"
|
|
944
|
+
* formatCustomerCreditValue("5.50", "FOLLOWUP") // "5.5"
|
|
945
|
+
*/
|
|
946
|
+
function formatCustomerCreditValue(creditValue) {
|
|
947
|
+
return formatCreditValueCore(creditValue);
|
|
948
|
+
}
|
|
748
949
|
|
|
749
950
|
//#endregion
|
|
750
951
|
//#region src/slices/support_ticket/shared/InlineAttachments.vue
|
|
751
|
-
const _hoisted_1 = { class: "mt-4 sm:mt-6" };
|
|
752
|
-
const _hoisted_2 = {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
952
|
+
const _hoisted_1$3 = { class: "mt-4 sm:mt-6" };
|
|
953
|
+
const _hoisted_2$2 = {
|
|
954
|
+
key: 0,
|
|
955
|
+
class: "grid grid-cols-2 gap-2 sm:gap-4 mb-4"
|
|
956
|
+
};
|
|
957
|
+
const _hoisted_3$2 = {
|
|
756
958
|
key: 0,
|
|
757
|
-
class: "text-xs text-base-content/50
|
|
959
|
+
class: "hidden sm:block text-xs text-base-content/50"
|
|
758
960
|
};
|
|
759
|
-
const
|
|
961
|
+
const _hoisted_4$2 = {
|
|
760
962
|
key: 1,
|
|
761
963
|
class: "mb-4 space-y-2"
|
|
762
964
|
};
|
|
763
|
-
const
|
|
764
|
-
const
|
|
765
|
-
const
|
|
965
|
+
const _hoisted_5$2 = { class: "flex-1 min-w-0" };
|
|
966
|
+
const _hoisted_6$2 = { class: "text-xs sm:text-sm font-medium truncate" };
|
|
967
|
+
const _hoisted_7$1 = {
|
|
766
968
|
key: 0,
|
|
767
969
|
class: "w-full bg-base-300 rounded-full h-1.5 mt-1"
|
|
768
970
|
};
|
|
769
|
-
const
|
|
971
|
+
const _hoisted_8 = {
|
|
770
972
|
key: 1,
|
|
771
973
|
class: "text-xs text-error mt-1 break-words"
|
|
772
974
|
};
|
|
773
|
-
const
|
|
774
|
-
const
|
|
775
|
-
const
|
|
776
|
-
const
|
|
975
|
+
const _hoisted_9 = { class: "flex gap-2 sm:gap-1" };
|
|
976
|
+
const _hoisted_10 = ["onClick"];
|
|
977
|
+
const _hoisted_11 = ["onClick"];
|
|
978
|
+
const _hoisted_12 = {
|
|
777
979
|
key: 2,
|
|
778
980
|
class: "space-y-2"
|
|
779
981
|
};
|
|
780
|
-
const
|
|
982
|
+
const _hoisted_13 = {
|
|
781
983
|
key: 0,
|
|
782
984
|
class: "flex justify-center py-4"
|
|
783
985
|
};
|
|
784
|
-
const
|
|
785
|
-
const
|
|
786
|
-
const
|
|
787
|
-
const
|
|
986
|
+
const _hoisted_14 = ["onClick"];
|
|
987
|
+
const _hoisted_15 = { class: "flex items-center gap-2 sm:gap-3 flex-1 min-w-0 w-full sm:w-auto" };
|
|
988
|
+
const _hoisted_16 = { class: "flex-shrink-0" };
|
|
989
|
+
const _hoisted_17 = {
|
|
788
990
|
key: 0,
|
|
789
991
|
class: "w-10 h-10 sm:w-12 sm:h-12 rounded overflow-hidden bg-base-200 flex items-center justify-center"
|
|
790
992
|
};
|
|
791
|
-
const
|
|
792
|
-
const
|
|
993
|
+
const _hoisted_18 = ["src", "alt"];
|
|
994
|
+
const _hoisted_19 = {
|
|
793
995
|
key: 1,
|
|
794
996
|
class: "w-full h-full flex items-center justify-center"
|
|
795
997
|
};
|
|
796
|
-
const
|
|
797
|
-
const
|
|
798
|
-
const
|
|
998
|
+
const _hoisted_20 = { class: "flex-1 min-w-0" };
|
|
999
|
+
const _hoisted_21 = { class: "text-sm sm:text-base font-medium truncate" };
|
|
1000
|
+
const _hoisted_22 = { class: "text-xs text-base-content/60" };
|
|
1001
|
+
const _hoisted_23 = ["onClick"];
|
|
1002
|
+
const _hoisted_24 = ["onClick"];
|
|
799
1003
|
const _hoisted_25 = ["onClick"];
|
|
800
|
-
const _hoisted_26 =
|
|
801
|
-
const _hoisted_27 = ["onClick"];
|
|
802
|
-
const _hoisted_28 = {
|
|
1004
|
+
const _hoisted_26 = {
|
|
803
1005
|
key: 3,
|
|
804
1006
|
class: "text-center py-8 text-base-content/50"
|
|
805
1007
|
};
|
|
806
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
1008
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
807
1009
|
__name: "InlineAttachments",
|
|
808
1010
|
props: {
|
|
809
1011
|
recordId: {},
|
|
@@ -819,7 +1021,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
819
1021
|
emits: [
|
|
820
1022
|
"uploaded",
|
|
821
1023
|
"deleted",
|
|
822
|
-
"filesQueued"
|
|
1024
|
+
"filesQueued",
|
|
1025
|
+
"update:attachmentsCount"
|
|
823
1026
|
],
|
|
824
1027
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
825
1028
|
const props = __props;
|
|
@@ -876,6 +1079,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
876
1079
|
});
|
|
877
1080
|
return files;
|
|
878
1081
|
});
|
|
1082
|
+
watch(() => attachments.value.length, (count) => emit("update:attachmentsCount", count), { immediate: true });
|
|
879
1083
|
const deleteMessage = computed(() => {
|
|
880
1084
|
if (!fileToDelete.value) return "Are you sure you want to delete this attachment? This action cannot be undone.";
|
|
881
1085
|
return `Are you sure you want to delete "${fileToDelete.value.name}"? This action cannot be undone.`;
|
|
@@ -1019,6 +1223,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1019
1223
|
if (!files || files.length === 0) return;
|
|
1020
1224
|
processFiles(Array.from(files));
|
|
1021
1225
|
};
|
|
1226
|
+
const handlePaste = (event) => {
|
|
1227
|
+
if (!props.canUpload || isUploading.value) return;
|
|
1228
|
+
const items = event.clipboardData?.items;
|
|
1229
|
+
if (!items) return;
|
|
1230
|
+
const imageFiles = [];
|
|
1231
|
+
for (const item of items) if (item.type.startsWith("image/")) {
|
|
1232
|
+
const file = item.getAsFile();
|
|
1233
|
+
if (file) imageFiles.push(file);
|
|
1234
|
+
}
|
|
1235
|
+
if (imageFiles.length > 0) {
|
|
1236
|
+
event.preventDefault();
|
|
1237
|
+
event.stopPropagation();
|
|
1238
|
+
processFiles(imageFiles);
|
|
1239
|
+
}
|
|
1240
|
+
};
|
|
1022
1241
|
const processUploadQueue = async (ticketId) => {
|
|
1023
1242
|
const nextItem = uploadQueue.value.find((item) => item.status === "pending");
|
|
1024
1243
|
if (!nextItem) {
|
|
@@ -1139,25 +1358,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1139
1358
|
});
|
|
1140
1359
|
}, { immediate: true });
|
|
1141
1360
|
return (_ctx, _cache) => {
|
|
1142
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
1143
|
-
createElementVNode("div", _hoisted_2, [_cache[5] || (_cache[5] = createElementVNode("h3", { class: "text-base sm:text-lg font-semibold" }, "Attachments", -1)), __props.canUpload ? (openBlock(), createElementBlock("button", {
|
|
1144
|
-
key: 0,
|
|
1145
|
-
onClick: withModifiers(openFileSelector, ["prevent"]),
|
|
1146
|
-
class: "btn btn-sm btn-primary w-full sm:w-auto",
|
|
1147
|
-
disabled: isUploading.value,
|
|
1148
|
-
type: "button"
|
|
1149
|
-
}, [..._cache[4] || (_cache[4] = [createElementVNode("svg", {
|
|
1150
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
1151
|
-
class: "h-4 w-4 mr-1",
|
|
1152
|
-
fill: "none",
|
|
1153
|
-
viewBox: "0 0 24 24",
|
|
1154
|
-
stroke: "currentColor"
|
|
1155
|
-
}, [createElementVNode("path", {
|
|
1156
|
-
"stroke-linecap": "round",
|
|
1157
|
-
"stroke-linejoin": "round",
|
|
1158
|
-
"stroke-width": "2",
|
|
1159
|
-
d: "M12 4v16m8-8H4"
|
|
1160
|
-
})], -1), createTextVNode(" Add Files ", -1)])], 8, _hoisted_3)) : createCommentVNode("v-if", true)]),
|
|
1361
|
+
return openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
1161
1362
|
createElementVNode("input", {
|
|
1162
1363
|
ref_key: "fileInput",
|
|
1163
1364
|
ref: fileInput,
|
|
@@ -1166,71 +1367,96 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1166
1367
|
class: "hidden",
|
|
1167
1368
|
onChange: handleFileSelect
|
|
1168
1369
|
}, null, 544),
|
|
1169
|
-
createCommentVNode(" Drag & Drop
|
|
1170
|
-
__props.canUpload ? (openBlock(), createElementBlock("div",
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
"
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1370
|
+
createCommentVNode(" Drag & Drop and Paste: compact button-like on mobile, expanded on desktop "),
|
|
1371
|
+
__props.canUpload ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
|
|
1372
|
+
createCommentVNode(" Drag & Drop Zone "),
|
|
1373
|
+
createElementVNode("div", {
|
|
1374
|
+
class: normalizeClass(["flex flex-col items-center justify-center gap-1 sm:gap-2 py-2.5 px-2 sm:py-6 sm:px-4 rounded-lg border-2 border-dashed transition-colors cursor-pointer touch-manipulation text-center", {
|
|
1375
|
+
"border-primary bg-primary/5": isDragging.value,
|
|
1376
|
+
"border-base-300 hover:border-primary/50 active:border-primary/50": !isDragging.value
|
|
1377
|
+
}]),
|
|
1378
|
+
onDragover: _cache[0] || (_cache[0] = withModifiers(($event) => isDragging.value = true, ["prevent"])),
|
|
1379
|
+
onDragleave: _cache[1] || (_cache[1] = withModifiers(($event) => isDragging.value = false, ["prevent"])),
|
|
1380
|
+
onDrop: withModifiers(handleFileDrop, ["prevent"]),
|
|
1381
|
+
onClick: withModifiers(openFileSelector, ["prevent", "stop"])
|
|
1382
|
+
}, [
|
|
1383
|
+
_cache[4] || (_cache[4] = createElementVNode("svg", {
|
|
1384
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1385
|
+
class: "h-5 w-5 sm:h-12 sm:w-12 text-primary shrink-0",
|
|
1386
|
+
fill: "none",
|
|
1387
|
+
viewBox: "0 0 24 24",
|
|
1388
|
+
stroke: "currentColor"
|
|
1389
|
+
}, [createElementVNode("path", {
|
|
1390
|
+
"stroke-linecap": "round",
|
|
1391
|
+
"stroke-linejoin": "round",
|
|
1392
|
+
"stroke-width": "2",
|
|
1393
|
+
d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
|
|
1394
|
+
})], -1)),
|
|
1395
|
+
_cache[5] || (_cache[5] = createElementVNode("span", { class: "text-xs sm:text-lg font-medium" }, "Browse", -1)),
|
|
1396
|
+
_cache[6] || (_cache[6] = createElementVNode("span", { class: "hidden sm:inline text-xs text-base-content/70" }, "Drag and drop or click", -1)),
|
|
1397
|
+
!__props.recordId ? (openBlock(), createElementBlock("p", _hoisted_3$2, " Queued until ticket is created ")) : createCommentVNode("v-if", true)
|
|
1398
|
+
], 34),
|
|
1399
|
+
createCommentVNode(" Paste zone - collapse handles visibility via CSS, so no unmount during animation "),
|
|
1400
|
+
createElementVNode("div", {
|
|
1401
|
+
tabindex: "0",
|
|
1402
|
+
role: "textbox",
|
|
1403
|
+
"aria-label": "Paste image here",
|
|
1404
|
+
class: "flex flex-col items-center justify-center gap-1 sm:gap-2 py-2.5 px-2 sm:py-6 sm:px-4 rounded-lg border-2 border-dashed border-base-300 cursor-text outline-none focus:border-primary focus:ring-2 focus:ring-primary/20 focus:bg-primary/5 touch-manipulation text-center",
|
|
1405
|
+
onPaste: handlePaste
|
|
1406
|
+
}, [..._cache[7] || (_cache[7] = [
|
|
1407
|
+
createElementVNode("svg", {
|
|
1408
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1409
|
+
class: "h-5 w-5 sm:h-12 sm:w-12 text-primary shrink-0",
|
|
1410
|
+
fill: "none",
|
|
1411
|
+
viewBox: "0 0 24 24",
|
|
1412
|
+
stroke: "currentColor"
|
|
1413
|
+
}, [createElementVNode("path", {
|
|
1414
|
+
"stroke-linecap": "round",
|
|
1415
|
+
"stroke-linejoin": "round",
|
|
1416
|
+
"stroke-width": "2",
|
|
1417
|
+
d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
|
1418
|
+
})], -1),
|
|
1419
|
+
createElementVNode("span", { class: "text-xs sm:text-lg font-medium" }, "Paste", -1),
|
|
1420
|
+
createElementVNode("span", { class: "hidden sm:inline text-xs text-base-content/70" }, "Tap to focus, then paste", -1)
|
|
1421
|
+
])], 32)
|
|
1422
|
+
])) : createCommentVNode("v-if", true),
|
|
1197
1423
|
createCommentVNode(" Upload Queue "),
|
|
1198
|
-
uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div",
|
|
1424
|
+
uploadQueue.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(uploadQueue.value, (item) => {
|
|
1199
1425
|
return openBlock(), createElementBlock("div", {
|
|
1200
1426
|
key: item.id,
|
|
1201
1427
|
class: "flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 p-2 sm:p-3 bg-base-200 rounded-lg"
|
|
1202
|
-
}, [createElementVNode("div",
|
|
1203
|
-
createElementVNode("div",
|
|
1204
|
-
item.status === "uploading" ? (openBlock(), createElementBlock("div",
|
|
1428
|
+
}, [createElementVNode("div", _hoisted_5$2, [
|
|
1429
|
+
createElementVNode("div", _hoisted_6$2, toDisplayString(item.file.name), 1),
|
|
1430
|
+
item.status === "uploading" ? (openBlock(), createElementBlock("div", _hoisted_7$1, [createElementVNode("div", {
|
|
1205
1431
|
class: "bg-primary h-1.5 rounded-full transition-all",
|
|
1206
1432
|
style: normalizeStyle({ width: `${item.progress}%` })
|
|
1207
1433
|
}, null, 4)])) : createCommentVNode("v-if", true),
|
|
1208
|
-
item.status === "error" ? (openBlock(), createElementBlock("div",
|
|
1209
|
-
]), createElementVNode("div",
|
|
1434
|
+
item.status === "error" ? (openBlock(), createElementBlock("div", _hoisted_8, toDisplayString(item.errorMessage), 1)) : createCommentVNode("v-if", true)
|
|
1435
|
+
]), createElementVNode("div", _hoisted_9, [item.status === "error" ? (openBlock(), createElementBlock("button", {
|
|
1210
1436
|
key: 0,
|
|
1211
1437
|
onClick: withModifiers(($event) => retryUpload(item), ["prevent"]),
|
|
1212
1438
|
class: "btn btn-xs btn-ghost flex-1 sm:flex-none",
|
|
1213
1439
|
type: "button"
|
|
1214
|
-
}, " Retry ", 8,
|
|
1440
|
+
}, " Retry ", 8, _hoisted_10)) : createCommentVNode("v-if", true), item.status !== "uploading" ? (openBlock(), createElementBlock("button", {
|
|
1215
1441
|
key: 1,
|
|
1216
1442
|
onClick: withModifiers(($event) => removeFromQueue(item.id), ["prevent"]),
|
|
1217
1443
|
class: "btn btn-xs btn-ghost text-error flex-1 sm:flex-none",
|
|
1218
1444
|
type: "button"
|
|
1219
|
-
}, " Remove ", 8,
|
|
1445
|
+
}, " Remove ", 8, _hoisted_11)) : createCommentVNode("v-if", true)])]);
|
|
1220
1446
|
}), 128))])) : createCommentVNode("v-if", true),
|
|
1221
1447
|
createCommentVNode(" Attachments List "),
|
|
1222
|
-
(attachments.value.length > 0 || unref(attachmentsLoading)) && __props.recordId ? (openBlock(), createElementBlock("div",
|
|
1448
|
+
(attachments.value.length > 0 || unref(attachmentsLoading)) && __props.recordId ? (openBlock(), createElementBlock("div", _hoisted_12, [unref(attachmentsLoading) ? (openBlock(), createElementBlock("div", _hoisted_13, [..._cache[8] || (_cache[8] = [createElementVNode("span", { class: "loading loading-spinner loading-sm" }, null, -1)])])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(attachments.value, (file) => {
|
|
1223
1449
|
return openBlock(), createElementBlock("div", {
|
|
1224
1450
|
key: file.id,
|
|
1225
1451
|
class: normalizeClass(["flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-3 p-2 sm:p-3 bg-base-100 border border-base-300 rounded-lg hover:bg-base-200 transition-colors", { "cursor-pointer": isImage(file.type) }]),
|
|
1226
1452
|
onClick: withModifiers(($event) => isImage(file.type) && viewImage(file), ["prevent"])
|
|
1227
|
-
}, [createElementVNode("div",
|
|
1453
|
+
}, [createElementVNode("div", _hoisted_15, [createElementVNode("div", _hoisted_16, [createCommentVNode(" Image thumbnail preview "), isImage(file.type) ? (openBlock(), createElementBlock("div", _hoisted_17, [getImageUrlSync(file.id) ? (openBlock(), createElementBlock("img", {
|
|
1228
1454
|
key: 0,
|
|
1229
1455
|
src: getImageUrlSync(file.id),
|
|
1230
1456
|
alt: file.name,
|
|
1231
1457
|
class: "w-full h-full object-cover",
|
|
1232
1458
|
onError: handleImageError
|
|
1233
|
-
}, null, 40,
|
|
1459
|
+
}, null, 40, _hoisted_18)) : (openBlock(), createElementBlock("div", _hoisted_19, [..._cache[9] || (_cache[9] = [createElementVNode("span", { class: "loading loading-spinner loading-xs" }, null, -1)])]))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" File type badge for non-images "), createElementVNode("div", { class: normalizeClass(["badge badge-sm", getFileTypeBadgeClass(file.type)]) }, toDisplayString(getFileTypeLabel(file.type)), 3)], 2112))]), createElementVNode("div", _hoisted_20, [createElementVNode("div", _hoisted_21, toDisplayString(file.name), 1), createElementVNode("div", _hoisted_22, toDisplayString(formatFileSize(file.size)) + " • " + toDisplayString(formatDate(file.uploadedAt)), 1)])]), createElementVNode("div", {
|
|
1234
1460
|
class: "flex gap-1 justify-end sm:justify-start",
|
|
1235
1461
|
onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"]))
|
|
1236
1462
|
}, [
|
|
@@ -1240,7 +1466,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1240
1466
|
class: "btn btn-sm btn-ghost btn-circle",
|
|
1241
1467
|
title: "View Image",
|
|
1242
1468
|
type: "button"
|
|
1243
|
-
}, [..._cache[
|
|
1469
|
+
}, [..._cache[10] || (_cache[10] = [createElementVNode("svg", {
|
|
1244
1470
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1245
1471
|
class: "h-4 w-4",
|
|
1246
1472
|
fill: "none",
|
|
@@ -1256,13 +1482,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1256
1482
|
"stroke-linejoin": "round",
|
|
1257
1483
|
"stroke-width": "2",
|
|
1258
1484
|
d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
|
|
1259
|
-
})], -1)])], 8,
|
|
1485
|
+
})], -1)])], 8, _hoisted_23)) : createCommentVNode("v-if", true),
|
|
1260
1486
|
createElementVNode("button", {
|
|
1261
1487
|
onClick: withModifiers(($event) => downloadFile(file, $event), ["prevent"]),
|
|
1262
1488
|
class: "btn btn-sm btn-ghost btn-circle",
|
|
1263
1489
|
title: "Download",
|
|
1264
1490
|
type: "button"
|
|
1265
|
-
}, [..._cache[
|
|
1491
|
+
}, [..._cache[11] || (_cache[11] = [createElementVNode("svg", {
|
|
1266
1492
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1267
1493
|
class: "h-4 w-4",
|
|
1268
1494
|
fill: "none",
|
|
@@ -1273,14 +1499,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1273
1499
|
"stroke-linejoin": "round",
|
|
1274
1500
|
"stroke-width": "2",
|
|
1275
1501
|
d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
|
|
1276
|
-
})], -1)])], 8,
|
|
1502
|
+
})], -1)])], 8, _hoisted_24),
|
|
1277
1503
|
__props.canDelete ? (openBlock(), createElementBlock("button", {
|
|
1278
1504
|
key: 1,
|
|
1279
1505
|
onClick: withModifiers(($event) => confirmDelete(file), ["prevent"]),
|
|
1280
1506
|
class: "btn btn-sm btn-ghost btn-circle text-error",
|
|
1281
1507
|
title: "Delete",
|
|
1282
1508
|
type: "button"
|
|
1283
|
-
}, [..._cache[
|
|
1509
|
+
}, [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
|
|
1284
1510
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1285
1511
|
class: "h-4 w-4",
|
|
1286
1512
|
fill: "none",
|
|
@@ -1291,9 +1517,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1291
1517
|
"stroke-linejoin": "round",
|
|
1292
1518
|
"stroke-width": "2",
|
|
1293
1519
|
d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
|
|
1294
|
-
})], -1)])], 8,
|
|
1295
|
-
])], 10,
|
|
1296
|
-
}), 128))])) : !unref(attachmentsLoading) && __props.recordId ? (openBlock(), createElementBlock("div",
|
|
1520
|
+
})], -1)])], 8, _hoisted_25)) : createCommentVNode("v-if", true)
|
|
1521
|
+
])], 10, _hoisted_14);
|
|
1522
|
+
}), 128))])) : !unref(attachmentsLoading) && __props.recordId ? (openBlock(), createElementBlock("div", _hoisted_26, [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
|
|
1297
1523
|
xmlns: "http://www.w3.org/2000/svg",
|
|
1298
1524
|
class: "h-12 w-12 mx-auto mb-2 opacity-50",
|
|
1299
1525
|
fill: "none",
|
|
@@ -1344,8 +1570,245 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1344
1570
|
};
|
|
1345
1571
|
}
|
|
1346
1572
|
});
|
|
1347
|
-
var InlineAttachments_default = _sfc_main;
|
|
1573
|
+
var InlineAttachments_default = _sfc_main$3;
|
|
1574
|
+
|
|
1575
|
+
//#endregion
|
|
1576
|
+
//#region src/slices/support_ticket/shared/SupportTicketApprovalBadge.vue
|
|
1577
|
+
const _hoisted_1$2 = ["aria-label"];
|
|
1578
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
1579
|
+
__name: "SupportTicketApprovalBadge",
|
|
1580
|
+
props: {
|
|
1581
|
+
approvalStatus: {},
|
|
1582
|
+
size: { default: "md" },
|
|
1583
|
+
variant: { default: "default" }
|
|
1584
|
+
},
|
|
1585
|
+
setup(__props) {
|
|
1586
|
+
/**
|
|
1587
|
+
* SupportTicketApprovalBadge - A reusable Vue component for displaying support ticket approval status
|
|
1588
|
+
* as color-coded badges with consistent DaisyUI styling and accessibility features.
|
|
1589
|
+
*
|
|
1590
|
+
* @example
|
|
1591
|
+
* <SupportTicketApprovalBadge :approvalStatus="'PENDING'" size="md" />
|
|
1592
|
+
* <SupportTicketApprovalBadge :approvalStatus="'APPROVED'" size="sm" variant="outline" />
|
|
1593
|
+
*/
|
|
1594
|
+
const props = __props;
|
|
1595
|
+
/**
|
|
1596
|
+
* Configuration for each approval status badge
|
|
1597
|
+
*/
|
|
1598
|
+
const approvalConfig = {
|
|
1599
|
+
PENDING: {
|
|
1600
|
+
color: "badge-warning",
|
|
1601
|
+
text: "Pending",
|
|
1602
|
+
ariaLabel: "Approval: Awaiting staff decision"
|
|
1603
|
+
},
|
|
1604
|
+
APPROVED: {
|
|
1605
|
+
color: "badge-success",
|
|
1606
|
+
text: "Approved",
|
|
1607
|
+
ariaLabel: "Approval: Approved by staff"
|
|
1608
|
+
},
|
|
1609
|
+
REJECTED: {
|
|
1610
|
+
color: "badge-error",
|
|
1611
|
+
text: "Rejected",
|
|
1612
|
+
ariaLabel: "Approval: Rejected by staff"
|
|
1613
|
+
},
|
|
1614
|
+
INTERNAL: {
|
|
1615
|
+
color: "badge-info",
|
|
1616
|
+
text: "Internal",
|
|
1617
|
+
ariaLabel: "Approval: Internal staff ticket"
|
|
1618
|
+
}
|
|
1619
|
+
};
|
|
1620
|
+
const getApprovalConfig = (approvalStatus) => {
|
|
1621
|
+
const config$1 = approvalConfig[approvalStatus];
|
|
1622
|
+
if (!config$1) return {
|
|
1623
|
+
color: "badge-neutral",
|
|
1624
|
+
text: approvalStatus || "Unknown",
|
|
1625
|
+
ariaLabel: `Approval: ${approvalStatus || "Unknown status"}`
|
|
1626
|
+
};
|
|
1627
|
+
return config$1;
|
|
1628
|
+
};
|
|
1629
|
+
const config = computed(() => getApprovalConfig(props.approvalStatus));
|
|
1630
|
+
const badgeClasses = computed(() => {
|
|
1631
|
+
const baseClasses = ["badge", "text-xs"];
|
|
1632
|
+
baseClasses.push(config.value.color);
|
|
1633
|
+
if (props.size === "sm") baseClasses.push("badge-sm", "text-xs");
|
|
1634
|
+
else if (props.size === "lg") baseClasses.push("badge-lg", "text-sm");
|
|
1635
|
+
else baseClasses.push("text-xs", "sm:text-sm");
|
|
1636
|
+
if (props.variant === "outline") baseClasses.push("badge-outline");
|
|
1637
|
+
return baseClasses.join(" ");
|
|
1638
|
+
});
|
|
1639
|
+
const displayText = computed(() => config.value.text);
|
|
1640
|
+
const ariaLabel = computed(() => config.value.ariaLabel);
|
|
1641
|
+
return (_ctx, _cache) => {
|
|
1642
|
+
return openBlock(), createElementBlock("div", {
|
|
1643
|
+
class: normalizeClass(badgeClasses.value),
|
|
1644
|
+
"aria-label": ariaLabel.value,
|
|
1645
|
+
role: "status"
|
|
1646
|
+
}, toDisplayString(displayText.value), 11, _hoisted_1$2);
|
|
1647
|
+
};
|
|
1648
|
+
}
|
|
1649
|
+
});
|
|
1650
|
+
var SupportTicketApprovalBadge_default = _sfc_main$2;
|
|
1651
|
+
|
|
1652
|
+
//#endregion
|
|
1653
|
+
//#region src/slices/support_ticket/utils/formatTicketDate.ts
|
|
1654
|
+
/**
|
|
1655
|
+
* Takes an ISO date string and returns:
|
|
1656
|
+
* - formatted: "Jan 15, 2025"
|
|
1657
|
+
* - relative: "3 days ago" / "2 hours ago" / "just now"
|
|
1658
|
+
*/
|
|
1659
|
+
function formatTicketDate(isoString) {
|
|
1660
|
+
const date = new Date(isoString);
|
|
1661
|
+
if (isNaN(date.getTime())) return {
|
|
1662
|
+
formatted: isoString,
|
|
1663
|
+
relative: ""
|
|
1664
|
+
};
|
|
1665
|
+
const formatted = date.toLocaleDateString(void 0, {
|
|
1666
|
+
year: "numeric",
|
|
1667
|
+
month: "short",
|
|
1668
|
+
day: "numeric"
|
|
1669
|
+
});
|
|
1670
|
+
const diffMs = (/* @__PURE__ */ new Date()).getTime() - date.getTime();
|
|
1671
|
+
const diffSec = Math.floor(diffMs / 1e3);
|
|
1672
|
+
const diffMin = Math.floor(diffSec / 60);
|
|
1673
|
+
const diffHour = Math.floor(diffMin / 60);
|
|
1674
|
+
const diffDay = Math.floor(diffHour / 24);
|
|
1675
|
+
let relative;
|
|
1676
|
+
if (Math.abs(diffSec) < 60) relative = "just now";
|
|
1677
|
+
else if (diffSec < 0) {
|
|
1678
|
+
const sec = Math.abs(diffSec);
|
|
1679
|
+
const min = Math.floor(sec / 60);
|
|
1680
|
+
const hr = Math.floor(min / 60);
|
|
1681
|
+
const day = Math.floor(hr / 24);
|
|
1682
|
+
if (min < 60) relative = `in ${min} minute${min === 1 ? "" : "s"}`;
|
|
1683
|
+
else if (hr < 24) relative = `in ${hr} hour${hr === 1 ? "" : "s"}`;
|
|
1684
|
+
else relative = `in ${day} day${day === 1 ? "" : "s"}`;
|
|
1685
|
+
} else if (diffMin < 60) relative = diffMin === 1 ? "1 minute ago" : `${diffMin} minutes ago`;
|
|
1686
|
+
else if (diffHour < 24) relative = diffHour === 1 ? "1 hour ago" : `${diffHour} hours ago`;
|
|
1687
|
+
else if (diffDay < 30) relative = diffDay === 1 ? "1 day ago" : `${diffDay} days ago`;
|
|
1688
|
+
else {
|
|
1689
|
+
const diffWeeks = Math.floor(diffDay / 7);
|
|
1690
|
+
const diffMonths = Math.floor(diffDay / 30);
|
|
1691
|
+
if (diffWeeks < 4) relative = diffWeeks === 1 ? "1 week ago" : `${diffWeeks} weeks ago`;
|
|
1692
|
+
else if (diffMonths < 12) relative = diffMonths === 1 ? "1 month ago" : `${diffMonths} months ago`;
|
|
1693
|
+
else {
|
|
1694
|
+
const diffYears = Math.floor(diffMonths / 12);
|
|
1695
|
+
relative = diffYears === 1 ? "1 year ago" : `${diffYears} years ago`;
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
return {
|
|
1699
|
+
formatted,
|
|
1700
|
+
relative
|
|
1701
|
+
};
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
//#endregion
|
|
1705
|
+
//#region src/slices/support_ticket/shared/TimelineItem.vue
|
|
1706
|
+
const _hoisted_1$1 = { class: "flex items-center gap-2 mb-3 flex-wrap" };
|
|
1707
|
+
const _hoisted_2$1 = {
|
|
1708
|
+
key: 0,
|
|
1709
|
+
class: "badge badge-warning badge-sm gap-1 shrink-0",
|
|
1710
|
+
"aria-label": "Internal note"
|
|
1711
|
+
};
|
|
1712
|
+
const _hoisted_3$1 = {
|
|
1713
|
+
key: 1,
|
|
1714
|
+
class: "w-6 h-6 rounded-full bg-primary text-primary-content text-xs flex items-center justify-center shrink-0",
|
|
1715
|
+
"aria-hidden": "true"
|
|
1716
|
+
};
|
|
1717
|
+
const _hoisted_4$1 = { class: "font-semibold text-sm" };
|
|
1718
|
+
const _hoisted_5$1 = { class: "text-base-content/50 text-sm" };
|
|
1719
|
+
const _hoisted_6$1 = { class: "text-sm text-base-content break-words whitespace-pre-wrap" };
|
|
1720
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
1721
|
+
__name: "TimelineItem",
|
|
1722
|
+
props: {
|
|
1723
|
+
authorName: {},
|
|
1724
|
+
createdAt: {},
|
|
1725
|
+
variant: {}
|
|
1726
|
+
},
|
|
1727
|
+
setup(__props) {
|
|
1728
|
+
const props = __props;
|
|
1729
|
+
const authorInitial = computed(() => {
|
|
1730
|
+
return (props.authorName?.trim() || "?").charAt(0).toUpperCase();
|
|
1731
|
+
});
|
|
1732
|
+
const relativeTime = computed(() => {
|
|
1733
|
+
return props.createdAt ? formatTicketDate(props.createdAt).relative : "";
|
|
1734
|
+
});
|
|
1735
|
+
return (_ctx, _cache) => {
|
|
1736
|
+
return openBlock(), createElementBlock("div", { class: normalizeClass(["card card-bordered p-4 w-full", __props.variant === "internal" ? "bg-warning/10 border-warning/30" : "bg-base-100"]) }, [createElementVNode("div", _hoisted_1$1, [
|
|
1737
|
+
__props.variant === "internal" ? (openBlock(), createElementBlock("span", _hoisted_2$1, [..._cache[0] || (_cache[0] = [createElementVNode("svg", {
|
|
1738
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1739
|
+
fill: "none",
|
|
1740
|
+
viewBox: "0 0 24 24",
|
|
1741
|
+
"stroke-width": "1.5",
|
|
1742
|
+
stroke: "currentColor",
|
|
1743
|
+
class: "w-3.5 h-3.5"
|
|
1744
|
+
}, [createElementVNode("path", {
|
|
1745
|
+
"stroke-linecap": "round",
|
|
1746
|
+
"stroke-linejoin": "round",
|
|
1747
|
+
d: "M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z"
|
|
1748
|
+
})], -1), createTextVNode(" Internal ", -1)])])) : (openBlock(), createElementBlock("span", _hoisted_3$1, toDisplayString(authorInitial.value), 1)),
|
|
1749
|
+
createElementVNode("span", _hoisted_4$1, toDisplayString(__props.authorName), 1),
|
|
1750
|
+
createElementVNode("span", _hoisted_5$1, "· " + toDisplayString(relativeTime.value), 1)
|
|
1751
|
+
]), createElementVNode("div", _hoisted_6$1, [renderSlot(_ctx.$slots, "default")])], 2);
|
|
1752
|
+
};
|
|
1753
|
+
}
|
|
1754
|
+
});
|
|
1755
|
+
var TimelineItem_default = _sfc_main$1;
|
|
1756
|
+
|
|
1757
|
+
//#endregion
|
|
1758
|
+
//#region src/slices/support_ticket/shared/TimelineSystemEvent.vue
|
|
1759
|
+
const _hoisted_1 = { class: "py-2 flex items-start gap-2 text-sm" };
|
|
1760
|
+
const _hoisted_2 = { class: "flex-1 min-w-0" };
|
|
1761
|
+
const _hoisted_3 = { class: "font-medium text-base-content/70" };
|
|
1762
|
+
const _hoisted_4 = { class: "text-base-content/50 ml-1" };
|
|
1763
|
+
const _hoisted_5 = { class: "line-through text-base-content/40 ml-1" };
|
|
1764
|
+
const _hoisted_6 = { class: "ml-1" };
|
|
1765
|
+
const _hoisted_7 = { class: "text-base-content/30 text-xs" };
|
|
1766
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
1767
|
+
__name: "TimelineSystemEvent",
|
|
1768
|
+
props: {
|
|
1769
|
+
author: {},
|
|
1770
|
+
message: {},
|
|
1771
|
+
timestamp: {},
|
|
1772
|
+
oldValue: {},
|
|
1773
|
+
newValue: {}
|
|
1774
|
+
},
|
|
1775
|
+
setup(__props) {
|
|
1776
|
+
const props = __props;
|
|
1777
|
+
const relativeTime = computed(() => {
|
|
1778
|
+
return props.timestamp ? formatTicketDate(props.timestamp).relative : "";
|
|
1779
|
+
});
|
|
1780
|
+
return (_ctx, _cache) => {
|
|
1781
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [_cache[1] || (_cache[1] = createElementVNode("svg", {
|
|
1782
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1783
|
+
fill: "none",
|
|
1784
|
+
viewBox: "0 0 24 24",
|
|
1785
|
+
"stroke-width": "1.5",
|
|
1786
|
+
stroke: "currentColor",
|
|
1787
|
+
class: "w-4 h-4 text-base-content/30 shrink-0 mt-0.5",
|
|
1788
|
+
"aria-hidden": "true"
|
|
1789
|
+
}, [createElementVNode("path", {
|
|
1790
|
+
"stroke-linecap": "round",
|
|
1791
|
+
"stroke-linejoin": "round",
|
|
1792
|
+
d: "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124a6.57 6.57 0 01.22-.128c.332-.183.582-.495.644-.869l.214-1.281z"
|
|
1793
|
+
}), createElementVNode("path", {
|
|
1794
|
+
"stroke-linecap": "round",
|
|
1795
|
+
"stroke-linejoin": "round",
|
|
1796
|
+
d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
|
|
1797
|
+
})], -1)), createElementVNode("div", _hoisted_2, [
|
|
1798
|
+
createElementVNode("span", _hoisted_3, toDisplayString(__props.author), 1),
|
|
1799
|
+
createElementVNode("span", _hoisted_4, [__props.oldValue && __props.newValue ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
1800
|
+
createTextVNode(toDisplayString(__props.message) + " ", 1),
|
|
1801
|
+
createElementVNode("span", _hoisted_5, toDisplayString(__props.oldValue), 1),
|
|
1802
|
+
_cache[0] || (_cache[0] = createElementVNode("span", { class: "mx-1" }, "→", -1)),
|
|
1803
|
+
createElementVNode("span", null, toDisplayString(__props.newValue), 1)
|
|
1804
|
+
], 64)) : __props.newValue ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(__props.message) + " ", 1), createElementVNode("span", _hoisted_6, toDisplayString(__props.newValue), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(__props.message), 1)], 64))]),
|
|
1805
|
+
createElementVNode("span", _hoisted_7, " · " + toDisplayString(relativeTime.value), 1)
|
|
1806
|
+
])]);
|
|
1807
|
+
};
|
|
1808
|
+
}
|
|
1809
|
+
});
|
|
1810
|
+
var TimelineSystemEvent_default = _sfc_main;
|
|
1348
1811
|
|
|
1349
1812
|
//#endregion
|
|
1350
|
-
export {
|
|
1351
|
-
//# sourceMappingURL=
|
|
1813
|
+
export { InlineAttachments_default as a, SupportTicketTypeBadge_default as c, ConfirmDialog_default as d, SupportTicketApprovalBadge_default as i, SupportTicketPriorityBadge_default as l, TimelineItem_default as n, formatCustomerCreditValue as o, formatTicketDate as r, formatStaffCreditValue as s, TimelineSystemEvent_default as t, ImageModal_default as u };
|
|
1814
|
+
//# sourceMappingURL=TimelineSystemEvent-B69B3eeL.js.map
|