@dragonmastery/dragoncore-vue 0.0.22 → 0.0.24
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/{AppLink-CHMMrSFI.js → AppLink-FcNGKgvG.js} +1 -1
- package/dist/{AppLink-CHMMrSFI.js.map → AppLink-FcNGKgvG.js.map} +1 -1
- package/dist/Appearance-Ch4zfWZ3.js +3 -0
- package/dist/{Appearance-DxWTyx1M.js → Appearance-shr0Aql0.js} +1 -1
- package/dist/{Appearance-DxWTyx1M.js.map → Appearance-shr0Aql0.js.map} +1 -1
- package/dist/{ChangePasswordPage-ePeFkv_6.js → ChangePasswordPage-C633yQiU.js} +2 -2
- package/dist/{ChangePasswordPage-ePeFkv_6.js.map → ChangePasswordPage-C633yQiU.js.map} +1 -1
- package/dist/ChangePasswordPage-CYuCCosx.js +7 -0
- package/dist/ConfirmDialog-DjthOYU6.js +85 -0
- package/dist/ConfirmDialog-DjthOYU6.js.map +1 -0
- package/dist/ConsentFlowStep-DbQpQQA-.js +149 -0
- package/dist/ConsentFlowStep-DbQpQQA-.js.map +1 -0
- package/dist/ConsentRequired-BiCKEVBG.js +113 -0
- package/dist/ConsentRequired-BiCKEVBG.js.map +1 -0
- package/dist/CreateTeamForm-BnC_JPEK.js +12 -0
- package/dist/CreateTeamForm-CvMUbK5X.js +142 -0
- package/dist/CreateTeamForm-CvMUbK5X.js.map +1 -0
- package/dist/CreateTeamMemberForm-DUVHzzF0.js +140 -0
- package/dist/CreateTeamMemberForm-DUVHzzF0.js.map +1 -0
- package/dist/CreateTeamMemberForm-QpDhqvfb.js +12 -0
- package/dist/CreateUserPage-C9uOeYDJ.js +7 -0
- package/dist/{CreateUserPage-Cdv-3U5M.js → CreateUserPage-CqKcY7_X.js} +2 -2
- package/dist/{CreateUserPage-Cdv-3U5M.js.map → CreateUserPage-CqKcY7_X.js.map} +1 -1
- package/dist/CreditBalanceDashboard-CS4fV6MP.js +13 -0
- package/dist/CreditBalanceDashboard-CSUKpYSo.js +28 -0
- package/dist/CreditBalanceDashboard-CSUKpYSo.js.map +1 -0
- package/dist/CreditManagement-BdRd_TLz.js +356 -0
- package/dist/CreditManagement-BdRd_TLz.js.map +1 -0
- package/dist/CreditManagement-Buuew7-f.js +13 -0
- package/dist/CreditTransactionHistory-cYyRFOdS.js +229 -0
- package/dist/CreditTransactionHistory-cYyRFOdS.js.map +1 -0
- package/dist/CustomerCreateSupportTicketForm-BDNs8cKo.js +158 -0
- package/dist/CustomerCreateSupportTicketForm-BDNs8cKo.js.map +1 -0
- package/dist/CustomerCreateSupportTicketForm-Dk6lwDGL.js +14 -0
- package/dist/{CustomerSupportTicketDetailPage-UGqVoV4j.js → CustomerSupportTicketDetailPage-DGfUzPl8.js} +12 -9
- package/dist/{CustomerSupportTicketDetailPage-UGqVoV4j.js.map → CustomerSupportTicketDetailPage-DGfUzPl8.js.map} +1 -1
- package/dist/CustomerSupportTicketList-DoWnrEwj.js +63 -0
- package/dist/{CustomerSupportTicketParent-C2XdM5f7.js → CustomerSupportTicketParent-BpBuYCrP.js} +4 -4
- package/dist/{CustomerSupportTicketParent-C2XdM5f7.js.map → CustomerSupportTicketParent-BpBuYCrP.js.map} +1 -1
- package/dist/CustomerSupportTicketParent-Djy7pNqO.js +8 -0
- package/dist/CustomerSupportTicketSuccess-BKQ07Y8H.js +12 -0
- package/dist/CustomerSupportTicketSuccess-DZ6_1jL9.js +54 -0
- package/dist/CustomerSupportTicketSuccess-DZ6_1jL9.js.map +1 -0
- package/dist/EditTeamForm-CPJBjZa2.js +163 -0
- package/dist/EditTeamForm-CPJBjZa2.js.map +1 -0
- package/dist/EditTeamForm-DS_zV1Mk.js +12 -0
- package/dist/EditTeamMemberForm-D7D1Zddh.js +9 -0
- package/dist/{EditTeamMemberForm-BgjNP8MZ.js → EditTeamMemberForm-DfgJr5Cy.js} +7 -72
- package/dist/EditTeamMemberForm-DfgJr5Cy.js.map +1 -0
- package/dist/EditUserPage-C0K7EGjM.js +8 -0
- package/dist/{EditUserPage-uLPhRW5x.js → EditUserPage-CI_jtU8P.js} +4 -4
- package/dist/{EditUserPage-uLPhRW5x.js.map → EditUserPage-CI_jtU8P.js.map} +1 -1
- package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js +189 -0
- package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js.map +1 -0
- package/dist/FieldsetSection-Cd4B8Ad7.js +27 -0
- package/dist/FieldsetSection-Cd4B8Ad7.js.map +1 -0
- package/dist/{ForgotPassword-B8JG_n9D.js → ForgotPassword-Ckb9Z-wb.js} +4 -4
- package/dist/{ForgotPassword-B8JG_n9D.js.map → ForgotPassword-Ckb9Z-wb.js.map} +1 -1
- package/dist/ForgotPassword-tJVSg7PB.js +8 -0
- package/dist/{TimelineSystemEvent-BGG9WkQw.js → InlineAttachments-DAn_QknY.js} +60 -661
- package/dist/InlineAttachments-DAn_QknY.js.map +1 -0
- package/dist/{LoginForm-C-_lBDyl.js → LoginForm-CMN2T1fA.js} +5 -5
- package/dist/{LoginForm-C-_lBDyl.js.map → LoginForm-CMN2T1fA.js.map} +1 -1
- package/dist/LoginForm-QFJ8NHww.js +8 -0
- package/dist/{Logout-CIAoXyOg.js → Logout-CFLYHlLr.js} +5 -5
- package/dist/{Logout-CIAoXyOg.js.map → Logout-CFLYHlLr.js.map} +1 -1
- package/dist/Logout-CjDBff3W.js +8 -0
- package/dist/{MfaSetup-9qdTKQ0m.js → MfaSetup-85i4HlNJ.js} +7 -7
- package/dist/{MfaSetup-9qdTKQ0m.js.map → MfaSetup-85i4HlNJ.js.map} +1 -1
- package/dist/MfaSetup-C5mBMKsa.js +9 -0
- package/dist/{MfaVerify-Cgta1nE9.js → MfaVerify-C-A75TFZ.js} +6 -6
- package/dist/{MfaVerify-Cgta1nE9.js.map → MfaVerify-C-A75TFZ.js.map} +1 -1
- package/dist/MfaVerify-Dy2aV5Gk.js +9 -0
- package/dist/{RecordVersionViewer-BWZ78vvE.js → RecordVersionViewer-D2j10HdK.js} +1 -1
- package/dist/{RecordVersionViewer-BWZ78vvE.js.map → RecordVersionViewer-D2j10HdK.js.map} +1 -1
- package/dist/{ResetPassword-DHUfERyS.js → ResetPassword-Cd-Yxp8E.js} +4 -4
- package/dist/{ResetPassword-DHUfERyS.js.map → ResetPassword-Cd-Yxp8E.js.map} +1 -1
- package/dist/ResetPassword-D6to3G6a.js +8 -0
- package/dist/{SavedFiltersPage-CjFv4fI_.js → SavedFiltersPage-DPJA7feS.js} +62 -34
- package/dist/{SavedFiltersPage-CjFv4fI_.js.map → SavedFiltersPage-DPJA7feS.js.map} +1 -1
- package/dist/{Signup-DfG7Xmkx.js → Signup-2pqvJiVt.js} +57 -57
- package/dist/Signup-2pqvJiVt.js.map +1 -0
- package/dist/Signup-XdImA1os.js +9 -0
- package/dist/SignupConsentFlow-dyQSp9iU.js +214 -0
- package/dist/SignupConsentFlow-dyQSp9iU.js.map +1 -0
- package/dist/{SignupRequirementsPage-Sm3vgkhC.js → SignupRequirementsPage-Cf-ElkEq.js} +9 -8
- package/dist/{SignupRequirementsPage-Sm3vgkhC.js.map → SignupRequirementsPage-Cf-ElkEq.js.map} +1 -1
- package/dist/StaffCreateSupportTicketForm-BgaZJWpj.js +255 -0
- package/dist/StaffCreateSupportTicketForm-BgaZJWpj.js.map +1 -0
- package/dist/StaffCreateSupportTicketForm-C_i7mz26.js +14 -0
- package/dist/{StaffSupportTicketDetailPage-ePkLJU12.js → StaffSupportTicketDetailPage-DoZClE4Y.js} +17 -14
- package/dist/StaffSupportTicketDetailPage-DoZClE4Y.js.map +1 -0
- package/dist/StaffSupportTicketList-DejFCAh7.js +63 -0
- package/dist/StaffSupportTicketParent-B7mEN1oD.js +8 -0
- package/dist/{StaffSupportTicketParent-Bz-SH6-k.js → StaffSupportTicketParent-BvPwgOqH.js} +4 -4
- package/dist/{StaffSupportTicketParent-Bz-SH6-k.js.map → StaffSupportTicketParent-BvPwgOqH.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-Bt9FWXmM.js +12 -0
- package/dist/StaffSupportTicketSuccess-CUu2MNXF.js +54 -0
- package/dist/StaffSupportTicketSuccess-CUu2MNXF.js.map +1 -0
- package/dist/{SupportStaffPage-0X1VMovT.js → SupportStaffPage-B69-kuvg.js} +8 -7
- package/dist/{SupportStaffPage-0X1VMovT.js.map → SupportStaffPage-B69-kuvg.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js → SupportTicketDevLifecycleBadge-BoAjMb08.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js.map → SupportTicketDevLifecycleBadge-BoAjMb08.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-CLDqc4Pb.js → SupportTicketMaintenancePage-Bptja-xb.js} +5 -4
- package/dist/{SupportTicketMaintenancePage-CLDqc4Pb.js.map → SupportTicketMaintenancePage-Bptja-xb.js.map} +1 -1
- package/dist/TeamAttachmentsTab-D4iYMMF3.js +63 -0
- package/dist/TeamHistoryTab-CRONdHcL.js +6 -0
- package/dist/{TeamHistoryTab-D0zW5wjj.js → TeamHistoryTab-DM8KBEG1.js} +7 -19
- package/dist/TeamHistoryTab-DM8KBEG1.js.map +1 -0
- package/dist/TeamList-BZN0Ek6v.js +141 -0
- package/dist/TeamList-BZN0Ek6v.js.map +1 -0
- package/dist/TeamList-DXtr4j1y.js +8 -0
- package/dist/TeamMemberList-JfyklWlt.js +7 -0
- package/dist/TeamMemberList-TTAPf2GN.js +166 -0
- package/dist/TeamMemberList-TTAPf2GN.js.map +1 -0
- package/dist/TeamMemberParent-a2xQB08R.js +10 -0
- package/dist/TeamMemberParent-xv56jEhd.js +83 -0
- package/dist/TeamMemberParent-xv56jEhd.js.map +1 -0
- package/dist/TeamMembersTab-BGcdyEE8.js +3 -0
- package/dist/{TeamMembersTab-4gmnP9sD.js → TeamMembersTab-BigqpBDH.js} +1 -1
- package/dist/{TeamMembersTab-4gmnP9sD.js.map → TeamMembersTab-BigqpBDH.js.map} +1 -1
- package/dist/{TeamNotesTab-DImzeVPk.js → TeamNotesTab-BgxleidZ.js} +6 -5
- package/dist/{TeamNotesTab-DImzeVPk.js.map → TeamNotesTab-BgxleidZ.js.map} +1 -1
- package/dist/TeamNotesTab-o7glfjoY.js +8 -0
- package/dist/TeamParent-7_XO4IOH.js +83 -0
- package/dist/TeamParent-7_XO4IOH.js.map +1 -0
- package/dist/TeamParent-Cf6RWFHo.js +11 -0
- package/dist/{TimelineNoteInput-Cpnwnx7B.js → TimelineNoteInput-D6LOdKZW.js} +3 -2
- package/dist/{TimelineNoteInput-Cpnwnx7B.js.map → TimelineNoteInput-D6LOdKZW.js.map} +1 -1
- package/dist/TimelineSystemEvent-zCMUx5Zz.js +525 -0
- package/dist/TimelineSystemEvent-zCMUx5Zz.js.map +1 -0
- package/dist/UserListPage-Bmwg0an5.js +5 -0
- package/dist/{UserListPage-DpkOdR1U.js → UserListPage-DtA8tLff.js} +4 -3
- package/dist/{UserListPage-DpkOdR1U.js.map → UserListPage-DtA8tLff.js.map} +1 -1
- package/dist/UserProfilePage-DRbCAr9H.js +8 -0
- package/dist/{UserProfilePage-CWRgwGQH.js → UserProfilePage-g4-VEDXo.js} +4 -4
- package/dist/{UserProfilePage-CWRgwGQH.js.map → UserProfilePage-g4-VEDXo.js.map} +1 -1
- package/dist/{VerifyEmail-DXZ4T5eN.js → VerifyEmail-CM5ehFB8.js} +7 -7
- package/dist/{VerifyEmail-DXZ4T5eN.js.map → VerifyEmail-CM5ehFB8.js.map} +1 -1
- package/dist/VerifyEmail-DMHczC9f.js +10 -0
- package/dist/ViewTeam-CbV0w4J_.js +220 -0
- package/dist/ViewTeam-CbV0w4J_.js.map +1 -0
- package/dist/ViewTeam-LAQmZPzc.js +8 -0
- package/dist/ViewTeamMember-DtWqc_q5.js +7 -0
- package/dist/ViewTeamMember-y3txJoRR.js +167 -0
- package/dist/ViewTeamMember-y3txJoRR.js.map +1 -0
- package/dist/ZiniaContainer-CjVhCnGB.js +18 -0
- package/dist/ZiniaContainer-CjVhCnGB.js.map +1 -0
- package/dist/{convertToLocalDateTime-CFhtN6PI.js → convertToLocalDateTime-BF25N4xd.js} +1 -2
- package/dist/convertToLocalDateTime-BF25N4xd.js.map +1 -0
- package/dist/customerSupportTicketRoutes-DYG3Vlzz.js +142 -0
- package/dist/customerSupportTicketRoutes-DYG3Vlzz.js.map +1 -0
- package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-B-_WQHOr.js} +1 -1
- package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-B-_WQHOr.js.map} +1 -1
- package/dist/{extractRpcErrorMessage-Di8E8-Wh.js → extractRpcErrorMessage-diUBl6Ij.js} +1 -1
- package/dist/{extractRpcErrorMessage-Di8E8-Wh.js.map → extractRpcErrorMessage-diUBl6Ij.js.map} +1 -1
- package/dist/index.d.ts +859 -900
- package/dist/index.js +66 -38
- package/dist/{mfaSchema-BnRWf0ma.js → mfaSchema-Ukqzdyck.js} +1 -1
- package/dist/{mfaSchema-BnRWf0ma.js.map → mfaSchema-Ukqzdyck.js.map} +1 -1
- package/dist/saved_filter-fHzm4pk5.js +1210 -0
- package/dist/saved_filter-fHzm4pk5.js.map +1 -0
- package/dist/signupConsentStorage-DS9vCUuC.js +27 -0
- package/dist/signupConsentStorage-DS9vCUuC.js.map +1 -0
- package/dist/{src-CEBiyg_f.css → src-C6ZmNSSU.css} +1 -1
- package/dist/{src-CEBiyg_f.css.map → src-C6ZmNSSU.css.map} +1 -1
- package/dist/src-DgC3Izwe.js +4655 -0
- package/dist/src-DgC3Izwe.js.map +1 -0
- package/dist/staffSupportTicketRoutes-Crk6BFEE.js +135 -0
- package/dist/staffSupportTicketRoutes-Crk6BFEE.js.map +1 -0
- package/dist/teamMemberMetadata-CQnbVepq.js +49 -0
- package/dist/teamMemberMetadata-CQnbVepq.js.map +1 -0
- package/dist/teamMetadata-DlvwO5V0.js +53 -0
- package/dist/teamMetadata-DlvwO5V0.js.map +1 -0
- package/dist/teamRoutes-_-DGwLZW.js +192 -0
- package/dist/teamRoutes-_-DGwLZW.js.map +1 -0
- package/dist/team_memberRoutes-B7Zzuuz8.js +84 -0
- package/dist/team_memberRoutes-B7Zzuuz8.js.map +1 -0
- package/dist/{useBreadcrumbs-qB6ghsAf.js → useBreadcrumbs-DIqU5AAp.js} +1 -1
- package/dist/{useBreadcrumbs-qB6ghsAf.js.map → useBreadcrumbs-DIqU5AAp.js.map} +1 -1
- package/dist/{useEmailVerificationChannel-BiiuuTUM.js → useEmailVerificationChannel-B51z65PN.js} +3 -3
- package/dist/{useEmailVerificationChannel-BiiuuTUM.js.map → useEmailVerificationChannel-B51z65PN.js.map} +1 -1
- package/dist/{useMutation-BMZJLpgx.js → useMutation-BLNuJoYl.js} +6 -3
- package/dist/useMutation-BLNuJoYl.js.map +1 -0
- package/dist/{useQuery-qpXzBuVg.js → useQuery-BzUGEOj0.js} +4 -3
- package/dist/{useQuery-qpXzBuVg.js.map → useQuery-BzUGEOj0.js.map} +1 -1
- package/dist/{useQueryCache-DkRwK5Gz.js → useQueryCache-alzaRWEb.js} +2 -2
- package/dist/{useQueryCache-DkRwK5Gz.js.map → useQueryCache-alzaRWEb.js.map} +1 -1
- package/dist/{useReturnUrl-qFeazn-G.js → useReturnUrl-B5V3SJf5.js} +1 -1
- package/dist/{useReturnUrl-qFeazn-G.js.map → useReturnUrl-B5V3SJf5.js.map} +1 -1
- package/dist/{useRpcAuth-x5Gn5gR0.js → useRpcAuth-CJtq1dqM.js} +9 -192
- package/dist/useRpcAuth-CJtq1dqM.js.map +1 -0
- package/dist/userAuthorized-C09FHWGL.js +185 -0
- package/dist/userAuthorized-C09FHWGL.js.map +1 -0
- package/package.json +3 -3
- package/dist/Appearance-D5pwxuf4.js +0 -3
- package/dist/ChangePasswordPage-DVBkBcm9.js +0 -6
- package/dist/ConsentRequired-e7DEOGNg.js +0 -213
- package/dist/ConsentRequired-e7DEOGNg.js.map +0 -1
- package/dist/CreateTeamForm-CV9Y00tD.js +0 -35
- package/dist/CreateTeamMemberForm-BX1vUcdg.js +0 -35
- package/dist/CreateUserPage-DQoEX-Er.js +0 -6
- package/dist/CreditBalanceDashboard-BZAnEjSz.js +0 -35
- package/dist/CreditManagement-C4-_c175.js +0 -35
- package/dist/CustomerCreateSupportTicketForm-3tIJKMnJ.js +0 -35
- package/dist/CustomerSupportTicketList-CFQEoXtm.js +0 -35
- package/dist/CustomerSupportTicketParent-Tnov1dEg.js +0 -7
- package/dist/CustomerSupportTicketSuccess-DLszUCsg.js +0 -35
- package/dist/EditTeamForm-Ww04P2M0.js +0 -35
- package/dist/EditTeamMemberForm-BgjNP8MZ.js.map +0 -1
- package/dist/EditTeamMemberForm-COfY-2FQ.js +0 -6
- package/dist/EditUserPage-BJHs3raG.js +0 -7
- package/dist/ForgotPassword-CzMPARbz.js +0 -7
- package/dist/LoginForm-DdzRn8nU.js +0 -7
- package/dist/Logout-3_Ns09Vy.js +0 -7
- package/dist/MfaSetup-BE_NP70B.js +0 -8
- package/dist/MfaVerify-CyiJ9A3L.js +0 -8
- package/dist/ResetPassword-DXHunZVp.js +0 -7
- package/dist/Signup-Cy1puoqh.js +0 -9
- package/dist/Signup-DfG7Xmkx.js.map +0 -1
- package/dist/SignupConsentFlow-YGWhF7tj.js +0 -269
- package/dist/SignupConsentFlow-YGWhF7tj.js.map +0 -1
- package/dist/StaffCreateSupportTicketForm-C5tRPz95.js +0 -35
- package/dist/StaffSupportTicketDetailPage-ePkLJU12.js.map +0 -1
- package/dist/StaffSupportTicketList-BbiPTm54.js +0 -35
- package/dist/StaffSupportTicketParent-D2onnMqe.js +0 -7
- package/dist/StaffSupportTicketSuccess-DLVRTvr1.js +0 -35
- package/dist/TeamAttachmentsTab-B-xXmvOy.js +0 -35
- package/dist/TeamHistoryTab-Bb7mq4Dc.js +0 -4
- package/dist/TeamHistoryTab-D0zW5wjj.js.map +0 -1
- package/dist/TeamList-B-cFoclM.js +0 -35
- package/dist/TeamMemberList-D3GNHlXH.js +0 -35
- package/dist/TeamMemberParent-BKfPMX05.js +0 -35
- package/dist/TeamMembersTab-CBB2Yl_I.js +0 -3
- package/dist/TeamNotesTab-BbODx7wS.js +0 -7
- package/dist/TeamParent-5lokhztw.js +0 -35
- package/dist/TimelineSystemEvent-BGG9WkQw.js.map +0 -1
- package/dist/UserListPage-4hZll_PC.js +0 -4
- package/dist/UserProfilePage-qFrg3PiC.js +0 -7
- package/dist/VerifyEmail-C5EO8OFo.js +0 -9
- package/dist/ViewTeam-Die0SWa_.js +0 -35
- package/dist/ViewTeamMember-_sqrqGit.js +0 -35
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +0 -1
- package/dist/src-_IeDZXH6.js +0 -8951
- package/dist/src-_IeDZXH6.js.map +0 -1
- package/dist/useMutation-BMZJLpgx.js.map +0 -1
- package/dist/useRpcAuth-x5Gn5gR0.js.map +0 -1
- package/dist/useSignupPendingData-BWHwUHhL.js +0 -47
- package/dist/useSignupPendingData-BWHwUHhL.js.map +0 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
2
|
+
import { i as CreditBalanceOverview_default, t as CreditTransactionHistory_default } from "./CreditTransactionHistory-cYyRFOdS.js";
|
|
3
|
+
import { Fragment, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, openBlock, provide, ref, toDisplayString, unref, withCtx } from "vue";
|
|
4
|
+
import { toast } from "vue3-toastify";
|
|
5
|
+
import { AddCreditsSchema, SetMonthlyAllocationSchema, formatDollar } from "@dragonmastery/dragoncore-shared";
|
|
6
|
+
import { useForm, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
7
|
+
|
|
8
|
+
//#region src/slices/customer/features/credit-management/creditFormMetadata.ts
|
|
9
|
+
const addCreditsSchemaWithMetadata = withMetadata(AddCreditsSchema, "addCreditsSchema", {
|
|
10
|
+
amount: {
|
|
11
|
+
label: "Amount",
|
|
12
|
+
placeholder: "e.g., 100.00",
|
|
13
|
+
helpText: "Enter the amount to add to rollover credits"
|
|
14
|
+
},
|
|
15
|
+
reason: {
|
|
16
|
+
label: "Reason",
|
|
17
|
+
inputType: "textarea",
|
|
18
|
+
placeholder: "e.g., Purchase, Bonus, Refund",
|
|
19
|
+
helpText: "Optional reason for adding credits"
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const setMonthlyAllocationSchemaWithMetadata = withMetadata(SetMonthlyAllocationSchema, "setMonthlyAllocationSchema", { amount: {
|
|
23
|
+
label: "Monthly Allocation Amount",
|
|
24
|
+
placeholder: "e.g., 200.00",
|
|
25
|
+
helpText: "This amount will be reset monthly"
|
|
26
|
+
} });
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/slices/customer/features/credit-management/AddCredits.vue
|
|
30
|
+
const _hoisted_1$3 = { class: "card bg-base-100 shadow-xl" };
|
|
31
|
+
const _hoisted_2$3 = { class: "card-body" };
|
|
32
|
+
const _hoisted_3$3 = {
|
|
33
|
+
key: 0,
|
|
34
|
+
class: "alert alert-error mb-4"
|
|
35
|
+
};
|
|
36
|
+
const _hoisted_4$3 = { class: "flex justify-center mt-6" };
|
|
37
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
38
|
+
__name: "AddCredits",
|
|
39
|
+
props: { onSuccess: {
|
|
40
|
+
type: Function,
|
|
41
|
+
default: () => {}
|
|
42
|
+
} },
|
|
43
|
+
setup(__props) {
|
|
44
|
+
const props = __props;
|
|
45
|
+
const { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaResetButton, ZiniaFormErrorsSummary, refreshFormData } = useForm(addCreditsSchemaWithMetadata, {
|
|
46
|
+
storeName: `add-credits-form`,
|
|
47
|
+
persistToLocalStorage: false,
|
|
48
|
+
renderStyle: "daisy_ui",
|
|
49
|
+
fetchData: async () => {
|
|
50
|
+
return {
|
|
51
|
+
amount: "",
|
|
52
|
+
reason: ""
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const { mutate: addCredits } = useMutation((api, input) => api.customer.addCredits(input), { invalidate: /^customer:credit/ });
|
|
57
|
+
const refreshCredits = inject("refreshCredits", () => {});
|
|
58
|
+
const beforeValidate = () => {
|
|
59
|
+
return true;
|
|
60
|
+
};
|
|
61
|
+
const handleSubmit = async (formData) => {
|
|
62
|
+
const result = await addCredits({
|
|
63
|
+
amount: formData.amount,
|
|
64
|
+
reason: formData.reason || void 0
|
|
65
|
+
});
|
|
66
|
+
if (!result) throw new Error("Failed to add credits");
|
|
67
|
+
return result;
|
|
68
|
+
};
|
|
69
|
+
const handleSuccess = async (_) => {
|
|
70
|
+
refreshFormData();
|
|
71
|
+
toast.success(`Added ${form.values.amount} credits!`);
|
|
72
|
+
refreshCredits();
|
|
73
|
+
props.onSuccess();
|
|
74
|
+
};
|
|
75
|
+
const handleError = (error) => {
|
|
76
|
+
form.setSubmitError(error instanceof Error ? error.message : "An unknown error occurred");
|
|
77
|
+
};
|
|
78
|
+
return (_ctx, _cache) => {
|
|
79
|
+
return openBlock(), createElementBlock("div", _hoisted_1$3, [createElementVNode("div", _hoisted_2$3, [
|
|
80
|
+
_cache[1] || (_cache[1] = createElementVNode("h3", { class: "card-title text-lg" }, "Add Credits", -1)),
|
|
81
|
+
_cache[2] || (_cache[2] = createElementVNode("p", { class: "text-sm text-base-content/70" }, "One-time credit addition (goes to rollover)", -1)),
|
|
82
|
+
createVNode(unref(ZiniaForm), {
|
|
83
|
+
onBeforeValidate: beforeValidate,
|
|
84
|
+
onHandleSubmit: handleSubmit,
|
|
85
|
+
onSuccess: handleSuccess,
|
|
86
|
+
onError: handleError,
|
|
87
|
+
title: "Add Credits",
|
|
88
|
+
subtitle: "Add one-time credits to rollover balance"
|
|
89
|
+
}, {
|
|
90
|
+
default: withCtx(() => [
|
|
91
|
+
createVNode(unref(zinia).AmountField),
|
|
92
|
+
createVNode(unref(zinia).ReasonField),
|
|
93
|
+
createCommentVNode(" Form Status Messages "),
|
|
94
|
+
unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_3$3, [_cache[0] || (_cache[0] = createElementVNode("svg", {
|
|
95
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
96
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
97
|
+
fill: "none",
|
|
98
|
+
viewBox: "0 0 24 24"
|
|
99
|
+
}, [createElementVNode("path", {
|
|
100
|
+
"stroke-linecap": "round",
|
|
101
|
+
"stroke-linejoin": "round",
|
|
102
|
+
"stroke-width": "2",
|
|
103
|
+
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
104
|
+
})], -1)), createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
|
|
105
|
+
createCommentVNode(" Submit Button "),
|
|
106
|
+
createElementVNode("div", _hoisted_4$3, [createVNode(unref(ZiniaSubmitButton), {
|
|
107
|
+
submitText: "Add Credits",
|
|
108
|
+
submittingText: "Adding Credits..."
|
|
109
|
+
})]),
|
|
110
|
+
createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" }),
|
|
111
|
+
createVNode(unref(ZiniaResetButton))
|
|
112
|
+
]),
|
|
113
|
+
_: 1
|
|
114
|
+
})
|
|
115
|
+
])]);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
var AddCredits_default = _sfc_main$3;
|
|
120
|
+
|
|
121
|
+
//#endregion
|
|
122
|
+
//#region src/slices/customer/features/credit-management/ResetMonthlyBalance.vue
|
|
123
|
+
const _hoisted_1$2 = { class: "card bg-base-100 shadow-xl" };
|
|
124
|
+
const _hoisted_2$2 = { class: "card-body" };
|
|
125
|
+
const _hoisted_3$2 = { class: "alert alert-warning mt-4" };
|
|
126
|
+
const _hoisted_4$2 = { class: "text-xs" };
|
|
127
|
+
const _hoisted_5 = ["disabled"];
|
|
128
|
+
const _hoisted_6 = {
|
|
129
|
+
key: 0,
|
|
130
|
+
class: "loading loading-spinner loading-sm mr-2"
|
|
131
|
+
};
|
|
132
|
+
const _hoisted_7 = {
|
|
133
|
+
key: 0,
|
|
134
|
+
class: "alert alert-error mt-2"
|
|
135
|
+
};
|
|
136
|
+
const _hoisted_8 = { class: "text-xs" };
|
|
137
|
+
const _hoisted_9 = { class: "modal-box" };
|
|
138
|
+
const _hoisted_10 = { class: "py-4" };
|
|
139
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
140
|
+
__name: "ResetMonthlyBalance",
|
|
141
|
+
props: {
|
|
142
|
+
currentMonthlyBalance: { default: "0.00" },
|
|
143
|
+
onSuccess: {
|
|
144
|
+
type: Function,
|
|
145
|
+
default: () => {}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
setup(__props) {
|
|
149
|
+
const props = __props;
|
|
150
|
+
const confirmModal = ref(null);
|
|
151
|
+
const error = ref("");
|
|
152
|
+
const { mutate: resetBalance, loading: isResetting } = useMutation((api, _input) => api.customer.resetMonthlyBalance(), { invalidate: /^customer:credit/ });
|
|
153
|
+
const refreshCredits = inject("refreshCredits", () => {});
|
|
154
|
+
const showResetModal = () => {
|
|
155
|
+
confirmModal.value?.showModal();
|
|
156
|
+
};
|
|
157
|
+
const closeModal = () => {
|
|
158
|
+
confirmModal.value?.close();
|
|
159
|
+
};
|
|
160
|
+
const handleReset = async () => {
|
|
161
|
+
error.value = "";
|
|
162
|
+
closeModal();
|
|
163
|
+
try {
|
|
164
|
+
await resetBalance(void 0);
|
|
165
|
+
toast.success("Monthly balance reset successfully!");
|
|
166
|
+
refreshCredits();
|
|
167
|
+
props.onSuccess();
|
|
168
|
+
} catch (e) {
|
|
169
|
+
const errorMessage = e instanceof Error ? e.message : "Failed to reset balance";
|
|
170
|
+
error.value = errorMessage;
|
|
171
|
+
toast.error(errorMessage);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
return (_ctx, _cache) => {
|
|
175
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
176
|
+
createElementVNode("div", _hoisted_1$2, [createElementVNode("div", _hoisted_2$2, [
|
|
177
|
+
_cache[1] || (_cache[1] = createElementVNode("h3", { class: "card-title text-lg" }, "Reset Monthly Balance", -1)),
|
|
178
|
+
_cache[2] || (_cache[2] = createElementVNode("p", { class: "text-sm text-base-content/70" }, "Manually trigger monthly reset", -1)),
|
|
179
|
+
createElementVNode("div", _hoisted_3$2, [_cache[0] || (_cache[0] = createElementVNode("svg", {
|
|
180
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
181
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
182
|
+
fill: "none",
|
|
183
|
+
viewBox: "0 0 24 24"
|
|
184
|
+
}, [createElementVNode("path", {
|
|
185
|
+
"stroke-linecap": "round",
|
|
186
|
+
"stroke-linejoin": "round",
|
|
187
|
+
"stroke-width": "2",
|
|
188
|
+
d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
|
|
189
|
+
})], -1)), createElementVNode("span", _hoisted_4$2, "This will move current monthly balance (" + toDisplayString(__props.currentMonthlyBalance) + ") to rollover and reset to allocation amount", 1)]),
|
|
190
|
+
createElementVNode("button", {
|
|
191
|
+
class: "btn btn-warning mt-4",
|
|
192
|
+
onClick: showResetModal,
|
|
193
|
+
disabled: unref(isResetting)
|
|
194
|
+
}, [unref(isResetting) ? (openBlock(), createElementBlock("span", _hoisted_6)) : createCommentVNode("v-if", true), createTextVNode(" " + toDisplayString(unref(isResetting) ? "Resetting..." : "Reset Now"), 1)], 8, _hoisted_5),
|
|
195
|
+
error.value ? (openBlock(), createElementBlock("div", _hoisted_7, [createElementVNode("span", _hoisted_8, toDisplayString(error.value), 1)])) : createCommentVNode("v-if", true)
|
|
196
|
+
])]),
|
|
197
|
+
createCommentVNode(" Confirmation Modal "),
|
|
198
|
+
createElementVNode("dialog", {
|
|
199
|
+
ref_key: "confirmModal",
|
|
200
|
+
ref: confirmModal,
|
|
201
|
+
class: "modal"
|
|
202
|
+
}, [createElementVNode("div", _hoisted_9, [
|
|
203
|
+
_cache[3] || (_cache[3] = createElementVNode("h3", { class: "font-bold text-lg" }, "Reset Monthly Balance?", -1)),
|
|
204
|
+
createElementVNode("p", _hoisted_10, " This will move the current monthly balance (" + toDisplayString(__props.currentMonthlyBalance) + ") to rollover and reset monthly credits to the allocation amount. ", 1),
|
|
205
|
+
_cache[4] || (_cache[4] = createElementVNode("p", { class: "text-warning font-medium" }, "This action cannot be undone.", -1)),
|
|
206
|
+
createElementVNode("div", { class: "modal-action" }, [createElementVNode("button", {
|
|
207
|
+
class: "btn btn-ghost",
|
|
208
|
+
onClick: closeModal
|
|
209
|
+
}, "Cancel"), createElementVNode("button", {
|
|
210
|
+
class: "btn btn-warning",
|
|
211
|
+
onClick: handleReset
|
|
212
|
+
}, "Confirm Reset")])
|
|
213
|
+
]), createElementVNode("form", {
|
|
214
|
+
method: "dialog",
|
|
215
|
+
class: "modal-backdrop"
|
|
216
|
+
}, [createElementVNode("button", { onClick: closeModal }, "close")])], 512)
|
|
217
|
+
], 64);
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
var ResetMonthlyBalance_default = _sfc_main$2;
|
|
222
|
+
|
|
223
|
+
//#endregion
|
|
224
|
+
//#region src/slices/customer/features/credit-management/SetMonthlyAllocation.vue
|
|
225
|
+
const _hoisted_1$1 = { class: "card bg-base-100 shadow-xl" };
|
|
226
|
+
const _hoisted_2$1 = { class: "card-body" };
|
|
227
|
+
const _hoisted_3$1 = {
|
|
228
|
+
key: 0,
|
|
229
|
+
class: "alert alert-error mb-4"
|
|
230
|
+
};
|
|
231
|
+
const _hoisted_4$1 = { class: "flex justify-center mt-6" };
|
|
232
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
233
|
+
__name: "SetMonthlyAllocation",
|
|
234
|
+
props: { onSuccess: {
|
|
235
|
+
type: Function,
|
|
236
|
+
default: () => {}
|
|
237
|
+
} },
|
|
238
|
+
setup(__props) {
|
|
239
|
+
const props = __props;
|
|
240
|
+
const { form, zinia, ZiniaForm, ZiniaSubmitButton, ZiniaResetButton, ZiniaFormErrorsSummary, clearSavedFormState } = useForm(setMonthlyAllocationSchemaWithMetadata, {
|
|
241
|
+
storeName: `set-monthly-allocation-form`,
|
|
242
|
+
persistToLocalStorage: false,
|
|
243
|
+
renderStyle: "daisy_ui",
|
|
244
|
+
fetchData: async () => {
|
|
245
|
+
return { amount: "" };
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
const { mutate: setAllocation } = useMutation((api, input) => api.customer.setMonthlyAllocation(input), { invalidate: /^customer:credit/ });
|
|
249
|
+
const refreshCredits = inject("refreshCredits", () => {});
|
|
250
|
+
const beforeValidate = () => {
|
|
251
|
+
return true;
|
|
252
|
+
};
|
|
253
|
+
const handleSubmit = async (formData) => {
|
|
254
|
+
const result = await setAllocation({ amount: formData.amount });
|
|
255
|
+
if (!result) throw new Error("Failed to set monthly allocation");
|
|
256
|
+
return result;
|
|
257
|
+
};
|
|
258
|
+
const handleSuccess = async (data) => {
|
|
259
|
+
clearSavedFormState();
|
|
260
|
+
toast.success(`Monthly allocation set to ${formatDollar(data.monthly)}!`);
|
|
261
|
+
refreshCredits();
|
|
262
|
+
props.onSuccess();
|
|
263
|
+
};
|
|
264
|
+
const handleError = (error) => {
|
|
265
|
+
form.setSubmitError(error instanceof Error ? error.message : "An unknown error occurred");
|
|
266
|
+
};
|
|
267
|
+
return (_ctx, _cache) => {
|
|
268
|
+
return openBlock(), createElementBlock("div", _hoisted_1$1, [createElementVNode("div", _hoisted_2$1, [
|
|
269
|
+
_cache[2] || (_cache[2] = createElementVNode("h3", { class: "card-title text-lg" }, "Monthly Allocation", -1)),
|
|
270
|
+
_cache[3] || (_cache[3] = createElementVNode("p", { class: "text-sm text-base-content/70" }, "Set recurring monthly credit amount", -1)),
|
|
271
|
+
createVNode(unref(ZiniaForm), {
|
|
272
|
+
onBeforeValidate: beforeValidate,
|
|
273
|
+
onHandleSubmit: handleSubmit,
|
|
274
|
+
onSuccess: handleSuccess,
|
|
275
|
+
onError: handleError,
|
|
276
|
+
title: "Set Monthly Allocation",
|
|
277
|
+
subtitle: "Set the recurring monthly credit amount"
|
|
278
|
+
}, {
|
|
279
|
+
default: withCtx(() => [
|
|
280
|
+
createVNode(unref(zinia).AmountField),
|
|
281
|
+
createCommentVNode(" Information Notice "),
|
|
282
|
+
_cache[1] || (_cache[1] = createElementVNode("div", { class: "alert alert-info mb-4" }, [createElementVNode("svg", {
|
|
283
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
284
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
285
|
+
fill: "none",
|
|
286
|
+
viewBox: "0 0 24 24"
|
|
287
|
+
}, [createElementVNode("path", {
|
|
288
|
+
"stroke-linecap": "round",
|
|
289
|
+
"stroke-linejoin": "round",
|
|
290
|
+
"stroke-width": "2",
|
|
291
|
+
d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
292
|
+
})]), createElementVNode("div", null, [createElementVNode("div", { class: "font-semibold" }, "Monthly Reset"), createElementVNode("div", { class: "text-sm" }, " This amount will be automatically reset each month. Any unused credits will roll over to the rollover balance. ")])], -1)),
|
|
293
|
+
createCommentVNode(" Form Status Messages "),
|
|
294
|
+
unref(form).submitError ? (openBlock(), createElementBlock("div", _hoisted_3$1, [_cache[0] || (_cache[0] = createElementVNode("svg", {
|
|
295
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
296
|
+
class: "stroke-current shrink-0 h-6 w-6",
|
|
297
|
+
fill: "none",
|
|
298
|
+
viewBox: "0 0 24 24"
|
|
299
|
+
}, [createElementVNode("path", {
|
|
300
|
+
"stroke-linecap": "round",
|
|
301
|
+
"stroke-linejoin": "round",
|
|
302
|
+
"stroke-width": "2",
|
|
303
|
+
d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
304
|
+
})], -1)), createElementVNode("span", null, toDisplayString(unref(form).submitError), 1)])) : createCommentVNode("v-if", true),
|
|
305
|
+
createCommentVNode(" Submit Button "),
|
|
306
|
+
createElementVNode("div", _hoisted_4$1, [createVNode(unref(ZiniaSubmitButton), {
|
|
307
|
+
submitText: "Set Monthly Allocation",
|
|
308
|
+
submittingText: "Setting Allocation..."
|
|
309
|
+
})]),
|
|
310
|
+
createVNode(unref(ZiniaFormErrorsSummary), { title: "Please fix the following errors:" }),
|
|
311
|
+
createVNode(unref(ZiniaResetButton))
|
|
312
|
+
]),
|
|
313
|
+
_: 1
|
|
314
|
+
})
|
|
315
|
+
])]);
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
var SetMonthlyAllocation_default = _sfc_main$1;
|
|
320
|
+
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/slices/customer/features/credit-management/CreditManagement.vue
|
|
323
|
+
const _hoisted_1 = { class: "container mx-auto py-6" };
|
|
324
|
+
const _hoisted_2 = { class: "mb-6" };
|
|
325
|
+
const _hoisted_3 = { class: "grid grid-cols-1 md:grid-cols-3 gap-6" };
|
|
326
|
+
const _hoisted_4 = { class: "mt-6" };
|
|
327
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
328
|
+
__name: "CreditManagement",
|
|
329
|
+
setup(__props) {
|
|
330
|
+
const refreshTrigger = ref(0);
|
|
331
|
+
provide("refreshCredits", () => {
|
|
332
|
+
refreshTrigger.value++;
|
|
333
|
+
});
|
|
334
|
+
provide("refreshTrigger", refreshTrigger);
|
|
335
|
+
return (_ctx, _cache) => {
|
|
336
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
337
|
+
_cache[0] || (_cache[0] = createElementVNode("h1", { class: "text-3xl font-bold mb-6" }, "Credit Management", -1)),
|
|
338
|
+
createCommentVNode(" Current Balance Overview "),
|
|
339
|
+
createElementVNode("div", _hoisted_2, [createVNode(CreditBalanceOverview_default)]),
|
|
340
|
+
createCommentVNode(" Management Actions "),
|
|
341
|
+
createElementVNode("div", _hoisted_3, [
|
|
342
|
+
createVNode(AddCredits_default),
|
|
343
|
+
createVNode(SetMonthlyAllocation_default),
|
|
344
|
+
createVNode(ResetMonthlyBalance_default)
|
|
345
|
+
]),
|
|
346
|
+
createCommentVNode(" Recent Transactions "),
|
|
347
|
+
createElementVNode("div", _hoisted_4, [createVNode(CreditTransactionHistory_default)])
|
|
348
|
+
]);
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
var CreditManagement_default = _sfc_main;
|
|
353
|
+
|
|
354
|
+
//#endregion
|
|
355
|
+
export { addCreditsSchemaWithMetadata as a, AddCredits_default as i, SetMonthlyAllocation_default as n, setMonthlyAllocationSchemaWithMetadata as o, ResetMonthlyBalance_default as r, CreditManagement_default as t };
|
|
356
|
+
//# sourceMappingURL=CreditManagement-BdRd_TLz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreditManagement-BdRd_TLz.js","names":[],"sources":["../src/slices/customer/features/credit-management/creditFormMetadata.ts","../src/slices/customer/features/credit-management/AddCredits.vue","../src/slices/customer/features/credit-management/ResetMonthlyBalance.vue","../src/slices/customer/features/credit-management/SetMonthlyAllocation.vue","../src/slices/customer/features/credit-management/CreditManagement.vue"],"sourcesContent":["import {\n type UseFormTyped,\n withMetadata,\n ZINIA_FIELDS_KEY,\n ZINIA_FORM_KEY,\n} from '@dragonmastery/zinia-forms-core';\nimport { AddCreditsSchema, SetMonthlyAllocationSchema } from '@dragonmastery/dragoncore-shared';\nimport { inject } from 'vue';\n\n// Add Credits Form Metadata\nexport const addCreditsSchemaWithMetadata = withMetadata(\n AddCreditsSchema,\n 'addCreditsSchema',\n {\n amount: {\n label: 'Amount',\n placeholder: 'e.g., 100.00',\n helpText: 'Enter the amount to add to rollover credits',\n },\n reason: {\n label: 'Reason',\n inputType: 'textarea',\n placeholder: 'e.g., Purchase, Bonus, Refund',\n helpText: 'Optional reason for adding credits',\n },\n },\n);\n\n// Set Monthly Allocation Form Metadata\nexport const setMonthlyAllocationSchemaWithMetadata = withMetadata(\n SetMonthlyAllocationSchema,\n 'setMonthlyAllocationSchema',\n {\n amount: {\n label: 'Monthly Allocation Amount',\n placeholder: 'e.g., 200.00',\n helpText: 'This amount will be reset monthly',\n },\n },\n);\n\n// Form types\nexport type AddCreditsFormData = UseFormTyped<typeof AddCreditsSchema>;\nexport type SetMonthlyAllocationFormData = UseFormTyped<typeof SetMonthlyAllocationSchema>;\n\n// Injection functions\nexport const injectAddCreditsForm = () => inject<AddCreditsFormData['form']>(ZINIA_FORM_KEY);\nexport const injectSetMonthlyAllocationForm = () =>\n inject<SetMonthlyAllocationFormData['form']>(ZINIA_FORM_KEY);\nexport const injectAddCreditsZinia = () =>\n inject<AddCreditsFormData['zinia']>(ZINIA_FIELDS_KEY);\nexport const injectSetMonthlyAllocationZinia = () =>\n inject<SetMonthlyAllocationFormData['zinia']>(ZINIA_FIELDS_KEY);\n","<template>\n <div class=\"card bg-base-100 shadow-xl\">\n <div class=\"card-body\">\n <h3 class=\"card-title text-lg\">Add Credits</h3>\n <p class=\"text-sm text-base-content/70\">One-time credit addition (goes to rollover)</p>\n\n <ZiniaForm\n @before-validate=\"beforeValidate\"\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"Add Credits\"\n subtitle=\"Add one-time credits to rollover balance\"\n >\n <zinia.AmountField />\n <zinia.ReasonField />\n\n <!-- Form Status Messages -->\n <div v-if=\"form.submitError\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ form.submitError }}</span>\n </div>\n\n <!-- Submit Button -->\n <div class=\"flex justify-center mt-6\">\n <ZiniaSubmitButton submitText=\"Add Credits\" submittingText=\"Adding Credits...\" />\n </div>\n <ZiniaFormErrorsSummary title=\"Please fix the following errors:\" />\n <ZiniaResetButton />\n </ZiniaForm>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport type { AddCreditsDto } from '@dragonmastery/dragoncore-shared';\nimport { inject } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { addCreditsSchemaWithMetadata } from './creditFormMetadata';\n\n// Props\ninterface Props {\n onSuccess?: () => void;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n onSuccess: () => {},\n});\n\nconst {\n form,\n zinia,\n ZiniaForm,\n ZiniaSubmitButton,\n ZiniaResetButton,\n ZiniaFormErrorsSummary,\n refreshFormData,\n} = useForm(addCreditsSchemaWithMetadata, {\n storeName: `add-credits-form`,\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n fetchData: async () => {\n return {\n amount: '',\n reason: '',\n } satisfies AddCreditsDto;\n },\n});\n\n// Setup mutation for adding credits\nconst { mutate: addCredits } = useMutation(\n (api, input: AddCreditsDto) => api.customer.addCredits(input),\n { invalidate: /^customer:credit/ },\n);\n\n// Inject the refresh function\nconst refreshCredits = inject<() => void>('refreshCredits', () => {});\n\nconst beforeValidate = () => {\n return true;\n};\n\n// Handle form submission\nconst handleSubmit = async (formData: AddCreditsDto) => {\n const result = await addCredits({\n amount: formData.amount,\n reason: formData.reason || undefined,\n });\n\n if (!result) {\n throw new Error('Failed to add credits');\n }\n\n return result;\n};\n\n// Handle successful submission\nconst handleSuccess = async (_: any) => {\n refreshFormData();\n toast.success(`Added ${form.values.amount} credits!`);\n refreshCredits();\n props.onSuccess();\n};\n\n// Handle submission error\nconst handleError = (error: Error | unknown) => {\n form.setSubmitError(error instanceof Error ? error.message : 'An unknown error occurred');\n};\n</script>\n","<template>\n <div class=\"card bg-base-100 shadow-xl\">\n <div class=\"card-body\">\n <h3 class=\"card-title text-lg\">Reset Monthly Balance</h3>\n <p class=\"text-sm text-base-content/70\">Manually trigger monthly reset</p>\n\n <div class=\"alert alert-warning mt-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=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n <span class=\"text-xs\"\n >This will move current monthly balance ({{ currentMonthlyBalance }}) to rollover and\n reset to allocation amount</span\n >\n </div>\n\n <button class=\"btn btn-warning mt-4\" @click=\"showResetModal\" :disabled=\"isResetting\">\n <span v-if=\"isResetting\" class=\"loading loading-spinner loading-sm mr-2\"></span>\n {{ isResetting ? 'Resetting...' : 'Reset Now' }}\n </button>\n\n <div v-if=\"error\" class=\"alert alert-error mt-2\">\n <span class=\"text-xs\">{{ error }}</span>\n </div>\n </div>\n </div>\n\n <!-- Confirmation Modal -->\n <dialog ref=\"confirmModal\" class=\"modal\">\n <div class=\"modal-box\">\n <h3 class=\"font-bold text-lg\">Reset Monthly Balance?</h3>\n <p class=\"py-4\">\n This will move the current monthly balance ({{ currentMonthlyBalance }}) to rollover\n and reset monthly credits to the allocation amount.\n </p>\n <p class=\"text-warning font-medium\">This action cannot be undone.</p>\n <div class=\"modal-action\">\n <button class=\"btn btn-ghost\" @click=\"closeModal\">Cancel</button>\n <button class=\"btn btn-warning\" @click=\"handleReset\">Confirm Reset</button>\n </div>\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 { useMutation } from '../../../../composables/useMutation';\nimport { inject, ref } from 'vue';\nimport { toast } from 'vue3-toastify';\n\n// Props\ninterface Props {\n currentMonthlyBalance?: string;\n onSuccess?: () => void;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n currentMonthlyBalance: '0.00',\n onSuccess: () => {},\n});\n\n// Component state\nconst confirmModal = ref<HTMLDialogElement | null>(null);\nconst error = ref('');\nconst { mutate: resetBalance, loading: isResetting } = useMutation(\n (api, _input?: void) => api.customer.resetMonthlyBalance(),\n { invalidate: /^customer:credit/ },\n);\n\n// Inject the refresh function\nconst refreshCredits = inject<() => void>('refreshCredits', () => {});\n\nconst showResetModal = () => {\n confirmModal.value?.showModal();\n};\n\nconst closeModal = () => {\n confirmModal.value?.close();\n};\n\nconst handleReset = async () => {\n error.value = '';\n closeModal();\n\n try {\n await resetBalance(undefined);\n\n toast.success('Monthly balance reset successfully!');\n\n refreshCredits();\n // Call success callback\n props.onSuccess();\n } catch (e) {\n const errorMessage = e instanceof Error ? e.message : 'Failed to reset balance';\n error.value = errorMessage;\n toast.error(errorMessage);\n }\n};\n</script>\n","<template>\n <div class=\"card bg-base-100 shadow-xl\">\n <div class=\"card-body\">\n <h3 class=\"card-title text-lg\">Monthly Allocation</h3>\n <p class=\"text-sm text-base-content/70\">Set recurring monthly credit amount</p>\n\n <ZiniaForm\n @before-validate=\"beforeValidate\"\n @handle-submit=\"handleSubmit\"\n @success=\"handleSuccess\"\n @error=\"handleError\"\n title=\"Set Monthly Allocation\"\n subtitle=\"Set the recurring monthly credit amount\"\n >\n <zinia.AmountField />\n\n <!-- Information Notice -->\n <div class=\"alert alert-info 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=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <div>\n <div class=\"font-semibold\">Monthly Reset</div>\n <div class=\"text-sm\">\n This amount will be automatically reset each month. Any unused credits will roll\n over to the rollover balance.\n </div>\n </div>\n </div>\n\n <!-- Form Status Messages -->\n <div v-if=\"form.submitError\" class=\"alert alert-error mb-4\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-6 w-6\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <span>{{ form.submitError }}</span>\n </div>\n\n <!-- Submit Button -->\n <div class=\"flex justify-center mt-6\">\n <ZiniaSubmitButton\n submitText=\"Set Monthly Allocation\"\n submittingText=\"Setting Allocation...\"\n />\n </div>\n <ZiniaFormErrorsSummary title=\"Please fix the following errors:\" />\n <ZiniaResetButton />\n </ZiniaForm>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { formatDollar, type SetMonthlyAllocationDto } from '@dragonmastery/dragoncore-shared';\nimport { inject } from 'vue';\nimport { toast } from 'vue3-toastify';\nimport { setMonthlyAllocationSchemaWithMetadata } from './creditFormMetadata';\n\n// Props\ninterface Props {\n onSuccess?: () => void;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n onSuccess: () => {},\n});\n\nconst {\n form,\n zinia,\n ZiniaForm,\n ZiniaSubmitButton,\n ZiniaResetButton,\n ZiniaFormErrorsSummary,\n clearSavedFormState,\n} = useForm(setMonthlyAllocationSchemaWithMetadata, {\n storeName: `set-monthly-allocation-form`,\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n fetchData: async () => {\n return {\n amount: '',\n } satisfies SetMonthlyAllocationDto;\n },\n});\n\n// Setup mutation for setting monthly allocation\nconst { mutate: setAllocation } = useMutation(\n (api, input: SetMonthlyAllocationDto) => api.customer.setMonthlyAllocation(input),\n { invalidate: /^customer:credit/ },\n);\n\n// Inject the refresh function\nconst refreshCredits = inject<() => void>('refreshCredits', () => {});\n\nconst beforeValidate = () => {\n return true;\n};\n\n// Handle form submission\nconst handleSubmit = async (formData: SetMonthlyAllocationDto) => {\n const result = await setAllocation({\n amount: formData.amount,\n });\n\n if (!result) {\n throw new Error('Failed to set monthly allocation');\n }\n\n return result;\n};\n\n// Handle successful submission\nconst handleSuccess = async (data: any) => {\n clearSavedFormState();\n toast.success(`Monthly allocation set to ${formatDollar(data.monthly)}!`);\n refreshCredits();\n props.onSuccess();\n};\n\n// Handle submission error\nconst handleError = (error: Error | unknown) => {\n form.setSubmitError(error instanceof Error ? error.message : 'An unknown error occurred');\n};\n</script>\n","<template>\n <div class=\"container mx-auto py-6\">\n <h1 class=\"text-3xl font-bold mb-6\">Credit Management</h1>\n\n <!-- Current Balance Overview -->\n <div class=\"mb-6\">\n <CreditBalanceOverview />\n </div>\n\n <!-- Management Actions -->\n <div class=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n <AddCredits />\n <SetMonthlyAllocation />\n <ResetMonthlyBalance />\n </div>\n\n <!-- Recent Transactions -->\n <div class=\"mt-6\">\n <CreditTransactionHistory />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { provide, ref } from 'vue';\nimport CreditBalanceOverview from '../../components/CreditBalanceOverview.vue';\nimport CreditTransactionHistory from '../../components/CreditTransactionHistory.vue';\nimport AddCredits from './AddCredits.vue';\nimport ResetMonthlyBalance from './ResetMonthlyBalance.vue';\nimport SetMonthlyAllocation from './SetMonthlyAllocation.vue';\n\n// Create a reactive trigger that child components can watch\nconst refreshTrigger = ref(0);\n\n// Provide the trigger function to child components\nprovide('refreshCredits', () => {\n refreshTrigger.value++;\n});\n\n// Provide the trigger value for components to watch\nprovide('refreshTrigger', refreshTrigger);\n</script>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import "./useQuery-BzUGEOj0.js";
|
|
6
|
+
import "./saved_filter-fHzm4pk5.js";
|
|
7
|
+
import "./ConfirmDialog-DjthOYU6.js";
|
|
8
|
+
import "./userAuthorized-C09FHWGL.js";
|
|
9
|
+
import "./customerSupportTicketRoutes-DYG3Vlzz.js";
|
|
10
|
+
import "./CreditTransactionHistory-cYyRFOdS.js";
|
|
11
|
+
import { t as CreditManagement_default } from "./CreditManagement-BdRd_TLz.js";
|
|
12
|
+
|
|
13
|
+
export { CreditManagement_default as default };
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { r as executeWithAuth } from "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import { r as getRefreshTokenHandler } from "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import { t as useQuery } from "./useQuery-BzUGEOj0.js";
|
|
4
|
+
import { t as formatSystemTimestamp } from "./convertToLocalDateTime-BF25N4xd.js";
|
|
5
|
+
import { t as customerSupportPaths } from "./customerSupportTicketRoutes-DYG3Vlzz.js";
|
|
6
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, normalizeClass, openBlock, ref, resolveComponent, toDisplayString, unref, watch, withCtx } from "vue";
|
|
7
|
+
import { CreditTransactionReadSchema } from "@dragonmastery/dragoncore-shared";
|
|
8
|
+
import { useCursorDataTable, withMetadata } from "@dragonmastery/zinia-forms-core";
|
|
9
|
+
|
|
10
|
+
//#region src/slices/customer/components/CreditBalanceOverview.vue
|
|
11
|
+
const _hoisted_1$1 = { class: "card bg-base-100 shadow-xl" };
|
|
12
|
+
const _hoisted_2$1 = { class: "card-body" };
|
|
13
|
+
const _hoisted_3$1 = {
|
|
14
|
+
key: 0,
|
|
15
|
+
class: "flex items-center gap-2"
|
|
16
|
+
};
|
|
17
|
+
const _hoisted_4$1 = {
|
|
18
|
+
key: 1,
|
|
19
|
+
class: "alert alert-error"
|
|
20
|
+
};
|
|
21
|
+
const _hoisted_5 = {
|
|
22
|
+
key: 2,
|
|
23
|
+
class: "grid grid-cols-1 md:grid-cols-3 gap-4 mt-4"
|
|
24
|
+
};
|
|
25
|
+
const _hoisted_6 = { class: "stat bg-base-200 rounded-box" };
|
|
26
|
+
const _hoisted_7 = { class: "stat-value text-primary" };
|
|
27
|
+
const _hoisted_8 = { class: "stat bg-base-200 rounded-box" };
|
|
28
|
+
const _hoisted_9 = { class: "stat-value text-secondary" };
|
|
29
|
+
const _hoisted_10 = { class: "stat bg-base-200 rounded-box" };
|
|
30
|
+
const _hoisted_11 = { class: "stat-value text-accent" };
|
|
31
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
32
|
+
__name: "CreditBalanceOverview",
|
|
33
|
+
setup(__props) {
|
|
34
|
+
const { data, loading, error, refetch: executeQuery } = useQuery((api) => api.customer.getCreditBalance(), { staleTime: 120 * 1e3 });
|
|
35
|
+
const totalAvailable = computed(() => {
|
|
36
|
+
if (!data.value) return "0.00";
|
|
37
|
+
return ((parseFloat(data.value.monthly) || 0) + (parseFloat(data.value.rollover) || 0)).toFixed(2);
|
|
38
|
+
});
|
|
39
|
+
watch(inject("refreshTrigger", ref(0)), () => {
|
|
40
|
+
executeQuery();
|
|
41
|
+
});
|
|
42
|
+
return (_ctx, _cache) => {
|
|
43
|
+
return openBlock(), createElementBlock("div", _hoisted_1$1, [createElementVNode("div", _hoisted_2$1, [_cache[8] || (_cache[8] = createElementVNode("h2", { class: "card-title" }, "Current Balance", -1)), unref(loading) ? (openBlock(), createElementBlock("div", _hoisted_3$1, [..._cache[0] || (_cache[0] = [createElementVNode("span", { class: "loading loading-spinner loading-sm" }, null, -1), createElementVNode("span", null, "Loading balance...", -1)])])) : unref(error) ? (openBlock(), createElementBlock("div", _hoisted_4$1, [..._cache[1] || (_cache[1] = [createElementVNode("span", null, "Failed to load credit balance", -1)])])) : unref(data) ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
44
|
+
createElementVNode("div", _hoisted_6, [
|
|
45
|
+
_cache[2] || (_cache[2] = createElementVNode("div", { class: "stat-title" }, "Monthly Credits", -1)),
|
|
46
|
+
createElementVNode("div", _hoisted_7, toDisplayString(unref(data).monthly), 1),
|
|
47
|
+
_cache[3] || (_cache[3] = createElementVNode("div", { class: "stat-desc" }, "Resets each month", -1))
|
|
48
|
+
]),
|
|
49
|
+
createElementVNode("div", _hoisted_8, [
|
|
50
|
+
_cache[4] || (_cache[4] = createElementVNode("div", { class: "stat-title" }, "Rollover Credits", -1)),
|
|
51
|
+
createElementVNode("div", _hoisted_9, toDisplayString(unref(data).rollover), 1),
|
|
52
|
+
_cache[5] || (_cache[5] = createElementVNode("div", { class: "stat-desc" }, "Accumulated balance", -1))
|
|
53
|
+
]),
|
|
54
|
+
createElementVNode("div", _hoisted_10, [
|
|
55
|
+
_cache[6] || (_cache[6] = createElementVNode("div", { class: "stat-title" }, "Total Available", -1)),
|
|
56
|
+
createElementVNode("div", _hoisted_11, toDisplayString(totalAvailable.value), 1),
|
|
57
|
+
_cache[7] || (_cache[7] = createElementVNode("div", { class: "stat-desc" }, "Ready to use", -1))
|
|
58
|
+
])
|
|
59
|
+
])) : createCommentVNode("v-if", true)])]);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
var CreditBalanceOverview_default = _sfc_main$2;
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/slices/customer/creditTransactionRowSchema.ts
|
|
67
|
+
const creditTransactionRowSchemaWithMetadata = withMetadata(CreditTransactionReadSchema, "creditTransactionRowSchema", {
|
|
68
|
+
id: { label: "ID" },
|
|
69
|
+
support_ticket_id: { label: "Support Ticket" },
|
|
70
|
+
amount: { label: "Amount" },
|
|
71
|
+
type: {
|
|
72
|
+
label: "Type",
|
|
73
|
+
sortable: true,
|
|
74
|
+
filterable: true
|
|
75
|
+
},
|
|
76
|
+
description: { label: "Description" },
|
|
77
|
+
balance_after: { label: "Balance After" },
|
|
78
|
+
created_at: {
|
|
79
|
+
label: "Created At",
|
|
80
|
+
sortable: true
|
|
81
|
+
},
|
|
82
|
+
created_by: {
|
|
83
|
+
label: "Created By",
|
|
84
|
+
sortable: true
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/slices/customer/components/CreditTransactionTypeBadge.vue
|
|
90
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
91
|
+
__name: "CreditTransactionTypeBadge",
|
|
92
|
+
props: {
|
|
93
|
+
type: {},
|
|
94
|
+
size: { default: "sm" }
|
|
95
|
+
},
|
|
96
|
+
setup(__props) {
|
|
97
|
+
const props = __props;
|
|
98
|
+
const typeClasses = computed(() => {
|
|
99
|
+
const baseClasses = `badge-${props.size}`;
|
|
100
|
+
switch (props.type) {
|
|
101
|
+
case "DEDUCTION": return `${baseClasses} badge-error`;
|
|
102
|
+
case "REFUND": return `${baseClasses} badge-success`;
|
|
103
|
+
case "PURCHASE_ONETIME": return `${baseClasses} badge-info`;
|
|
104
|
+
case "PURCHASE_RECURRING": return `${baseClasses} badge-primary`;
|
|
105
|
+
case "ADJUSTMENT": return `${baseClasses} badge-warning`;
|
|
106
|
+
default: return `${baseClasses} badge-ghost`;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
const typeLabel = computed(() => {
|
|
110
|
+
switch (props.type) {
|
|
111
|
+
case "DEDUCTION": return "DEDUCTION";
|
|
112
|
+
case "REFUND": return "REFUND";
|
|
113
|
+
case "PURCHASE_ONETIME": return "ONE-TIME PURCHASE";
|
|
114
|
+
case "PURCHASE_RECURRING": return "RECURRING PURCHASE";
|
|
115
|
+
case "ADJUSTMENT": return "ADJUSTMENT";
|
|
116
|
+
default: return props.type.replace("_", " ").toUpperCase();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
return (_ctx, _cache) => {
|
|
120
|
+
return openBlock(), createElementBlock("span", { class: normalizeClass(["badge badge-sm", typeClasses.value]) }, toDisplayString(typeLabel.value), 3);
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
var CreditTransactionTypeBadge_default = _sfc_main$1;
|
|
125
|
+
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/slices/customer/components/CreditTransactionHistory.vue
|
|
128
|
+
const _hoisted_1 = { class: "card bg-base-100 shadow-xl" };
|
|
129
|
+
const _hoisted_2 = { class: "card-body" };
|
|
130
|
+
const _hoisted_3 = { class: "font-mono font-bold" };
|
|
131
|
+
const _hoisted_4 = { class: "flex flex-col" };
|
|
132
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
133
|
+
__name: "CreditTransactionHistory",
|
|
134
|
+
setup(__props) {
|
|
135
|
+
const { ZiniaDataTable, refresh } = useCursorDataTable(creditTransactionRowSchemaWithMetadata, {
|
|
136
|
+
fetchData: async ({ cursor, pageSize, filters, search }) => {
|
|
137
|
+
const variables = {
|
|
138
|
+
first: pageSize,
|
|
139
|
+
...cursor ? { after: cursor } : {},
|
|
140
|
+
...search ? { search } : {},
|
|
141
|
+
...filters
|
|
142
|
+
};
|
|
143
|
+
const result = await executeWithAuth(async (api) => {
|
|
144
|
+
return await api.customer.getCreditTransactions(variables);
|
|
145
|
+
}, { refreshTokenHandler: getRefreshTokenHandler() });
|
|
146
|
+
return {
|
|
147
|
+
data: result.items || [],
|
|
148
|
+
hasNextPage: result.pageInfo?.hasNextPage ?? false,
|
|
149
|
+
hasPreviousPage: result.pageInfo?.hasPreviousPage ?? false,
|
|
150
|
+
prevPageCursor: result.pageInfo?.prevPageCursor ?? void 0,
|
|
151
|
+
nextPageCursor: result.pageInfo?.nextPageCursor ?? void 0
|
|
152
|
+
};
|
|
153
|
+
},
|
|
154
|
+
columns: {
|
|
155
|
+
created_at: {
|
|
156
|
+
label: "Date",
|
|
157
|
+
field: "created_at",
|
|
158
|
+
sortable: true
|
|
159
|
+
},
|
|
160
|
+
type: {
|
|
161
|
+
label: "Type",
|
|
162
|
+
field: "type",
|
|
163
|
+
sortable: true,
|
|
164
|
+
filterable: true
|
|
165
|
+
},
|
|
166
|
+
description: {
|
|
167
|
+
label: "Description",
|
|
168
|
+
field: "description",
|
|
169
|
+
sortable: false
|
|
170
|
+
},
|
|
171
|
+
amount: {
|
|
172
|
+
label: "Amount",
|
|
173
|
+
field: "amount",
|
|
174
|
+
sortable: true
|
|
175
|
+
},
|
|
176
|
+
balance_after: {
|
|
177
|
+
label: "Balance After",
|
|
178
|
+
field: "balance_after"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
pagination: { pageSize: 25 }
|
|
182
|
+
});
|
|
183
|
+
const formatCredits = (value) => {
|
|
184
|
+
const num = parseFloat(value);
|
|
185
|
+
return isNaN(num) ? "0.00" : num.toFixed(2);
|
|
186
|
+
};
|
|
187
|
+
const formatAmount = (amount, type) => {
|
|
188
|
+
const num = parseFloat(amount);
|
|
189
|
+
const formatted = isNaN(num) ? "0.00" : Math.abs(num).toFixed(2);
|
|
190
|
+
if (type === "DEDUCTION") return `-${formatted}`;
|
|
191
|
+
return `+${formatted}`;
|
|
192
|
+
};
|
|
193
|
+
const getAmountClass = (type) => {
|
|
194
|
+
return type === "DEDUCTION" ? "text-error" : "text-success";
|
|
195
|
+
};
|
|
196
|
+
watch(inject("refreshTrigger", ref(0)), () => {
|
|
197
|
+
refresh();
|
|
198
|
+
});
|
|
199
|
+
return (_ctx, _cache) => {
|
|
200
|
+
const _component_router_link = resolveComponent("router-link");
|
|
201
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [_cache[1] || (_cache[1] = createElementVNode("h2", { class: "card-title" }, "Transaction History", -1)), createVNode(unref(ZiniaDataTable), null, {
|
|
202
|
+
"cell-type": withCtx(({ row }) => [createVNode(CreditTransactionTypeBadge_default, {
|
|
203
|
+
type: row.type,
|
|
204
|
+
size: "sm"
|
|
205
|
+
}, null, 8, ["type"])]),
|
|
206
|
+
"cell-created_at": withCtx(({ row }) => [createTextVNode(toDisplayString(unref(formatSystemTimestamp)(row.created_at)), 1)]),
|
|
207
|
+
"cell-amount": withCtx(({ row }) => [createElementVNode("span", { class: normalizeClass(["font-mono", getAmountClass(row.type)]) }, toDisplayString(formatAmount(row.amount, row.type)), 3)]),
|
|
208
|
+
"cell-balance_after": withCtx(({ row }) => [createElementVNode("span", _hoisted_3, toDisplayString(formatCredits(row.balance_after)), 1)]),
|
|
209
|
+
"cell-description": withCtx(({ row }) => [createElementVNode("div", _hoisted_4, [createElementVNode("span", null, toDisplayString(row.description || "No description"), 1), row.support_ticket_id ? (openBlock(), createBlock(_component_router_link, {
|
|
210
|
+
key: 0,
|
|
211
|
+
to: {
|
|
212
|
+
name: unref(customerSupportPaths).customer_view.name,
|
|
213
|
+
params: { id: row.support_ticket_id }
|
|
214
|
+
},
|
|
215
|
+
class: "text-xs text-primary hover:underline"
|
|
216
|
+
}, {
|
|
217
|
+
default: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" View Support Ticket → ", -1)])]),
|
|
218
|
+
_: 1
|
|
219
|
+
}, 8, ["to"])) : createCommentVNode("v-if", true)])]),
|
|
220
|
+
_: 1
|
|
221
|
+
})])]);
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
var CreditTransactionHistory_default = _sfc_main;
|
|
226
|
+
|
|
227
|
+
//#endregion
|
|
228
|
+
export { CreditBalanceOverview_default as i, CreditTransactionTypeBadge_default as n, creditTransactionRowSchemaWithMetadata as r, CreditTransactionHistory_default as t };
|
|
229
|
+
//# sourceMappingURL=CreditTransactionHistory-cYyRFOdS.js.map
|