@dragonmastery/dragoncore-vue 0.0.21 → 0.0.23
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--3XwluwE.js → ChangePasswordPage-C633yQiU.js} +2 -2
- package/dist/{ChangePasswordPage--3XwluwE.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/ConsentRequired-BPjsZoPY.js +211 -0
- package/dist/ConsentRequired-BPjsZoPY.js.map +1 -0
- package/dist/CreateTeamForm-CeaC41VY.js +142 -0
- package/dist/CreateTeamForm-CeaC41VY.js.map +1 -0
- package/dist/CreateTeamForm-DfgCaUwX.js +12 -0
- package/dist/CreateTeamMemberForm-Bv9gNG4z.js +140 -0
- package/dist/CreateTeamMemberForm-Bv9gNG4z.js.map +1 -0
- package/dist/CreateTeamMemberForm-CnHfpob_.js +12 -0
- package/dist/CreateUserPage-C9uOeYDJ.js +7 -0
- package/dist/{CreateUserPage-DLwXeLAq.js → CreateUserPage-CqKcY7_X.js} +2 -2
- package/dist/{CreateUserPage-DLwXeLAq.js.map → CreateUserPage-CqKcY7_X.js.map} +1 -1
- package/dist/CreditBalanceDashboard-0HiJE_OS.js +13 -0
- package/dist/CreditBalanceDashboard-k_orNn4h.js +28 -0
- package/dist/CreditBalanceDashboard-k_orNn4h.js.map +1 -0
- package/dist/CreditManagement-BVBZQDI4.js +356 -0
- package/dist/CreditManagement-BVBZQDI4.js.map +1 -0
- package/dist/CreditManagement-DXdIN-0d.js +13 -0
- package/dist/CreditTransactionHistory-DSu-6aDi.js +229 -0
- package/dist/CreditTransactionHistory-DSu-6aDi.js.map +1 -0
- package/dist/CustomerCreateSupportTicketForm-BsjX8Pja.js +14 -0
- package/dist/CustomerCreateSupportTicketForm-kf8YIGjx.js +158 -0
- package/dist/CustomerCreateSupportTicketForm-kf8YIGjx.js.map +1 -0
- package/dist/{CustomerSupportTicketDetailPage-BdyaKG1v.js → CustomerSupportTicketDetailPage-C_-YoAaP.js} +12 -9
- package/dist/{CustomerSupportTicketDetailPage-BdyaKG1v.js.map → CustomerSupportTicketDetailPage-C_-YoAaP.js.map} +1 -1
- package/dist/CustomerSupportTicketList-DdACn3ug.js +63 -0
- package/dist/{CustomerSupportTicketParent-HIxwSVdu.js → CustomerSupportTicketParent-BpBuYCrP.js} +4 -4
- package/dist/{CustomerSupportTicketParent-HIxwSVdu.js.map → CustomerSupportTicketParent-BpBuYCrP.js.map} +1 -1
- package/dist/CustomerSupportTicketParent-Djy7pNqO.js +8 -0
- package/dist/CustomerSupportTicketSuccess-DsFzpJFU.js +12 -0
- package/dist/CustomerSupportTicketSuccess-cumNSGdx.js +54 -0
- package/dist/CustomerSupportTicketSuccess-cumNSGdx.js.map +1 -0
- package/dist/EditTeamForm-BE3iX2x3.js +12 -0
- package/dist/EditTeamForm-BxRN338L.js +163 -0
- package/dist/EditTeamForm-BxRN338L.js.map +1 -0
- package/dist/EditTeamMemberForm-D7D1Zddh.js +9 -0
- package/dist/{EditTeamMemberForm-CaS2GLjV.js → EditTeamMemberForm-DfgJr5Cy.js} +7 -72
- package/dist/EditTeamMemberForm-DfgJr5Cy.js.map +1 -0
- package/dist/EditUserPage-C0K7EGjM.js +8 -0
- package/dist/{EditUserPage-DURc5rmi.js → EditUserPage-CI_jtU8P.js} +4 -4
- package/dist/{EditUserPage-DURc5rmi.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-OjIPi9s9.js → ForgotPassword-Ckb9Z-wb.js} +4 -4
- package/dist/{ForgotPassword-OjIPi9s9.js.map → ForgotPassword-Ckb9Z-wb.js.map} +1 -1
- package/dist/ForgotPassword-tJVSg7PB.js +8 -0
- package/dist/{TimelineSystemEvent-BHzFr46C.js → InlineAttachments-DAn_QknY.js} +60 -661
- package/dist/InlineAttachments-DAn_QknY.js.map +1 -0
- package/dist/{LoginForm-9UFnA-fO.js → LoginForm-CMN2T1fA.js} +5 -5
- package/dist/{LoginForm-9UFnA-fO.js.map → LoginForm-CMN2T1fA.js.map} +1 -1
- package/dist/LoginForm-QFJ8NHww.js +8 -0
- package/dist/{Logout-YgTgOFUH.js → Logout-CFLYHlLr.js} +5 -5
- package/dist/{Logout-YgTgOFUH.js.map → Logout-CFLYHlLr.js.map} +1 -1
- package/dist/Logout-CjDBff3W.js +8 -0
- package/dist/MfaSetup-BZcoxJx-.js +9 -0
- package/dist/{MfaSetup-RtFMY_dj.js → MfaSetup-XqoAwBXx.js} +5 -5
- package/dist/{MfaSetup-RtFMY_dj.js.map → MfaSetup-XqoAwBXx.js.map} +1 -1
- package/dist/{MfaVerify-Cvhe8bEM.js → MfaVerify-C-A75TFZ.js} +6 -6
- package/dist/{MfaVerify-Cvhe8bEM.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-BE4mXK9q.js → ResetPassword-Cd-Yxp8E.js} +4 -4
- package/dist/{ResetPassword-BE4mXK9q.js.map → ResetPassword-Cd-Yxp8E.js.map} +1 -1
- package/dist/ResetPassword-D6to3G6a.js +8 -0
- package/dist/{SavedFiltersPage-DQt6uc8m.js → SavedFiltersPage-DM5DvAFa.js} +62 -34
- package/dist/{SavedFiltersPage-DQt6uc8m.js.map → SavedFiltersPage-DM5DvAFa.js.map} +1 -1
- package/dist/{Signup-9TjMMnU4.js → Signup-2pqvJiVt.js} +57 -57
- package/dist/Signup-2pqvJiVt.js.map +1 -0
- package/dist/Signup-XdImA1os.js +9 -0
- package/dist/{SignupConsentFlow-QUZGKjdB.js → SignupConsentFlow-X3kXuviv.js} +106 -70
- package/dist/SignupConsentFlow-X3kXuviv.js.map +1 -0
- package/dist/{SignupRequirementsPage-DfbYmpQD.js → SignupRequirementsPage-Cf-ElkEq.js} +9 -8
- package/dist/{SignupRequirementsPage-DfbYmpQD.js.map → SignupRequirementsPage-Cf-ElkEq.js.map} +1 -1
- package/dist/StaffCreateSupportTicketForm-BlUP2XXy.js +14 -0
- package/dist/StaffCreateSupportTicketForm-D2nn4rTU.js +255 -0
- package/dist/StaffCreateSupportTicketForm-D2nn4rTU.js.map +1 -0
- package/dist/{StaffSupportTicketDetailPage-DQdfh6H1.js → StaffSupportTicketDetailPage-MFtm06BE.js} +14 -11
- package/dist/{StaffSupportTicketDetailPage-DQdfh6H1.js.map → StaffSupportTicketDetailPage-MFtm06BE.js.map} +1 -1
- package/dist/StaffSupportTicketList-LfLx0pYP.js +63 -0
- package/dist/StaffSupportTicketParent-B7mEN1oD.js +8 -0
- package/dist/{StaffSupportTicketParent-CilR4RGM.js → StaffSupportTicketParent-BvPwgOqH.js} +4 -4
- package/dist/{StaffSupportTicketParent-CilR4RGM.js.map → StaffSupportTicketParent-BvPwgOqH.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-BMCOP3ko.js +12 -0
- package/dist/StaffSupportTicketSuccess-Ca2WrcRg.js +54 -0
- package/dist/StaffSupportTicketSuccess-Ca2WrcRg.js.map +1 -0
- package/dist/{SupportStaffPage-KKugAnFm.js → SupportStaffPage-B69-kuvg.js} +8 -7
- package/dist/{SupportStaffPage-KKugAnFm.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-smItdkrD.js → SupportTicketMaintenancePage-Bptja-xb.js} +5 -4
- package/dist/{SupportTicketMaintenancePage-smItdkrD.js.map → SupportTicketMaintenancePage-Bptja-xb.js.map} +1 -1
- package/dist/TeamAttachmentsTab-Dk3LxX3n.js +63 -0
- package/dist/TeamHistoryTab-CRONdHcL.js +6 -0
- package/dist/{TeamHistoryTab-D5biUPmq.js → TeamHistoryTab-DM8KBEG1.js} +7 -19
- package/dist/TeamHistoryTab-DM8KBEG1.js.map +1 -0
- package/dist/TeamList-DYm_vQ2z.js +8 -0
- package/dist/TeamList-qdwlMuJv.js +141 -0
- package/dist/TeamList-qdwlMuJv.js.map +1 -0
- package/dist/TeamMemberList-4LRLT_7Z.js +7 -0
- package/dist/TeamMemberList-DyI1U1t_.js +166 -0
- package/dist/TeamMemberList-DyI1U1t_.js.map +1 -0
- package/dist/TeamMemberParent-B63pRfI6.js +10 -0
- package/dist/TeamMemberParent-D9Fxu7GD.js +83 -0
- package/dist/TeamMemberParent-D9Fxu7GD.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-BzGZZ1h8.js → TeamNotesTab-BgxleidZ.js} +6 -5
- package/dist/{TeamNotesTab-BzGZZ1h8.js.map → TeamNotesTab-BgxleidZ.js.map} +1 -1
- package/dist/TeamNotesTab-o7glfjoY.js +8 -0
- package/dist/TeamParent-BwXqA3rj.js +83 -0
- package/dist/TeamParent-BwXqA3rj.js.map +1 -0
- package/dist/TeamParent-CFOmyKPz.js +11 -0
- package/dist/{TimelineNoteInput-0p-M4Qie.js → TimelineNoteInput-DXaodm43.js} +3 -2
- package/dist/{TimelineNoteInput-0p-M4Qie.js.map → TimelineNoteInput-DXaodm43.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-DUE5gJTo.js → UserListPage-DtA8tLff.js} +4 -3
- package/dist/{UserListPage-DUE5gJTo.js.map → UserListPage-DtA8tLff.js.map} +1 -1
- package/dist/UserProfilePage-DRbCAr9H.js +8 -0
- package/dist/{UserProfilePage-C3b93Keh.js → UserProfilePage-g4-VEDXo.js} +4 -4
- package/dist/{UserProfilePage-C3b93Keh.js.map → UserProfilePage-g4-VEDXo.js.map} +1 -1
- package/dist/{VerifyEmail-DlOmWGG-.js → VerifyEmail-CM5ehFB8.js} +7 -7
- package/dist/{VerifyEmail-DlOmWGG-.js.map → VerifyEmail-CM5ehFB8.js.map} +1 -1
- package/dist/VerifyEmail-DMHczC9f.js +10 -0
- package/dist/ViewTeam-CXyABxE6.js +8 -0
- package/dist/ViewTeam-DSbKV60o.js +220 -0
- package/dist/ViewTeam-DSbKV60o.js.map +1 -0
- package/dist/ViewTeamMember-BB0nvPOe.js +167 -0
- package/dist/ViewTeamMember-BB0nvPOe.js.map +1 -0
- package/dist/ViewTeamMember-jrOnBaDh.js +7 -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-C7OxGAGl.js +142 -0
- package/dist/customerSupportTicketRoutes-C7OxGAGl.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 +793 -834
- 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-CfzH0BzK.js +1210 -0
- package/dist/saved_filter-CfzH0BzK.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-DVe_0RO9.js +4654 -0
- package/dist/src-DVe_0RO9.js.map +1 -0
- package/dist/staffSupportTicketRoutes-CWutoQWp.js +135 -0
- package/dist/staffSupportTicketRoutes-CWutoQWp.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-KFgnsdDP.js +192 -0
- package/dist/teamRoutes-KFgnsdDP.js.map +1 -0
- package/dist/team_memberRoutes-Cjpw_ql6.js +84 -0
- package/dist/team_memberRoutes-Cjpw_ql6.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-BNi926Ho.js → useEmailVerificationChannel-B51z65PN.js} +3 -3
- package/dist/{useEmailVerificationChannel-BNi926Ho.js.map → useEmailVerificationChannel-B51z65PN.js.map} +1 -1
- package/dist/{useMutation-BTsyHKyn.js → useMutation-BLNuJoYl.js} +6 -3
- package/dist/useMutation-BLNuJoYl.js.map +1 -0
- package/dist/{useQuery-BggIE52P.js → useQuery-BzUGEOj0.js} +4 -3
- package/dist/{useQuery-BggIE52P.js.map → useQuery-BzUGEOj0.js.map} +1 -1
- package/dist/{useQueryCache-Bjm-S8v5.js → useQueryCache-alzaRWEb.js} +2 -2
- package/dist/{useQueryCache-Bjm-S8v5.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-rmHf7bYx.js → useRpcAuth-CJtq1dqM.js} +25 -194
- 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-CpDPmEml.js +0 -6
- package/dist/ConsentRequired-C4IRMA0c.js +0 -213
- package/dist/ConsentRequired-C4IRMA0c.js.map +0 -1
- package/dist/CreateTeamForm-B4cIuYAf.js +0 -35
- package/dist/CreateTeamMemberForm-Chrw1y00.js +0 -35
- package/dist/CreateUserPage-WruMs7WP.js +0 -6
- package/dist/CreditBalanceDashboard-CkcsrZ_e.js +0 -35
- package/dist/CreditManagement-Ddvu9dMw.js +0 -35
- package/dist/CustomerCreateSupportTicketForm-BKperKGS.js +0 -35
- package/dist/CustomerSupportTicketList-DcbrjDa9.js +0 -35
- package/dist/CustomerSupportTicketParent-BeNzUwuP.js +0 -7
- package/dist/CustomerSupportTicketSuccess-CC967u3y.js +0 -35
- package/dist/EditTeamForm-B5Tee5wL.js +0 -35
- package/dist/EditTeamMemberForm-CaS2GLjV.js.map +0 -1
- package/dist/EditTeamMemberForm-OtcS8QWt.js +0 -6
- package/dist/EditUserPage-T4DQlKhf.js +0 -7
- package/dist/ForgotPassword-CUifhmqP.js +0 -7
- package/dist/LoginForm-Bg7GoZEA.js +0 -7
- package/dist/Logout-Bs92csWH.js +0 -7
- package/dist/MfaSetup-BACX5XP-.js +0 -8
- package/dist/MfaVerify-ak4iSdQ2.js +0 -8
- package/dist/ResetPassword-pY1uhTdl.js +0 -7
- package/dist/Signup-9TjMMnU4.js.map +0 -1
- package/dist/Signup-Bq-G3D-s.js +0 -9
- package/dist/SignupConsentFlow-QUZGKjdB.js.map +0 -1
- package/dist/StaffCreateSupportTicketForm-D0ZuisDk.js +0 -35
- package/dist/StaffSupportTicketList-CiqC05XB.js +0 -35
- package/dist/StaffSupportTicketParent-DkV329NI.js +0 -7
- package/dist/StaffSupportTicketSuccess-CUYnimaI.js +0 -35
- package/dist/TeamAttachmentsTab-DUtCD1Yi.js +0 -35
- package/dist/TeamHistoryTab-BsUoH4VK.js +0 -4
- package/dist/TeamHistoryTab-D5biUPmq.js.map +0 -1
- package/dist/TeamList-BkPIqZ8V.js +0 -35
- package/dist/TeamMemberList-1mxUGCNa.js +0 -35
- package/dist/TeamMemberParent-DzeBIElY.js +0 -35
- package/dist/TeamMembersTab-CBB2Yl_I.js +0 -3
- package/dist/TeamNotesTab-ClHl2nXd.js +0 -7
- package/dist/TeamParent-DJa9UZTP.js +0 -35
- package/dist/TimelineSystemEvent-BHzFr46C.js.map +0 -1
- package/dist/UserListPage-BTLE4J0s.js +0 -4
- package/dist/UserProfilePage-CVTORtSx.js +0 -7
- package/dist/VerifyEmail-DCP4DWIw.js +0 -9
- package/dist/ViewTeam-DVfnLMhV.js +0 -35
- package/dist/ViewTeamMember-L4v3gCIn.js +0 -35
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +0 -1
- package/dist/src-QZJyMfGX.js +0 -8951
- package/dist/src-QZJyMfGX.js.map +0 -1
- package/dist/useMutation-BTsyHKyn.js.map +0 -1
- package/dist/useRpcAuth-rmHf7bYx.js.map +0 -1
- package/dist/useSignupPendingData-BWHwUHhL.js +0 -47
- package/dist/useSignupPendingData-BWHwUHhL.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordVersionViewer-BWZ78vvE.js","names":["$emit","$slots"],"sources":["../src/components/ui/LoadingErrorStates.vue","../src/components/ui/RecordChangesSummary.vue","../src/components/ui/RecordVersionList.vue","../src/components/ui/RecordVersionViewer.vue"],"sourcesContent":["<template>\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"text-center py-8\">\n <slot name=\"loading\">\n <div class=\"flex justify-center\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n <p class=\"text-base-content/70 mt-2\">\n {{ config.loadingText || 'Loading...' }}\n </p>\n </slot>\n </div>\n\n <!-- Error State -->\n <div v-else-if=\"error\" class=\"text-center py-8\">\n <slot name=\"error\" :error=\"error\" :retry=\"handleRetry\">\n <div class=\"alert alert-error max-w-md mx-auto\">\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 <div>\n <h3 class=\"font-bold\">\n {{ config.errorTitle || 'Error' }}\n </h3>\n <div class=\"text-sm\">\n {{ getErrorMessage(error) }}\n </div>\n <button\n v-if=\"config.showRetry !== false\"\n class=\"btn btn-sm btn-outline mt-2\"\n @click=\"handleRetry\"\n >\n {{ config.retryText || 'Try Again' }}\n </button>\n </div>\n </div>\n </slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\ninterface LoadingErrorStatesConfig {\n loadingText?: string;\n errorTitle?: string;\n retryText?: string;\n showRetry?: boolean;\n customErrorMessage?: (error: Error) => string;\n}\n\nconst props = defineProps<{\n isLoading?: boolean;\n error?: Error | null;\n config?: LoadingErrorStatesConfig;\n}>();\n\nconst emit = defineEmits<{\n retry: [];\n}>();\n\nconst config = computed(() => props.config || {});\n\nfunction getErrorMessage(error: Error): string {\n if (config.value.customErrorMessage) {\n return config.value.customErrorMessage(error);\n }\n\n return error.message || 'An unexpected error occurred';\n}\n\nfunction handleRetry() {\n emit('retry');\n}\n</script>\n","<template>\n <div v-if=\"changedFields.length > 0\" class=\"card bg-base-100 shadow-sm mb-4\">\n <div class=\"card-body p-3 sm:p-5\">\n <div class=\"flex justify-between items-center\">\n <h2 class=\"card-title text-base sm:text-lg\">\n {{ config.title || 'Changes in This Version' }}\n </h2>\n <button @click=\"showChanges = !showChanges\" class=\"btn btn-sm btn-info\">\n {{\n showChanges ? config.hideText || 'Hide Changes' : config.showText || 'Show Changes'\n }}\n </button>\n </div>\n\n <div v-if=\"showChanges\">\n <!-- Desktop view - table format -->\n <div class=\"hidden md:block overflow-x-auto mt-4\">\n <table class=\"table table-zebra table-sm\">\n <thead>\n <tr>\n <th>{{ config.fieldColumnHeader || 'Field' }}</th>\n <th>{{ config.previousColumnHeader || 'Previous Value' }}</th>\n <th>{{ config.newColumnHeader || 'New Value' }}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(change, index) in changedFields\" :key=\"index\">\n <td class=\"font-mono text-xs\">\n {{ formatFieldName(change.path) }}\n </td>\n <td>{{ formatValue(change.oldValue) }}</td>\n <td>{{ formatValue(change.newValue) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Mobile view - card format -->\n <div class=\"md:hidden space-y-4 mt-4\">\n <div\n v-for=\"(change, index) in changedFields\"\n :key=\"index\"\n class=\"border border-base-300 rounded-lg p-3\"\n >\n <div class=\"mb-2\">\n <span class=\"font-mono text-xs font-bold\">{{\n formatFieldName(change.path)\n }}</span>\n </div>\n <div class=\"grid grid-cols-2 gap-2\">\n <div>\n <div class=\"text-xs text-base-content/70 mb-1\">\n {{ config.previousLabel || 'Previous:' }}\n </div>\n <div class=\"text-sm break-words\">\n {{ formatValue(change.oldValue) }}\n </div>\n </div>\n <div>\n <div class=\"text-xs text-base-content/70 mb-1\">\n {{ config.newLabel || 'New:' }}\n </div>\n <div class=\"text-sm break-words\">\n {{ formatValue(change.newValue) }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else class=\"mt-2 text-sm text-base-content/70\">\n {{ changedFields.length }}\n {{\n changedFields.length === 1\n ? config.fieldSingular || 'field'\n : config.fieldPlural || 'fields'\n }}\n changed\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport type { PropertyChange } from './RecordVersionViewerConfig';\n\ninterface RecordChangesSummaryConfig {\n title?: string;\n showText?: string;\n hideText?: string;\n fieldColumnHeader?: string;\n previousColumnHeader?: string;\n newColumnHeader?: string;\n previousLabel?: string;\n newLabel?: string;\n fieldSingular?: string;\n fieldPlural?: string;\n fieldNameFormatter?: (path: string) => string;\n valueFormatter?: (value: any, path: string) => string;\n customFieldLabels?: Record<string, string>;\n}\n\nconst props = defineProps<{\n changedFields: PropertyChange[];\n config?: RecordChangesSummaryConfig;\n}>();\n\nconst config = computed(() => props.config || {});\n\n// State for showing/hiding changes - hidden by default\nconst showChanges = ref(false);\n\n// Default field name formatter - converts camelCase and dot notation to readable labels\nfunction defaultFieldNameFormatter(path: string): string {\n // Check for custom field labels first\n if (config.value.customFieldLabels?.[path]) {\n return config.value.customFieldLabels[path];\n }\n\n return path\n .split('.')\n .map((segment) =>\n segment\n .replace(/([A-Z])/g, ' $1') // Add space before capital letters\n .replace(/^./, (str) => str.toUpperCase()) // Capitalize first letter\n .trim(),\n )\n .join(' → '); // Use arrow to show nesting\n}\n\n// Format field name for display\nfunction formatFieldName(path: string): string {\n if (config.value.fieldNameFormatter) {\n return config.value.fieldNameFormatter(path);\n }\n return defaultFieldNameFormatter(path);\n}\n\n// Default value formatter\nfunction defaultValueFormatter(value: any): string {\n if (value === null || value === undefined) return 'N/A';\n\n // Handle objects and arrays\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n return value.length === 0 ? 'Empty array' : `Array (${value.length} items)`;\n }\n return JSON.stringify(value, null, 2);\n }\n\n // Handle boolean values\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n\n // Handle numbers with potential formatting\n if (typeof value === 'number') {\n // Format currency if it looks like a monetary value\n if (value > 0 && (value % 1 === 0 || value.toString().includes('.'))) {\n // Simple currency detection - could be made more sophisticated\n return value.toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n }\n return value.toString();\n }\n\n // Default to string representation\n return String(value);\n}\n\n// Format value for display\nfunction formatValue(value: any, path?: string): string {\n if (config.value.valueFormatter) {\n return config.value.valueFormatter(value, path || '');\n }\n return defaultValueFormatter(value);\n}\n</script>\n","<template>\n <div class=\"space-y-4\">\n <!-- Loading State -->\n <div v-if=\"loading\" class=\"space-y-4\">\n <div v-for=\"i in 3\" :key=\"i\" class=\"card bg-base-100 shadow-xs animate-pulse\">\n <div class=\"card-body p-4\">\n <div class=\"h-4 bg-base-300 rounded-sm w-1/4 mb-2\"></div>\n <div class=\"h-3 bg-base-300 rounded-sm w-1/3\"></div>\n </div>\n </div>\n </div>\n\n <!-- Error State -->\n <div v-else-if=\"error\" class=\"alert alert-error shadow-lg text-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-5 w-5\"\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 <div>\n <h3 class=\"font-bold\">{{ config.errorTitle || 'Error Loading Version History' }}</h3>\n <div class=\"text-sm\">{{ error.message }}</div>\n </div>\n <button class=\"btn btn-xs\" @click=\"$emit('retry')\">\n {{ config.retryText || 'Retry' }}\n </button>\n </div>\n\n <!-- No Versions -->\n <div v-else-if=\"!filteredVersions.length\" class=\"alert alert-info shadow-lg text-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n class=\"stroke-current shrink-0 w-5 h-5\"\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 <span>{{\n config.noVersionsText ||\n `No previous versions available for this ${config.recordDisplayName || 'record'}.`\n }}</span>\n </div>\n\n <!-- Version List -->\n <div v-else class=\"space-y-3 max-w-4xl mx-auto\">\n <div\n v-for=\"version in filteredVersions\"\n :key=\"version.id\"\n class=\"card bg-base-100 shadow-xs hover:shadow-md transition-shadow duration-200\"\n >\n <div class=\"card-body p-4\">\n <div class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2\">\n <div>\n <h3 class=\"font-medium text-sm\">\n {{\n config.versionLabelFormat\n ? config.versionLabelFormat(version)\n : `Version from ${formatDate(version.recorded_at)}`\n }}\n </h3>\n <div class=\"flex items-center gap-2 text-xs text-base-content/70\">\n <span\n class=\"badge badge-xs\"\n :class=\"getOperationBadgeClass(version.operation)\"\n >\n {{ formatOperation(version.operation) }}\n </span>\n <span>by {{ version.auth_username || 'Unknown' }}</span>\n </div>\n <!-- Custom metadata slot -->\n <div v-if=\"$slots.versionMetadata\" class=\"mt-1\">\n <slot name=\"versionMetadata\" :version=\"version\"></slot>\n </div>\n </div>\n <div class=\"flex gap-2\">\n <!-- Custom actions slot -->\n <slot name=\"versionActions\" :version=\"version\">\n <!-- Default view action -->\n <button\n v-if=\"config.viewAction\"\n class=\"btn btn-primary btn-xs\"\n @click=\"config.viewAction(version)\"\n >\n {{ config.viewActionText || 'View Version' }}\n </button>\n </slot>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Pagination -->\n <div v-if=\"loadingMore\" class=\"text-center py-4\">\n <span class=\"loading loading-spinner loading-md\"></span>\n </div>\n <div v-if=\"hasNextPage\" class=\"text-center py-4\">\n <button\n class=\"btn btn-sm btn-neutral\"\n @click=\"$emit('load-more')\"\n :disabled=\"loadingMore\"\n >\n {{ config.loadMoreText || 'Load More' }}\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n T extends {\n id: string;\n operation: string;\n recorded_at: string;\n auth_username?: string | null;\n }\n \"\n>\nimport { computed } from 'vue';\nimport type { RecordVersionListConfig } from './RecordVersionListConfig';\n\nconst props = defineProps<{\n versions: T[];\n loading?: boolean;\n error?: Error | null;\n hasNextPage?: boolean;\n loadingMore?: boolean;\n config?: RecordVersionListConfig;\n excludeLatest?: boolean;\n}>();\n\ndefineEmits<{\n retry: [];\n 'load-more': [];\n}>();\n\nconst config = computed(() => props.config || {});\n\n// Filter out the latest version if requested (default behavior)\nconst filteredVersions = computed(() => {\n if (!props.excludeLatest) {\n return props.versions;\n }\n\n if (props.versions.length <= 1) {\n return [];\n }\n return props.versions.slice(1);\n});\n\n// Default operation labels\nconst defaultOperationLabels = {\n insert: 'Created',\n update: 'Updated',\n delete: 'Deleted',\n};\n\n// Default operation badge classes\nconst defaultOperationBadgeClasses = {\n insert: 'badge-success',\n update: 'badge-warning',\n delete: 'badge-error',\n};\n\n/**\n * Format a date string to a readable format\n */\nfunction formatDate(dateString: string | undefined | null): string {\n if (!dateString) return 'Unknown date';\n\n try {\n const date = new Date(dateString);\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n }).format(date);\n } catch (e) {\n return 'Invalid date';\n }\n}\n\n/**\n * Format the operation type for display\n */\nfunction formatOperation(operation?: string): string {\n if (!operation) return 'Unknown';\n\n const labels = { ...defaultOperationLabels, ...config.value.operationLabels };\n return labels[operation as keyof typeof labels] || operation;\n}\n\n/**\n * Get CSS class for operation badge\n */\nfunction getOperationBadgeClass(operation?: string): string {\n if (!operation) return 'badge-neutral';\n\n const classes = { ...defaultOperationBadgeClasses, ...config.value.operationBadgeClasses };\n return classes[operation as keyof typeof classes] || 'badge-neutral';\n}\n</script>\n","<template>\n <div>\n <!-- Version Header - sticky on mobile -->\n <div class=\"sticky top-0 z-10 bg-base-100 shadow-sm\">\n <slot\n name=\"header\"\n :version=\"version\"\n :is-loading=\"isLoading\"\n :is-restoring=\"isRestoring\"\n >\n <!-- Default header -->\n <div class=\"flex justify-between items-center p-4 border-b\">\n <div>\n <h1 class=\"text-lg font-semibold\">\n {{ config.title || `View ${config.recordDisplayName || 'Record'} Version` }}\n </h1>\n <div v-if=\"version\" class=\"text-sm text-base-content/70\">\n {{ formatVersionInfo(version) }}\n </div>\n </div>\n <div class=\"flex gap-2\">\n <!-- Back button -->\n <button v-if=\"config.onBack\" @click=\"config.onBack\" class=\"btn btn-ghost btn-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4 mr-1\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n </svg>\n {{ config.backText || 'Back' }}\n </button>\n\n <!-- Restore button -->\n <button\n v-if=\"config.onRestore && version && version.operation !== 'delete'\"\n @click=\"handleRestore\"\n :disabled=\"isRestoring\"\n class=\"btn btn-primary btn-sm\"\n >\n <span v-if=\"isRestoring\" class=\"loading loading-spinner loading-sm mr-1\"></span>\n {{ config.restoreText || 'Restore Version' }}\n </button>\n </div>\n </div>\n </slot>\n </div>\n\n <!-- Loading and Error States -->\n <LoadingErrorStates :is-loading=\"isLoading\" :error=\"error\" />\n\n <!-- Main content area -->\n <div\n v-if=\"!isLoading && !error && recordData\"\n class=\"max-w-4xl mx-auto p-2 md:p-4 bg-base-200 rounded-lg shadow-sm\"\n >\n <!-- Changes Summary - Only show for update operations -->\n <div v-if=\"shouldShowChanges\" class=\"mb-4\">\n <slot name=\"changes\" :changed-fields=\"changedFields\" :version=\"version\">\n <RecordChangesSummary\n :changed-fields=\"changedFields\"\n :config=\"config.changesSummaryConfig\"\n />\n </slot>\n </div>\n\n <!-- Deletion Notice -->\n <div v-if=\"version?.operation === 'delete'\" class=\"mb-4\">\n <slot name=\"deletion-notice\" :version=\"version\">\n <div class=\"alert alert-warning\">\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-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z\"\n />\n </svg>\n <div>\n <h3 class=\"font-bold\">\n {{ config.deletionNoticeTitle || 'Record Was Deleted' }}\n </h3>\n <div class=\"text-sm\">\n {{\n config.deletionNoticeText ||\n 'This version shows the state of the record before it was deleted.'\n }}\n </div>\n </div>\n </div>\n </slot>\n </div>\n\n <!-- Record Information -->\n <div class=\"mb-4 p-3 bg-base-100 rounded-lg shadow-sm\">\n <slot name=\"record-info\" :record-data=\"recordData\" :version=\"version\">\n <!-- Default record info display -->\n <h3 class=\"font-semibold mb-2\">\n {{ config.recordInfoTitle || 'Record Information' }}\n </h3>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\">\n <div v-for=\"(value, key) in filteredRecordData\" :key=\"key\">\n <strong class=\"text-base-content/70\">{{ formatFieldName(key) }}:</strong>\n <span class=\"ml-2\">{{ formatValue(value) }}</span>\n </div>\n </div>\n </slot>\n </div>\n\n <!-- Custom Content Area -->\n <div class=\"space-y-4\">\n <slot\n name=\"content\"\n :record-data=\"recordData\"\n :version=\"version\"\n :changed-fields=\"changedFields\"\n >\n <!-- Fallback content if no slot provided -->\n <div class=\"p-4 bg-base-100 rounded-lg shadow-sm\">\n <h3 class=\"font-semibold mb-2\">{{ config.rawDataTitle || 'Raw Data' }}</h3>\n <pre class=\"text-xs bg-base-200 p-3 rounded overflow-auto max-h-96\">{{\n JSON.stringify(recordData, null, 2)\n }}</pre>\n </div>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n TRecord extends Record<string, any>,\n TVersion extends {\n id: string;\n operation: string;\n recorded_at: string;\n auth_username?: string | null;\n }\n \"\n>\nimport { computed } from 'vue';\nimport LoadingErrorStates from './LoadingErrorStates.vue';\nimport RecordChangesSummary from './RecordChangesSummary.vue';\nimport type { PropertyChange, RecordVersionViewerConfig } from './RecordVersionViewerConfig';\n\nconst props = withDefaults(\n defineProps<{\n version: TVersion | null;\n recordData: TRecord | null;\n changedFields?: PropertyChange[];\n isLoading?: boolean;\n isRestoring?: boolean;\n error?: Error | null;\n config?: RecordVersionViewerConfig;\n }>(),\n {\n changedFields: () => [],\n },\n);\n\nconst config = computed(() => props.config || {});\n\n// Compute whether to show changes summary\nconst shouldShowChanges = computed(() => {\n return (\n props.changedFields &&\n props.changedFields.length > 0 &&\n props.version?.operation === 'update'\n );\n});\n\n// Filter out system fields from record data display\nconst filteredRecordData = computed(() => {\n if (!props.recordData) return {};\n\n const excludeFields = new Set([\n 'id',\n 'created_at',\n 'updated_at',\n 'created_by',\n 'updated_by',\n '__typename',\n ...(config.value.excludeFields || []),\n ]);\n\n return Object.entries(props.recordData)\n .filter(([key]) => !excludeFields.has(key))\n .reduce(\n (acc, [key, value]) => {\n acc[key] = value;\n return acc;\n },\n {} as Record<string, any>,\n );\n});\n\n// Format version info for display\nfunction formatVersionInfo(version: TVersion): string {\n const date = new Date(version.recorded_at).toLocaleString();\n const operation = version.operation.charAt(0).toUpperCase() + version.operation.slice(1);\n const user = version.auth_username || 'Unknown';\n\n return `${operation} on ${date} by ${user}`;\n}\n\n// Default field name formatter\nfunction formatFieldName(field: string): string {\n if (config.value.formatFieldName) {\n return config.value.formatFieldName(field);\n }\n\n return field\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\n// Default value formatter\nfunction formatValue(value: any): string {\n if (config.value.formatValue) {\n return config.value.formatValue(value);\n }\n\n if (value === null || value === undefined) return 'N/A';\n if (typeof value === 'boolean') return value ? 'Yes' : 'No';\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n}\n\n// Handle restore action\nasync function handleRestore() {\n if (config.value.onRestore && props.version) {\n await config.value.onRestore(props.version);\n }\n}\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RecordVersionViewer-D2j10HdK.js","names":["$emit","$slots"],"sources":["../src/components/ui/LoadingErrorStates.vue","../src/components/ui/RecordChangesSummary.vue","../src/components/ui/RecordVersionList.vue","../src/components/ui/RecordVersionViewer.vue"],"sourcesContent":["<template>\n <!-- Loading State -->\n <div v-if=\"isLoading\" class=\"text-center py-8\">\n <slot name=\"loading\">\n <div class=\"flex justify-center\">\n <span class=\"loading loading-spinner loading-lg\"></span>\n </div>\n <p class=\"text-base-content/70 mt-2\">\n {{ config.loadingText || 'Loading...' }}\n </p>\n </slot>\n </div>\n\n <!-- Error State -->\n <div v-else-if=\"error\" class=\"text-center py-8\">\n <slot name=\"error\" :error=\"error\" :retry=\"handleRetry\">\n <div class=\"alert alert-error max-w-md mx-auto\">\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 <div>\n <h3 class=\"font-bold\">\n {{ config.errorTitle || 'Error' }}\n </h3>\n <div class=\"text-sm\">\n {{ getErrorMessage(error) }}\n </div>\n <button\n v-if=\"config.showRetry !== false\"\n class=\"btn btn-sm btn-outline mt-2\"\n @click=\"handleRetry\"\n >\n {{ config.retryText || 'Try Again' }}\n </button>\n </div>\n </div>\n </slot>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\ninterface LoadingErrorStatesConfig {\n loadingText?: string;\n errorTitle?: string;\n retryText?: string;\n showRetry?: boolean;\n customErrorMessage?: (error: Error) => string;\n}\n\nconst props = defineProps<{\n isLoading?: boolean;\n error?: Error | null;\n config?: LoadingErrorStatesConfig;\n}>();\n\nconst emit = defineEmits<{\n retry: [];\n}>();\n\nconst config = computed(() => props.config || {});\n\nfunction getErrorMessage(error: Error): string {\n if (config.value.customErrorMessage) {\n return config.value.customErrorMessage(error);\n }\n\n return error.message || 'An unexpected error occurred';\n}\n\nfunction handleRetry() {\n emit('retry');\n}\n</script>\n","<template>\n <div v-if=\"changedFields.length > 0\" class=\"card bg-base-100 shadow-sm mb-4\">\n <div class=\"card-body p-3 sm:p-5\">\n <div class=\"flex justify-between items-center\">\n <h2 class=\"card-title text-base sm:text-lg\">\n {{ config.title || 'Changes in This Version' }}\n </h2>\n <button @click=\"showChanges = !showChanges\" class=\"btn btn-sm btn-info\">\n {{\n showChanges ? config.hideText || 'Hide Changes' : config.showText || 'Show Changes'\n }}\n </button>\n </div>\n\n <div v-if=\"showChanges\">\n <!-- Desktop view - table format -->\n <div class=\"hidden md:block overflow-x-auto mt-4\">\n <table class=\"table table-zebra table-sm\">\n <thead>\n <tr>\n <th>{{ config.fieldColumnHeader || 'Field' }}</th>\n <th>{{ config.previousColumnHeader || 'Previous Value' }}</th>\n <th>{{ config.newColumnHeader || 'New Value' }}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(change, index) in changedFields\" :key=\"index\">\n <td class=\"font-mono text-xs\">\n {{ formatFieldName(change.path) }}\n </td>\n <td>{{ formatValue(change.oldValue) }}</td>\n <td>{{ formatValue(change.newValue) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Mobile view - card format -->\n <div class=\"md:hidden space-y-4 mt-4\">\n <div\n v-for=\"(change, index) in changedFields\"\n :key=\"index\"\n class=\"border border-base-300 rounded-lg p-3\"\n >\n <div class=\"mb-2\">\n <span class=\"font-mono text-xs font-bold\">{{\n formatFieldName(change.path)\n }}</span>\n </div>\n <div class=\"grid grid-cols-2 gap-2\">\n <div>\n <div class=\"text-xs text-base-content/70 mb-1\">\n {{ config.previousLabel || 'Previous:' }}\n </div>\n <div class=\"text-sm break-words\">\n {{ formatValue(change.oldValue) }}\n </div>\n </div>\n <div>\n <div class=\"text-xs text-base-content/70 mb-1\">\n {{ config.newLabel || 'New:' }}\n </div>\n <div class=\"text-sm break-words\">\n {{ formatValue(change.newValue) }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div v-else class=\"mt-2 text-sm text-base-content/70\">\n {{ changedFields.length }}\n {{\n changedFields.length === 1\n ? config.fieldSingular || 'field'\n : config.fieldPlural || 'fields'\n }}\n changed\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\nimport type { PropertyChange } from './RecordVersionViewerConfig';\n\ninterface RecordChangesSummaryConfig {\n title?: string;\n showText?: string;\n hideText?: string;\n fieldColumnHeader?: string;\n previousColumnHeader?: string;\n newColumnHeader?: string;\n previousLabel?: string;\n newLabel?: string;\n fieldSingular?: string;\n fieldPlural?: string;\n fieldNameFormatter?: (path: string) => string;\n valueFormatter?: (value: any, path: string) => string;\n customFieldLabels?: Record<string, string>;\n}\n\nconst props = defineProps<{\n changedFields: PropertyChange[];\n config?: RecordChangesSummaryConfig;\n}>();\n\nconst config = computed(() => props.config || {});\n\n// State for showing/hiding changes - hidden by default\nconst showChanges = ref(false);\n\n// Default field name formatter - converts camelCase and dot notation to readable labels\nfunction defaultFieldNameFormatter(path: string): string {\n // Check for custom field labels first\n if (config.value.customFieldLabels?.[path]) {\n return config.value.customFieldLabels[path];\n }\n\n return path\n .split('.')\n .map((segment) =>\n segment\n .replace(/([A-Z])/g, ' $1') // Add space before capital letters\n .replace(/^./, (str) => str.toUpperCase()) // Capitalize first letter\n .trim(),\n )\n .join(' → '); // Use arrow to show nesting\n}\n\n// Format field name for display\nfunction formatFieldName(path: string): string {\n if (config.value.fieldNameFormatter) {\n return config.value.fieldNameFormatter(path);\n }\n return defaultFieldNameFormatter(path);\n}\n\n// Default value formatter\nfunction defaultValueFormatter(value: any): string {\n if (value === null || value === undefined) return 'N/A';\n\n // Handle objects and arrays\n if (typeof value === 'object') {\n if (Array.isArray(value)) {\n return value.length === 0 ? 'Empty array' : `Array (${value.length} items)`;\n }\n return JSON.stringify(value, null, 2);\n }\n\n // Handle boolean values\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n\n // Handle numbers with potential formatting\n if (typeof value === 'number') {\n // Format currency if it looks like a monetary value\n if (value > 0 && (value % 1 === 0 || value.toString().includes('.'))) {\n // Simple currency detection - could be made more sophisticated\n return value.toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n }\n return value.toString();\n }\n\n // Default to string representation\n return String(value);\n}\n\n// Format value for display\nfunction formatValue(value: any, path?: string): string {\n if (config.value.valueFormatter) {\n return config.value.valueFormatter(value, path || '');\n }\n return defaultValueFormatter(value);\n}\n</script>\n","<template>\n <div class=\"space-y-4\">\n <!-- Loading State -->\n <div v-if=\"loading\" class=\"space-y-4\">\n <div v-for=\"i in 3\" :key=\"i\" class=\"card bg-base-100 shadow-xs animate-pulse\">\n <div class=\"card-body p-4\">\n <div class=\"h-4 bg-base-300 rounded-sm w-1/4 mb-2\"></div>\n <div class=\"h-3 bg-base-300 rounded-sm w-1/3\"></div>\n </div>\n </div>\n </div>\n\n <!-- Error State -->\n <div v-else-if=\"error\" class=\"alert alert-error shadow-lg text-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"stroke-current shrink-0 h-5 w-5\"\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 <div>\n <h3 class=\"font-bold\">{{ config.errorTitle || 'Error Loading Version History' }}</h3>\n <div class=\"text-sm\">{{ error.message }}</div>\n </div>\n <button class=\"btn btn-xs\" @click=\"$emit('retry')\">\n {{ config.retryText || 'Retry' }}\n </button>\n </div>\n\n <!-- No Versions -->\n <div v-else-if=\"!filteredVersions.length\" class=\"alert alert-info shadow-lg text-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n class=\"stroke-current shrink-0 w-5 h-5\"\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 <span>{{\n config.noVersionsText ||\n `No previous versions available for this ${config.recordDisplayName || 'record'}.`\n }}</span>\n </div>\n\n <!-- Version List -->\n <div v-else class=\"space-y-3 max-w-4xl mx-auto\">\n <div\n v-for=\"version in filteredVersions\"\n :key=\"version.id\"\n class=\"card bg-base-100 shadow-xs hover:shadow-md transition-shadow duration-200\"\n >\n <div class=\"card-body p-4\">\n <div class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2\">\n <div>\n <h3 class=\"font-medium text-sm\">\n {{\n config.versionLabelFormat\n ? config.versionLabelFormat(version)\n : `Version from ${formatDate(version.recorded_at)}`\n }}\n </h3>\n <div class=\"flex items-center gap-2 text-xs text-base-content/70\">\n <span\n class=\"badge badge-xs\"\n :class=\"getOperationBadgeClass(version.operation)\"\n >\n {{ formatOperation(version.operation) }}\n </span>\n <span>by {{ version.auth_username || 'Unknown' }}</span>\n </div>\n <!-- Custom metadata slot -->\n <div v-if=\"$slots.versionMetadata\" class=\"mt-1\">\n <slot name=\"versionMetadata\" :version=\"version\"></slot>\n </div>\n </div>\n <div class=\"flex gap-2\">\n <!-- Custom actions slot -->\n <slot name=\"versionActions\" :version=\"version\">\n <!-- Default view action -->\n <button\n v-if=\"config.viewAction\"\n class=\"btn btn-primary btn-xs\"\n @click=\"config.viewAction(version)\"\n >\n {{ config.viewActionText || 'View Version' }}\n </button>\n </slot>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Pagination -->\n <div v-if=\"loadingMore\" class=\"text-center py-4\">\n <span class=\"loading loading-spinner loading-md\"></span>\n </div>\n <div v-if=\"hasNextPage\" class=\"text-center py-4\">\n <button\n class=\"btn btn-sm btn-neutral\"\n @click=\"$emit('load-more')\"\n :disabled=\"loadingMore\"\n >\n {{ config.loadMoreText || 'Load More' }}\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n T extends {\n id: string;\n operation: string;\n recorded_at: string;\n auth_username?: string | null;\n }\n \"\n>\nimport { computed } from 'vue';\nimport type { RecordVersionListConfig } from './RecordVersionListConfig';\n\nconst props = defineProps<{\n versions: T[];\n loading?: boolean;\n error?: Error | null;\n hasNextPage?: boolean;\n loadingMore?: boolean;\n config?: RecordVersionListConfig;\n excludeLatest?: boolean;\n}>();\n\ndefineEmits<{\n retry: [];\n 'load-more': [];\n}>();\n\nconst config = computed(() => props.config || {});\n\n// Filter out the latest version if requested (default behavior)\nconst filteredVersions = computed(() => {\n if (!props.excludeLatest) {\n return props.versions;\n }\n\n if (props.versions.length <= 1) {\n return [];\n }\n return props.versions.slice(1);\n});\n\n// Default operation labels\nconst defaultOperationLabels = {\n insert: 'Created',\n update: 'Updated',\n delete: 'Deleted',\n};\n\n// Default operation badge classes\nconst defaultOperationBadgeClasses = {\n insert: 'badge-success',\n update: 'badge-warning',\n delete: 'badge-error',\n};\n\n/**\n * Format a date string to a readable format\n */\nfunction formatDate(dateString: string | undefined | null): string {\n if (!dateString) return 'Unknown date';\n\n try {\n const date = new Date(dateString);\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n }).format(date);\n } catch (e) {\n return 'Invalid date';\n }\n}\n\n/**\n * Format the operation type for display\n */\nfunction formatOperation(operation?: string): string {\n if (!operation) return 'Unknown';\n\n const labels = { ...defaultOperationLabels, ...config.value.operationLabels };\n return labels[operation as keyof typeof labels] || operation;\n}\n\n/**\n * Get CSS class for operation badge\n */\nfunction getOperationBadgeClass(operation?: string): string {\n if (!operation) return 'badge-neutral';\n\n const classes = { ...defaultOperationBadgeClasses, ...config.value.operationBadgeClasses };\n return classes[operation as keyof typeof classes] || 'badge-neutral';\n}\n</script>\n","<template>\n <div>\n <!-- Version Header - sticky on mobile -->\n <div class=\"sticky top-0 z-10 bg-base-100 shadow-sm\">\n <slot\n name=\"header\"\n :version=\"version\"\n :is-loading=\"isLoading\"\n :is-restoring=\"isRestoring\"\n >\n <!-- Default header -->\n <div class=\"flex justify-between items-center p-4 border-b\">\n <div>\n <h1 class=\"text-lg font-semibold\">\n {{ config.title || `View ${config.recordDisplayName || 'Record'} Version` }}\n </h1>\n <div v-if=\"version\" class=\"text-sm text-base-content/70\">\n {{ formatVersionInfo(version) }}\n </div>\n </div>\n <div class=\"flex gap-2\">\n <!-- Back button -->\n <button v-if=\"config.onBack\" @click=\"config.onBack\" class=\"btn btn-ghost btn-sm\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4 mr-1\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M10 19l-7-7m0 0l7-7m-7 7h18\"\n />\n </svg>\n {{ config.backText || 'Back' }}\n </button>\n\n <!-- Restore button -->\n <button\n v-if=\"config.onRestore && version && version.operation !== 'delete'\"\n @click=\"handleRestore\"\n :disabled=\"isRestoring\"\n class=\"btn btn-primary btn-sm\"\n >\n <span v-if=\"isRestoring\" class=\"loading loading-spinner loading-sm mr-1\"></span>\n {{ config.restoreText || 'Restore Version' }}\n </button>\n </div>\n </div>\n </slot>\n </div>\n\n <!-- Loading and Error States -->\n <LoadingErrorStates :is-loading=\"isLoading\" :error=\"error\" />\n\n <!-- Main content area -->\n <div\n v-if=\"!isLoading && !error && recordData\"\n class=\"max-w-4xl mx-auto p-2 md:p-4 bg-base-200 rounded-lg shadow-sm\"\n >\n <!-- Changes Summary - Only show for update operations -->\n <div v-if=\"shouldShowChanges\" class=\"mb-4\">\n <slot name=\"changes\" :changed-fields=\"changedFields\" :version=\"version\">\n <RecordChangesSummary\n :changed-fields=\"changedFields\"\n :config=\"config.changesSummaryConfig\"\n />\n </slot>\n </div>\n\n <!-- Deletion Notice -->\n <div v-if=\"version?.operation === 'delete'\" class=\"mb-4\">\n <slot name=\"deletion-notice\" :version=\"version\">\n <div class=\"alert alert-warning\">\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-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z\"\n />\n </svg>\n <div>\n <h3 class=\"font-bold\">\n {{ config.deletionNoticeTitle || 'Record Was Deleted' }}\n </h3>\n <div class=\"text-sm\">\n {{\n config.deletionNoticeText ||\n 'This version shows the state of the record before it was deleted.'\n }}\n </div>\n </div>\n </div>\n </slot>\n </div>\n\n <!-- Record Information -->\n <div class=\"mb-4 p-3 bg-base-100 rounded-lg shadow-sm\">\n <slot name=\"record-info\" :record-data=\"recordData\" :version=\"version\">\n <!-- Default record info display -->\n <h3 class=\"font-semibold mb-2\">\n {{ config.recordInfoTitle || 'Record Information' }}\n </h3>\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\">\n <div v-for=\"(value, key) in filteredRecordData\" :key=\"key\">\n <strong class=\"text-base-content/70\">{{ formatFieldName(key) }}:</strong>\n <span class=\"ml-2\">{{ formatValue(value) }}</span>\n </div>\n </div>\n </slot>\n </div>\n\n <!-- Custom Content Area -->\n <div class=\"space-y-4\">\n <slot\n name=\"content\"\n :record-data=\"recordData\"\n :version=\"version\"\n :changed-fields=\"changedFields\"\n >\n <!-- Fallback content if no slot provided -->\n <div class=\"p-4 bg-base-100 rounded-lg shadow-sm\">\n <h3 class=\"font-semibold mb-2\">{{ config.rawDataTitle || 'Raw Data' }}</h3>\n <pre class=\"text-xs bg-base-200 p-3 rounded overflow-auto max-h-96\">{{\n JSON.stringify(recordData, null, 2)\n }}</pre>\n </div>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script\n setup\n lang=\"ts\"\n generic=\"\n TRecord extends Record<string, any>,\n TVersion extends {\n id: string;\n operation: string;\n recorded_at: string;\n auth_username?: string | null;\n }\n \"\n>\nimport { computed } from 'vue';\nimport LoadingErrorStates from './LoadingErrorStates.vue';\nimport RecordChangesSummary from './RecordChangesSummary.vue';\nimport type { PropertyChange, RecordVersionViewerConfig } from './RecordVersionViewerConfig';\n\nconst props = withDefaults(\n defineProps<{\n version: TVersion | null;\n recordData: TRecord | null;\n changedFields?: PropertyChange[];\n isLoading?: boolean;\n isRestoring?: boolean;\n error?: Error | null;\n config?: RecordVersionViewerConfig;\n }>(),\n {\n changedFields: () => [],\n },\n);\n\nconst config = computed(() => props.config || {});\n\n// Compute whether to show changes summary\nconst shouldShowChanges = computed(() => {\n return (\n props.changedFields &&\n props.changedFields.length > 0 &&\n props.version?.operation === 'update'\n );\n});\n\n// Filter out system fields from record data display\nconst filteredRecordData = computed(() => {\n if (!props.recordData) return {};\n\n const excludeFields = new Set([\n 'id',\n 'created_at',\n 'updated_at',\n 'created_by',\n 'updated_by',\n '__typename',\n ...(config.value.excludeFields || []),\n ]);\n\n return Object.entries(props.recordData)\n .filter(([key]) => !excludeFields.has(key))\n .reduce(\n (acc, [key, value]) => {\n acc[key] = value;\n return acc;\n },\n {} as Record<string, any>,\n );\n});\n\n// Format version info for display\nfunction formatVersionInfo(version: TVersion): string {\n const date = new Date(version.recorded_at).toLocaleString();\n const operation = version.operation.charAt(0).toUpperCase() + version.operation.slice(1);\n const user = version.auth_username || 'Unknown';\n\n return `${operation} on ${date} by ${user}`;\n}\n\n// Default field name formatter\nfunction formatFieldName(field: string): string {\n if (config.value.formatFieldName) {\n return config.value.formatFieldName(field);\n }\n\n return field\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\n// Default value formatter\nfunction formatValue(value: any): string {\n if (config.value.formatValue) {\n return config.value.formatValue(value);\n }\n\n if (value === null || value === undefined) return 'N/A';\n if (typeof value === 'boolean') return value ? 'Yes' : 'No';\n if (typeof value === 'object') return JSON.stringify(value);\n return String(value);\n}\n\n// Handle restore action\nasync function handleRestore() {\n if (config.value.onRestore && props.version) {\n await config.value.onRestore(props.version);\n }\n}\n</script>\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as useMutation } from "./useMutation-
|
|
2
|
-
import { t as AppLink_default } from "./AppLink-
|
|
3
|
-
import { o as withReturnUrl } from "./useReturnUrl-
|
|
1
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
2
|
+
import { t as AppLink_default } from "./AppLink-FcNGKgvG.js";
|
|
3
|
+
import { o as withReturnUrl } from "./useReturnUrl-B5V3SJf5.js";
|
|
4
4
|
import { computed, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
5
5
|
import { useRoute, useRouter } from "vue-router";
|
|
6
6
|
import { toast } from "vue3-toastify";
|
|
@@ -89,4 +89,4 @@ var ResetPassword_default = _sfc_main;
|
|
|
89
89
|
|
|
90
90
|
//#endregion
|
|
91
91
|
export { resetPasswordSchemaWithMetadata as n, ResetPassword_default as t };
|
|
92
|
-
//# sourceMappingURL=ResetPassword-
|
|
92
|
+
//# sourceMappingURL=ResetPassword-Cd-Yxp8E.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResetPassword-
|
|
1
|
+
{"version":3,"file":"ResetPassword-Cd-Yxp8E.js","names":[],"sources":["../src/slices/auth/features/reset_password/reset_password_schema.ts","../src/slices/auth/features/reset_password/ResetPassword.vue"],"sourcesContent":["import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { resetPasswordInputSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\n// Define the login form type\nexport type ResetPasswordForm = z.infer<typeof resetPasswordInputSchema>;\n\n// Enhance the schema with metadata\nexport const resetPasswordSchemaWithMetadata = withMetadata(\n resetPasswordInputSchema,\n 'resetPasswordSchema',\n {\n 'passwords.password': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'new-password',\n className: 'login-field',\n },\n 'passwords.password_confirm': {\n inputType: 'password',\n placeholder: '••••••••',\n helpText: 'Must be at least 8 characters',\n autocomplete: 'new-password',\n className: 'login-field',\n },\n },\n);\n","<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <h1 class=\"text-2xl font-bold mb-6 text-center\">Reset Password</h1>\n\n <ZiniaForm @handle-submit=\"handleSubmit\" @success=\"handleSuccess\" @error=\"handleError\">\n <zinia.PasswordsPasswordField />\n <zinia.PasswordsPasswordConfirmField />\n\n <ZiniaSubmitButton submitText=\"Reset Password\" submittingText=\"Resetting Password...\" />\n\n <div class=\"text-center mt-2\">\n <p>\n Already have an account?\n <AppLink class=\"link-accent link\" :to=\"loginLink\">Login</AppLink>\n </p>\n </div>\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport AppLink from '../../../../components/AppLink.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { withReturnUrl } from '../../../../utils/useReturnUrl';\nimport { computed } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport { z } from 'zod';\nimport { resetPasswordSchemaWithMetadata } from './reset_password_schema';\n\nconst router = useRouter();\nconst route = useRoute();\nconst token = route.params.token as string;\n\nconst returnUrl = computed(() => route.query.returnUrl as string | undefined);\nconst loginLink = computed(() => withReturnUrl('/auth/login', returnUrl.value));\n\n// Create a type-safe form using our schema with metadata\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(\n resetPasswordSchemaWithMetadata,\n {\n storeName: 'reset-password-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n },\n);\n\nconst { mutate: resetPasswordMutate } = useMutation(\n (api, input: z.infer<typeof resetPasswordSchemaWithMetadata> & { token: string }) =>\n api.passwordReset.resetPassword(input),\n {\n skipAuthCheck: true, // Reset password should work without authentication\n },\n);\n\n// Handle form submission\nconst handleSubmit = async (data: z.infer<typeof resetPasswordSchemaWithMetadata>) => {\n const result = await resetPasswordMutate({\n ...data,\n token,\n });\n if (!result?.ok) throw new Error('Reset password failed');\n return result;\n};\n\n// Handle success\nconst handleSuccess = async (_data: { ok: boolean }) => {\n form.reset();\n await router.push(loginLink.value);\n toast.success('Password reset successful!');\n};\n\n// Handle error\nconst handleError = (error: unknown) => {\n toast.error(error instanceof Error ? error.message : 'Reset password failed');\n};\n</script>\n"],"mappings":";;;;;;;;;;AAQA,MAAa,kCAAkC,aAC7C,0BACA,uBACA;CACE,sBAAsB;EACpB,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACZ;CACD,8BAA8B;EAC5B,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACd,WAAW;EACZ;CACF,CACF;;;;;;;;;ECID,MAAM,SAAS,WAAW;EAC1B,MAAM,QAAQ,UAAU;EACxB,MAAM,QAAQ,MAAM,OAAO;EAE3B,MAAM,YAAY,eAAe,MAAM,MAAM,UAAgC;EAC7E,MAAM,YAAY,eAAe,cAAc,eAAe,UAAU,MAAM,CAAC;EAG/E,MAAM,EAAE,MAAM,OAAO,WAAW,sBAAsB,QACpD,iCACA;GACE,WAAW;GACX,uBAAuB;GACvB,aAAa;GACd,CACF;EAED,MAAM,EAAE,QAAQ,wBAAwB,aACrC,KAAK,UACJ,IAAI,cAAc,cAAc,MAAM,EACxC,EACE,eAAe,MAChB,CACF;EAGD,MAAM,eAAe,OAAO,SAA0D;GACpF,MAAM,SAAS,MAAM,oBAAoB;IACvC,GAAG;IACH;IACD,CAAC;AACF,OAAI,CAAC,QAAQ,GAAI,OAAM,IAAI,MAAM,wBAAwB;AACzD,UAAO;;EAIT,MAAM,gBAAgB,OAAO,UAA2B;AACtD,QAAK,OAAO;AACZ,SAAM,OAAO,KAAK,UAAU,MAAM;AAClC,SAAM,QAAQ,6BAA6B;;EAI7C,MAAM,eAAe,UAAmB;AACtC,SAAM,MAAM,iBAAiB,QAAQ,MAAM,UAAU,wBAAwB;;;uBA1E7E,mBAgBM,OAhBN,YAgBM,CAAA,OAAA,OAAA,OAAA,KAfJ,mBAAmE,MAAA,EAA/D,OAAM,uCAAqC,EAAC,kBAAc,GAAA,GAE9D,YAYY,MAAA,UAAA,EAAA;IAZA,gBAAe;IAAe,WAAS;IAAgB,SAAO;;2BACxC;KAAhC,YAAgC,MAAA,MAAA,CAAA,uBAAA;KAChC,YAAuC,MAAA,MAAA,CAAA,8BAAA;KAEvC,YAAwF,MAAA,kBAAA,EAAA;MAArE,YAAW;MAAiB,gBAAe;;KAE9D,mBAKM,OALN,YAKM,CAJJ,mBAGI,KAAA,MAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAHD,8BAED,GAAA,GAAA,YAAiE,iBAAA;MAAxD,OAAM;MAAoB,IAAI,UAAA;;6BAAgB,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,gBAAL,SAAK,GAAA,CAAA,EAAA,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import "./AppLink-FcNGKgvG.js";
|
|
6
|
+
import { t as ResetPassword_default } from "./ResetPassword-Cd-Yxp8E.js";
|
|
7
|
+
|
|
8
|
+
export { ResetPassword_default as default };
|
|
@@ -1,36 +1,64 @@
|
|
|
1
|
-
import "./useRpcAuth-
|
|
2
|
-
import "./
|
|
3
|
-
import
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import "./
|
|
7
|
-
import
|
|
8
|
-
import "./
|
|
9
|
-
import "./
|
|
10
|
-
import "./
|
|
11
|
-
import "./
|
|
12
|
-
import "./
|
|
13
|
-
import "./
|
|
14
|
-
import "./
|
|
15
|
-
import "./
|
|
16
|
-
import "./
|
|
17
|
-
import "./
|
|
18
|
-
import "./
|
|
19
|
-
import "./
|
|
20
|
-
import "./
|
|
21
|
-
import "./
|
|
22
|
-
import "./
|
|
23
|
-
import "./
|
|
24
|
-
import "./
|
|
25
|
-
import "./
|
|
26
|
-
import "./
|
|
27
|
-
import "./
|
|
28
|
-
import "./
|
|
29
|
-
import "./
|
|
30
|
-
import "./
|
|
31
|
-
import "./
|
|
32
|
-
import "./
|
|
33
|
-
import "./
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import { t as useQuery } from "./useQuery-BzUGEOj0.js";
|
|
6
|
+
import "./src-DVe_0RO9.js";
|
|
7
|
+
import "./AppLink-FcNGKgvG.js";
|
|
8
|
+
import { p as useInjectedPinnedPresets } from "./saved_filter-CfzH0BzK.js";
|
|
9
|
+
import { t as ConfirmDialog_default } from "./ConfirmDialog-DjthOYU6.js";
|
|
10
|
+
import "./InlineAttachments-DAn_QknY.js";
|
|
11
|
+
import "./TeamMembersTab-BigqpBDH.js";
|
|
12
|
+
import "./Appearance-shr0Aql0.js";
|
|
13
|
+
import "./useBreadcrumbs-DIqU5AAp.js";
|
|
14
|
+
import "./FieldsetSection-Cd4B8Ad7.js";
|
|
15
|
+
import "./RecordVersionViewer-D2j10HdK.js";
|
|
16
|
+
import "./ZiniaContainer-CjVhCnGB.js";
|
|
17
|
+
import "./userAuthorized-C09FHWGL.js";
|
|
18
|
+
import "./UserProfilePage-g4-VEDXo.js";
|
|
19
|
+
import "./ChangePasswordPage-C633yQiU.js";
|
|
20
|
+
import "./teamMetadata-DlvwO5V0.js";
|
|
21
|
+
import "./team_memberRoutes-Cjpw_ql6.js";
|
|
22
|
+
import "./teamRoutes-KFgnsdDP.js";
|
|
23
|
+
import "./CreateTeamForm-CeaC41VY.js";
|
|
24
|
+
import "./EditTeamForm-BxRN338L.js";
|
|
25
|
+
import "./TeamHistoryTab-DM8KBEG1.js";
|
|
26
|
+
import "./TeamList-qdwlMuJv.js";
|
|
27
|
+
import "./TeamNotesTab-BgxleidZ.js";
|
|
28
|
+
import "./TeamParent-BwXqA3rj.js";
|
|
29
|
+
import "./ViewTeam-DSbKV60o.js";
|
|
30
|
+
import "./teamMemberMetadata-CQnbVepq.js";
|
|
31
|
+
import "./CreateTeamMemberForm-Bv9gNG4z.js";
|
|
32
|
+
import "./EditTeamMemberForm-DfgJr5Cy.js";
|
|
33
|
+
import "./TeamMemberList-DyI1U1t_.js";
|
|
34
|
+
import "./TeamMemberParent-D9Fxu7GD.js";
|
|
35
|
+
import "./ViewTeamMember-BB0nvPOe.js";
|
|
36
|
+
import "./customerSupportTicketRoutes-C7OxGAGl.js";
|
|
37
|
+
import "./staffSupportTicketRoutes-CWutoQWp.js";
|
|
38
|
+
import "./TimelineSystemEvent-zCMUx5Zz.js";
|
|
39
|
+
import "./CustomerCreateSupportTicketForm-kf8YIGjx.js";
|
|
40
|
+
import "./CustomerSupportTicketParent-BpBuYCrP.js";
|
|
41
|
+
import "./CustomerSupportTicketSuccess-cumNSGdx.js";
|
|
42
|
+
import "./StaffCreateSupportTicketForm-D2nn4rTU.js";
|
|
43
|
+
import "./SupportTicketDevLifecycleBadge-BoAjMb08.js";
|
|
44
|
+
import "./StaffSupportTicketParent-BvPwgOqH.js";
|
|
45
|
+
import "./StaffSupportTicketSuccess-Ca2WrcRg.js";
|
|
46
|
+
import "./LoginForm-CMN2T1fA.js";
|
|
47
|
+
import "./useEmailVerificationChannel-B51z65PN.js";
|
|
48
|
+
import "./Signup-2pqvJiVt.js";
|
|
49
|
+
import "./ForgotPassword-Ckb9Z-wb.js";
|
|
50
|
+
import "./ResetPassword-Cd-Yxp8E.js";
|
|
51
|
+
import "./Logout-CFLYHlLr.js";
|
|
52
|
+
import "./mfaSchema-Ukqzdyck.js";
|
|
53
|
+
import "./MfaSetup-XqoAwBXx.js";
|
|
54
|
+
import "./MfaVerify-C-A75TFZ.js";
|
|
55
|
+
import "./VerifyEmail-CM5ehFB8.js";
|
|
56
|
+
import "./UserListPage-DtA8tLff.js";
|
|
57
|
+
import "./CreateUserPage-CqKcY7_X.js";
|
|
58
|
+
import "./EditUserPage-CI_jtU8P.js";
|
|
59
|
+
import "./CreditTransactionHistory-DSu-6aDi.js";
|
|
60
|
+
import "./CreditBalanceDashboard-k_orNn4h.js";
|
|
61
|
+
import "./CreditManagement-BVBZQDI4.js";
|
|
34
62
|
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, openBlock, ref, renderList, resolveComponent, toDisplayString, unref, vModelText, withCtx, withDirectives, withKeys } from "vue";
|
|
35
63
|
|
|
36
64
|
//#region src/slices/saved_filter/SavedFiltersPage.vue
|
|
@@ -424,4 +452,4 @@ var SavedFiltersPage_default = _sfc_main;
|
|
|
424
452
|
|
|
425
453
|
//#endregion
|
|
426
454
|
export { SavedFiltersPage_default as default };
|
|
427
|
-
//# sourceMappingURL=SavedFiltersPage-
|
|
455
|
+
//# sourceMappingURL=SavedFiltersPage-DM5DvAFa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SavedFiltersPage-DQt6uc8m.js","names":["CONTEXT_LABELS: Record<string, string>"],"sources":["../src/slices/saved_filter/SavedFiltersPage.vue"],"sourcesContent":["<template>\n <div class=\"max-w-4xl mx-auto\">\n <h1 class=\"text-2xl font-bold mb-6\">Saved Filters</h1>\n\n <div v-if=\"loading\" class=\"flex justify-center py-12\">\n <span class=\"loading loading-spinner loading-lg\" />\n </div>\n\n <template v-else>\n <!-- Favorites (pinned) section with reorder -->\n <section v-if=\"pinnedPresets.length > 0\" class=\"mb-8\">\n <h2 class=\"text-lg font-semibold mb-3 flex items-center gap-2\">\n <svg\n class=\"w-5 h-5 text-primary\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n </svg>\n Favorites\n </h2>\n <p class=\"text-sm text-base-content/70 mb-3\">\n Pinned presets appear on your home page and in the sidebar. Use the arrows to reorder.\n </p>\n <ul class=\"space-y-2\">\n <li\n v-for=\"(preset, idx) in pinnedPresets\"\n :key=\"preset.id\"\n class=\"flex items-center gap-2 p-3 rounded-lg bg-base-200\"\n >\n <div class=\"flex flex-col gap-0.5 shrink-0\">\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs btn-square\"\n :disabled=\"reordering || idx === 0\"\n title=\"Move up\"\n @click=\"movePinned(idx, -1)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 15l7-7 7 7\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs btn-square\"\n :disabled=\"reordering || idx === pinnedPresets.length - 1\"\n title=\"Move down\"\n @click=\"movePinned(idx, 1)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n </div>\n <router-link\n :to=\"getPresetLink(preset)\"\n class=\"flex-1 min-w-0 font-medium truncate hover:underline\"\n >\n {{ preset.name }}\n </router-link>\n <span class=\"text-xs text-base-content/60 shrink-0\">\n {{ contextLabel(preset.context) }}\n </span>\n <div class=\"flex gap-1 shrink-0\">\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n title=\"Rename\"\n :disabled=\"renaming\"\n @click=\"startRename(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm text-primary\"\n title=\"Unpin\"\n :disabled=\"unpinning\"\n @click=\"handleUnpin(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm text-error\"\n title=\"Delete\"\n :disabled=\"deleting\"\n @click=\"handleDelete(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" 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\" />\n </svg>\n </button>\n </div>\n </li>\n </ul>\n </section>\n\n <!-- All presets grouped by path -->\n <section>\n <h2 class=\"text-lg font-semibold mb-3\">All Presets</h2>\n <p v-if=\"groupedPresets.length === 0\" class=\"text-base-content/70 text-sm\">\n No saved presets yet. Use the Presets button on any list page to save your filters.\n </p>\n <div v-else class=\"space-y-6\">\n <div\n v-for=\"[routePath, presets] in groupedPresets\"\n :key=\"routePath\"\n class=\"space-y-2\"\n >\n <h3 class=\"text-sm font-medium text-base-content/80 uppercase tracking-wide\">\n {{ contextLabelFromPath(routePath) }}\n </h3>\n <ul class=\"space-y-2\">\n <li\n v-for=\"preset in presets\"\n :key=\"preset.id\"\n class=\"flex items-center gap-2 p-3 rounded-lg bg-base-200\"\n >\n <template v-if=\"editingId === preset.id\">\n <input\n ref=\"renameInputRef\"\n v-model=\"editingName\"\n type=\"text\"\n class=\"input input-sm input-bordered flex-1 min-w-0\"\n maxlength=\"100\"\n placeholder=\"Preset name\"\n @keydown.enter=\"saveRename(preset.id)\"\n @keydown.escape=\"cancelRename\"\n />\n <button\n type=\"button\"\n class=\"btn btn-sm btn-primary shrink-0\"\n :disabled=\"renaming || !editingName.trim()\"\n @click=\"saveRename(preset.id)\"\n >\n {{ renaming ? '...' : 'Save' }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-sm btn-ghost shrink-0\"\n :disabled=\"renaming\"\n @click=\"cancelRename\"\n >\n Cancel\n </button>\n </template>\n <template v-else>\n <router-link\n :to=\"getPresetLink(preset)\"\n class=\"flex-1 min-w-0 font-medium truncate hover:underline\"\n >\n {{ preset.name }}\n </router-link>\n <div class=\"flex gap-1 shrink-0\">\n <button\n v-if=\"!isPinned(preset.id)\"\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n :title=\"canPinMore ? 'Pin to favorites' : 'Maximum 5 pinned'\"\n :disabled=\"!canPinMore || pinning\"\n @click=\"handlePin(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n title=\"Rename\"\n :disabled=\"renaming\"\n @click=\"startRename(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm text-error\"\n title=\"Delete\"\n :disabled=\"deleting\"\n @click=\"handleDelete(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" 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\" />\n </svg>\n </button>\n </div>\n </template>\n </li>\n </ul>\n </div>\n </div>\n </section>\n </template>\n\n <!-- Delete confirmation modal -->\n <ConfirmDialog\n v-model=\"showDeleteConfirm\"\n title=\"Delete preset?\"\n confirm-text=\"Delete\"\n cancel-text=\"Cancel\"\n processing-text=\"Deleting...\"\n confirm-button-class=\"btn-error\"\n :is-processing=\"deleting\"\n @confirm=\"confirmDelete\"\n @cancel=\"presetToDelete = null\"\n >\n <template #message>\n <p>\n Are you sure you want to delete \"{{ presetToDelete?.name }}\"?\n This cannot be undone.\n </p>\n </template>\n </ConfirmDialog>\n\n <!-- Rename modal / inline could stay as is -->\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { SavedFilterReadDto } from '@dragonmastery/dragoncore-shared';\nimport { useMutation, useQuery } from '@dragonmastery/dragoncore-vue';\nimport { computed, nextTick, ref } from 'vue';\nimport ConfirmDialog from '../../components/ConfirmDialog.vue';\nimport { useInjectedPinnedPresets } from './usePinnedPresets';\n\nconst CACHE_KEY_ALL = 'saved-filters:all';\n\nconst { data: allPresets, loading, refetch: refetchAllPresets } = useQuery(\n (api) => api.savedFilters.listAllSavedFilters(),\n { cacheKey: CACHE_KEY_ALL, staleTime: 24 * 60 * 60 * 1000 },\n);\n\nconst injectedPinned = useInjectedPinnedPresets();\nconst pinnedPresets = computed(() => injectedPinned.pinned.value ?? []);\n\nconst groupedPresets = computed(() => {\n const groups = new Map<string, SavedFilterReadDto[]>();\n for (const preset of allPresets.value ?? []) {\n const key = preset.route_path || preset.context || 'other';\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key)!.push(preset);\n }\n return Array.from(groups.entries()).sort(([a], [b]) => a.localeCompare(b));\n});\n\nconst pinnedIdsSet = computed(() => new Set(pinnedPresets.value.map((p) => p.id)));\nconst canPinMore = computed(() => pinnedPresets.value.length < 5);\n\nfunction isPinned(id: string) {\n return pinnedIdsSet.value.has(id);\n}\n\nfunction getPresetLink(preset: SavedFilterReadDto) {\n return {\n path: preset.route_path,\n query: preset.filters ?? {},\n };\n}\n\nconst CONTEXT_LABELS: Record<string, string> = {\n tracker: 'Trackers',\n followup: 'Followups',\n support_ticket_staff: 'Staff Support Tickets',\n support_ticket_customer: 'Customer Support Tickets',\n};\n\nfunction contextLabel(context: string): string {\n return CONTEXT_LABELS[context] ?? context;\n}\n\nfunction contextLabelFromPath(routePath: string): string {\n if (routePath.startsWith('/trackers')) return 'Trackers';\n if (routePath.startsWith('/followups')) return 'Followups';\n if (routePath.startsWith('/support-tickets/staff')) return 'Staff Support Tickets';\n if (routePath.startsWith('/support-tickets')) return 'Customer Support Tickets';\n return routePath || 'Other';\n}\n\nconst { mutate: reorderPins, loading: reordering } = useMutation(\n (api, ids: string[]) => api.savedFilters.reorderPinnedPresets(ids),\n { invalidate: 'pinned-presets' },\n);\n\nconst { mutate: updatePreset, loading: renaming } = useMutation(\n (api, input: { id: string; name: string }) =>\n api.savedFilters.updateSavedFilter({ id: input.id, name: input.name }),\n { invalidate: /^saved-filters:/ },\n);\n\nconst { mutate: deletePreset, loading: deleting } = useMutation(\n (api, id: string) => api.savedFilters.deleteSavedFilter(id),\n { invalidate: /^saved-filters:|^pinned-presets/ },\n);\n\nconst pinning = ref(false);\nconst unpinning = ref(false);\n\nasync function handlePin(preset: SavedFilterReadDto) {\n pinning.value = true;\n try {\n await injectedPinned.pinPreset(preset);\n } finally {\n pinning.value = false;\n }\n}\n\nasync function handleUnpin(preset: SavedFilterReadDto) {\n unpinning.value = true;\n try {\n await injectedPinned.unpinPreset(preset.id);\n } finally {\n unpinning.value = false;\n }\n}\n\nasync function movePinned(idx: number, delta: number) {\n const list = [...pinnedPresets.value];\n const newIdx = idx + delta;\n if (newIdx < 0 || newIdx >= list.length) return;\n [list[idx], list[newIdx]] = [list[newIdx]!, list[idx]!];\n try {\n await reorderPins(list.map((p) => p.id));\n await injectedPinned.refetchPinned();\n } catch {\n // Error handled by mutation\n }\n}\n\nconst showDeleteConfirm = ref(false);\nconst presetToDelete = ref<SavedFilterReadDto | null>(null);\n\nfunction handleDelete(preset: SavedFilterReadDto) {\n presetToDelete.value = preset;\n showDeleteConfirm.value = true;\n}\n\nasync function confirmDelete() {\n if (!presetToDelete.value) return;\n try {\n await deletePreset(presetToDelete.value.id);\n if (isPinned(presetToDelete.value.id)) {\n await injectedPinned.unpinPreset(presetToDelete.value.id);\n }\n await refetchAllPresets();\n presetToDelete.value = null;\n showDeleteConfirm.value = false;\n } catch {\n // Error handled by mutation\n }\n}\n\nconst editingId = ref<string | null>(null);\nconst editingName = ref('');\nconst renameInputRef = ref<HTMLInputElement | null>(null);\n\nfunction startRename(preset: SavedFilterReadDto) {\n editingId.value = preset.id;\n editingName.value = preset.name;\n nextTick(() => renameInputRef.value?.focus());\n}\n\nfunction cancelRename() {\n editingId.value = null;\n editingName.value = '';\n}\n\nasync function saveRename(presetId: string) {\n const name = editingName.value.trim();\n if (!name) return;\n try {\n await updatePreset({ id: presetId, name });\n cancelRename();\n await refetchAllPresets();\n if (isPinned(presetId)) {\n await injectedPinned.refetchPinned();\n }\n } catch {\n // Error handled by mutation\n }\n}\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SavedFiltersPage-DM5DvAFa.js","names":["CONTEXT_LABELS: Record<string, string>"],"sources":["../src/slices/saved_filter/SavedFiltersPage.vue"],"sourcesContent":["<template>\n <div class=\"max-w-4xl mx-auto\">\n <h1 class=\"text-2xl font-bold mb-6\">Saved Filters</h1>\n\n <div v-if=\"loading\" class=\"flex justify-center py-12\">\n <span class=\"loading loading-spinner loading-lg\" />\n </div>\n\n <template v-else>\n <!-- Favorites (pinned) section with reorder -->\n <section v-if=\"pinnedPresets.length > 0\" class=\"mb-8\">\n <h2 class=\"text-lg font-semibold mb-3 flex items-center gap-2\">\n <svg\n class=\"w-5 h-5 text-primary\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n </svg>\n Favorites\n </h2>\n <p class=\"text-sm text-base-content/70 mb-3\">\n Pinned presets appear on your home page and in the sidebar. Use the arrows to reorder.\n </p>\n <ul class=\"space-y-2\">\n <li\n v-for=\"(preset, idx) in pinnedPresets\"\n :key=\"preset.id\"\n class=\"flex items-center gap-2 p-3 rounded-lg bg-base-200\"\n >\n <div class=\"flex flex-col gap-0.5 shrink-0\">\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs btn-square\"\n :disabled=\"reordering || idx === 0\"\n title=\"Move up\"\n @click=\"movePinned(idx, -1)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 15l7-7 7 7\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-xs btn-square\"\n :disabled=\"reordering || idx === pinnedPresets.length - 1\"\n title=\"Move down\"\n @click=\"movePinned(idx, 1)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n </div>\n <router-link\n :to=\"getPresetLink(preset)\"\n class=\"flex-1 min-w-0 font-medium truncate hover:underline\"\n >\n {{ preset.name }}\n </router-link>\n <span class=\"text-xs text-base-content/60 shrink-0\">\n {{ contextLabel(preset.context) }}\n </span>\n <div class=\"flex gap-1 shrink-0\">\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n title=\"Rename\"\n :disabled=\"renaming\"\n @click=\"startRename(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm text-primary\"\n title=\"Unpin\"\n :disabled=\"unpinning\"\n @click=\"handleUnpin(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm text-error\"\n title=\"Delete\"\n :disabled=\"deleting\"\n @click=\"handleDelete(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" 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\" />\n </svg>\n </button>\n </div>\n </li>\n </ul>\n </section>\n\n <!-- All presets grouped by path -->\n <section>\n <h2 class=\"text-lg font-semibold mb-3\">All Presets</h2>\n <p v-if=\"groupedPresets.length === 0\" class=\"text-base-content/70 text-sm\">\n No saved presets yet. Use the Presets button on any list page to save your filters.\n </p>\n <div v-else class=\"space-y-6\">\n <div\n v-for=\"[routePath, presets] in groupedPresets\"\n :key=\"routePath\"\n class=\"space-y-2\"\n >\n <h3 class=\"text-sm font-medium text-base-content/80 uppercase tracking-wide\">\n {{ contextLabelFromPath(routePath) }}\n </h3>\n <ul class=\"space-y-2\">\n <li\n v-for=\"preset in presets\"\n :key=\"preset.id\"\n class=\"flex items-center gap-2 p-3 rounded-lg bg-base-200\"\n >\n <template v-if=\"editingId === preset.id\">\n <input\n ref=\"renameInputRef\"\n v-model=\"editingName\"\n type=\"text\"\n class=\"input input-sm input-bordered flex-1 min-w-0\"\n maxlength=\"100\"\n placeholder=\"Preset name\"\n @keydown.enter=\"saveRename(preset.id)\"\n @keydown.escape=\"cancelRename\"\n />\n <button\n type=\"button\"\n class=\"btn btn-sm btn-primary shrink-0\"\n :disabled=\"renaming || !editingName.trim()\"\n @click=\"saveRename(preset.id)\"\n >\n {{ renaming ? '...' : 'Save' }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-sm btn-ghost shrink-0\"\n :disabled=\"renaming\"\n @click=\"cancelRename\"\n >\n Cancel\n </button>\n </template>\n <template v-else>\n <router-link\n :to=\"getPresetLink(preset)\"\n class=\"flex-1 min-w-0 font-medium truncate hover:underline\"\n >\n {{ preset.name }}\n </router-link>\n <div class=\"flex gap-1 shrink-0\">\n <button\n v-if=\"!isPinned(preset.id)\"\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n :title=\"canPinMore ? 'Pin to favorites' : 'Maximum 5 pinned'\"\n :disabled=\"!canPinMore || pinning\"\n @click=\"handlePin(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11.049 2.927c.3-.921 1.603-.921 1.902 0l1.519 4.674a1 1 0 00.95.69h4.915c.969 0 1.371 1.24.588 1.81l-3.976 2.888a1 1 0 00-.363 1.118l1.518 4.674c.3.922-.755 1.688-1.538 1.118l-3.976-2.888a1 1 0 00-1.176 0l-3.976 2.888c-.783.57-1.838-.197-1.538-1.118l1.518-4.674a1 1 0 00-.363-1.118l-3.976-2.888c-.784-.57-.38-1.81.588-1.81h4.914a1 1 0 00.951-.69l1.519-4.674z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm\"\n title=\"Rename\"\n :disabled=\"renaming\"\n @click=\"startRename(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-ghost btn-sm text-error\"\n title=\"Delete\"\n :disabled=\"deleting\"\n @click=\"handleDelete(preset)\"\n >\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" 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\" />\n </svg>\n </button>\n </div>\n </template>\n </li>\n </ul>\n </div>\n </div>\n </section>\n </template>\n\n <!-- Delete confirmation modal -->\n <ConfirmDialog\n v-model=\"showDeleteConfirm\"\n title=\"Delete preset?\"\n confirm-text=\"Delete\"\n cancel-text=\"Cancel\"\n processing-text=\"Deleting...\"\n confirm-button-class=\"btn-error\"\n :is-processing=\"deleting\"\n @confirm=\"confirmDelete\"\n @cancel=\"presetToDelete = null\"\n >\n <template #message>\n <p>\n Are you sure you want to delete \"{{ presetToDelete?.name }}\"?\n This cannot be undone.\n </p>\n </template>\n </ConfirmDialog>\n\n <!-- Rename modal / inline could stay as is -->\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { SavedFilterReadDto } from '@dragonmastery/dragoncore-shared';\nimport { useMutation, useQuery } from '@dragonmastery/dragoncore-vue';\nimport { computed, nextTick, ref } from 'vue';\nimport ConfirmDialog from '../../components/ConfirmDialog.vue';\nimport { useInjectedPinnedPresets } from './usePinnedPresets';\n\nconst CACHE_KEY_ALL = 'saved-filters:all';\n\nconst { data: allPresets, loading, refetch: refetchAllPresets } = useQuery(\n (api) => api.savedFilters.listAllSavedFilters(),\n { cacheKey: CACHE_KEY_ALL, staleTime: 24 * 60 * 60 * 1000 },\n);\n\nconst injectedPinned = useInjectedPinnedPresets();\nconst pinnedPresets = computed(() => injectedPinned.pinned.value ?? []);\n\nconst groupedPresets = computed(() => {\n const groups = new Map<string, SavedFilterReadDto[]>();\n for (const preset of allPresets.value ?? []) {\n const key = preset.route_path || preset.context || 'other';\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key)!.push(preset);\n }\n return Array.from(groups.entries()).sort(([a], [b]) => a.localeCompare(b));\n});\n\nconst pinnedIdsSet = computed(() => new Set(pinnedPresets.value.map((p) => p.id)));\nconst canPinMore = computed(() => pinnedPresets.value.length < 5);\n\nfunction isPinned(id: string) {\n return pinnedIdsSet.value.has(id);\n}\n\nfunction getPresetLink(preset: SavedFilterReadDto) {\n return {\n path: preset.route_path,\n query: preset.filters ?? {},\n };\n}\n\nconst CONTEXT_LABELS: Record<string, string> = {\n tracker: 'Trackers',\n followup: 'Followups',\n support_ticket_staff: 'Staff Support Tickets',\n support_ticket_customer: 'Customer Support Tickets',\n};\n\nfunction contextLabel(context: string): string {\n return CONTEXT_LABELS[context] ?? context;\n}\n\nfunction contextLabelFromPath(routePath: string): string {\n if (routePath.startsWith('/trackers')) return 'Trackers';\n if (routePath.startsWith('/followups')) return 'Followups';\n if (routePath.startsWith('/support-tickets/staff')) return 'Staff Support Tickets';\n if (routePath.startsWith('/support-tickets')) return 'Customer Support Tickets';\n return routePath || 'Other';\n}\n\nconst { mutate: reorderPins, loading: reordering } = useMutation(\n (api, ids: string[]) => api.savedFilters.reorderPinnedPresets(ids),\n { invalidate: 'pinned-presets' },\n);\n\nconst { mutate: updatePreset, loading: renaming } = useMutation(\n (api, input: { id: string; name: string }) =>\n api.savedFilters.updateSavedFilter({ id: input.id, name: input.name }),\n { invalidate: /^saved-filters:/ },\n);\n\nconst { mutate: deletePreset, loading: deleting } = useMutation(\n (api, id: string) => api.savedFilters.deleteSavedFilter(id),\n { invalidate: /^saved-filters:|^pinned-presets/ },\n);\n\nconst pinning = ref(false);\nconst unpinning = ref(false);\n\nasync function handlePin(preset: SavedFilterReadDto) {\n pinning.value = true;\n try {\n await injectedPinned.pinPreset(preset);\n } finally {\n pinning.value = false;\n }\n}\n\nasync function handleUnpin(preset: SavedFilterReadDto) {\n unpinning.value = true;\n try {\n await injectedPinned.unpinPreset(preset.id);\n } finally {\n unpinning.value = false;\n }\n}\n\nasync function movePinned(idx: number, delta: number) {\n const list = [...pinnedPresets.value];\n const newIdx = idx + delta;\n if (newIdx < 0 || newIdx >= list.length) return;\n [list[idx], list[newIdx]] = [list[newIdx]!, list[idx]!];\n try {\n await reorderPins(list.map((p) => p.id));\n await injectedPinned.refetchPinned();\n } catch {\n // Error handled by mutation\n }\n}\n\nconst showDeleteConfirm = ref(false);\nconst presetToDelete = ref<SavedFilterReadDto | null>(null);\n\nfunction handleDelete(preset: SavedFilterReadDto) {\n presetToDelete.value = preset;\n showDeleteConfirm.value = true;\n}\n\nasync function confirmDelete() {\n if (!presetToDelete.value) return;\n try {\n await deletePreset(presetToDelete.value.id);\n if (isPinned(presetToDelete.value.id)) {\n await injectedPinned.unpinPreset(presetToDelete.value.id);\n }\n await refetchAllPresets();\n presetToDelete.value = null;\n showDeleteConfirm.value = false;\n } catch {\n // Error handled by mutation\n }\n}\n\nconst editingId = ref<string | null>(null);\nconst editingName = ref('');\nconst renameInputRef = ref<HTMLInputElement | null>(null);\n\nfunction startRename(preset: SavedFilterReadDto) {\n editingId.value = preset.id;\n editingName.value = preset.name;\n nextTick(() => renameInputRef.value?.focus());\n}\n\nfunction cancelRename() {\n editingId.value = null;\n editingName.value = '';\n}\n\nasync function saveRename(presetId: string) {\n const name = editingName.value.trim();\n if (!name) return;\n try {\n await updatePreset({ id: presetId, name });\n cancelRename();\n await refetchAllPresets();\n if (isPinned(presetId)) {\n await injectedPinned.refetchPinned();\n }\n } catch {\n // Error handled by mutation\n }\n}\n</script>\n"],"mappings":"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"}
|