@dragonmastery/dragoncore-vue 0.0.22 → 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AppLink-CHMMrSFI.js → AppLink-FcNGKgvG.js} +1 -1
- package/dist/{AppLink-CHMMrSFI.js.map → AppLink-FcNGKgvG.js.map} +1 -1
- package/dist/Appearance-Ch4zfWZ3.js +3 -0
- package/dist/{Appearance-DxWTyx1M.js → Appearance-shr0Aql0.js} +1 -1
- package/dist/{Appearance-DxWTyx1M.js.map → Appearance-shr0Aql0.js.map} +1 -1
- package/dist/{ChangePasswordPage-ePeFkv_6.js → ChangePasswordPage-C633yQiU.js} +2 -2
- package/dist/{ChangePasswordPage-ePeFkv_6.js.map → ChangePasswordPage-C633yQiU.js.map} +1 -1
- package/dist/ChangePasswordPage-CYuCCosx.js +7 -0
- package/dist/ConfirmDialog-DjthOYU6.js +85 -0
- package/dist/ConfirmDialog-DjthOYU6.js.map +1 -0
- package/dist/ConsentFlowStep-DbQpQQA-.js +149 -0
- package/dist/ConsentFlowStep-DbQpQQA-.js.map +1 -0
- package/dist/ConsentRequired-BiCKEVBG.js +113 -0
- package/dist/ConsentRequired-BiCKEVBG.js.map +1 -0
- package/dist/CreateTeamForm-BnC_JPEK.js +12 -0
- package/dist/CreateTeamForm-CvMUbK5X.js +142 -0
- package/dist/CreateTeamForm-CvMUbK5X.js.map +1 -0
- package/dist/CreateTeamMemberForm-DUVHzzF0.js +140 -0
- package/dist/CreateTeamMemberForm-DUVHzzF0.js.map +1 -0
- package/dist/CreateTeamMemberForm-QpDhqvfb.js +12 -0
- package/dist/CreateUserPage-C9uOeYDJ.js +7 -0
- package/dist/{CreateUserPage-Cdv-3U5M.js → CreateUserPage-CqKcY7_X.js} +2 -2
- package/dist/{CreateUserPage-Cdv-3U5M.js.map → CreateUserPage-CqKcY7_X.js.map} +1 -1
- package/dist/CreditBalanceDashboard-CS4fV6MP.js +13 -0
- package/dist/CreditBalanceDashboard-CSUKpYSo.js +28 -0
- package/dist/CreditBalanceDashboard-CSUKpYSo.js.map +1 -0
- package/dist/CreditManagement-BdRd_TLz.js +356 -0
- package/dist/CreditManagement-BdRd_TLz.js.map +1 -0
- package/dist/CreditManagement-Buuew7-f.js +13 -0
- package/dist/CreditTransactionHistory-cYyRFOdS.js +229 -0
- package/dist/CreditTransactionHistory-cYyRFOdS.js.map +1 -0
- package/dist/CustomerCreateSupportTicketForm-BDNs8cKo.js +158 -0
- package/dist/CustomerCreateSupportTicketForm-BDNs8cKo.js.map +1 -0
- package/dist/CustomerCreateSupportTicketForm-Dk6lwDGL.js +14 -0
- package/dist/{CustomerSupportTicketDetailPage-UGqVoV4j.js → CustomerSupportTicketDetailPage-DGfUzPl8.js} +12 -9
- package/dist/{CustomerSupportTicketDetailPage-UGqVoV4j.js.map → CustomerSupportTicketDetailPage-DGfUzPl8.js.map} +1 -1
- package/dist/CustomerSupportTicketList-DoWnrEwj.js +63 -0
- package/dist/{CustomerSupportTicketParent-C2XdM5f7.js → CustomerSupportTicketParent-BpBuYCrP.js} +4 -4
- package/dist/{CustomerSupportTicketParent-C2XdM5f7.js.map → CustomerSupportTicketParent-BpBuYCrP.js.map} +1 -1
- package/dist/CustomerSupportTicketParent-Djy7pNqO.js +8 -0
- package/dist/CustomerSupportTicketSuccess-BKQ07Y8H.js +12 -0
- package/dist/CustomerSupportTicketSuccess-DZ6_1jL9.js +54 -0
- package/dist/CustomerSupportTicketSuccess-DZ6_1jL9.js.map +1 -0
- package/dist/EditTeamForm-CPJBjZa2.js +163 -0
- package/dist/EditTeamForm-CPJBjZa2.js.map +1 -0
- package/dist/EditTeamForm-DS_zV1Mk.js +12 -0
- package/dist/EditTeamMemberForm-D7D1Zddh.js +9 -0
- package/dist/{EditTeamMemberForm-BgjNP8MZ.js → EditTeamMemberForm-DfgJr5Cy.js} +7 -72
- package/dist/EditTeamMemberForm-DfgJr5Cy.js.map +1 -0
- package/dist/EditUserPage-C0K7EGjM.js +8 -0
- package/dist/{EditUserPage-uLPhRW5x.js → EditUserPage-CI_jtU8P.js} +4 -4
- package/dist/{EditUserPage-uLPhRW5x.js.map → EditUserPage-CI_jtU8P.js.map} +1 -1
- package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js +189 -0
- package/dist/EnhancedRefreshTokenHandler-C6tZCcfX.js.map +1 -0
- package/dist/FieldsetSection-Cd4B8Ad7.js +27 -0
- package/dist/FieldsetSection-Cd4B8Ad7.js.map +1 -0
- package/dist/{ForgotPassword-B8JG_n9D.js → ForgotPassword-Ckb9Z-wb.js} +4 -4
- package/dist/{ForgotPassword-B8JG_n9D.js.map → ForgotPassword-Ckb9Z-wb.js.map} +1 -1
- package/dist/ForgotPassword-tJVSg7PB.js +8 -0
- package/dist/{TimelineSystemEvent-BGG9WkQw.js → InlineAttachments-DAn_QknY.js} +60 -661
- package/dist/InlineAttachments-DAn_QknY.js.map +1 -0
- package/dist/{LoginForm-C-_lBDyl.js → LoginForm-CMN2T1fA.js} +5 -5
- package/dist/{LoginForm-C-_lBDyl.js.map → LoginForm-CMN2T1fA.js.map} +1 -1
- package/dist/LoginForm-QFJ8NHww.js +8 -0
- package/dist/{Logout-CIAoXyOg.js → Logout-CFLYHlLr.js} +5 -5
- package/dist/{Logout-CIAoXyOg.js.map → Logout-CFLYHlLr.js.map} +1 -1
- package/dist/Logout-CjDBff3W.js +8 -0
- package/dist/{MfaSetup-9qdTKQ0m.js → MfaSetup-85i4HlNJ.js} +7 -7
- package/dist/{MfaSetup-9qdTKQ0m.js.map → MfaSetup-85i4HlNJ.js.map} +1 -1
- package/dist/MfaSetup-C5mBMKsa.js +9 -0
- package/dist/{MfaVerify-Cgta1nE9.js → MfaVerify-C-A75TFZ.js} +6 -6
- package/dist/{MfaVerify-Cgta1nE9.js.map → MfaVerify-C-A75TFZ.js.map} +1 -1
- package/dist/MfaVerify-Dy2aV5Gk.js +9 -0
- package/dist/{RecordVersionViewer-BWZ78vvE.js → RecordVersionViewer-D2j10HdK.js} +1 -1
- package/dist/{RecordVersionViewer-BWZ78vvE.js.map → RecordVersionViewer-D2j10HdK.js.map} +1 -1
- package/dist/{ResetPassword-DHUfERyS.js → ResetPassword-Cd-Yxp8E.js} +4 -4
- package/dist/{ResetPassword-DHUfERyS.js.map → ResetPassword-Cd-Yxp8E.js.map} +1 -1
- package/dist/ResetPassword-D6to3G6a.js +8 -0
- package/dist/{SavedFiltersPage-CjFv4fI_.js → SavedFiltersPage-DPJA7feS.js} +62 -34
- package/dist/{SavedFiltersPage-CjFv4fI_.js.map → SavedFiltersPage-DPJA7feS.js.map} +1 -1
- package/dist/{Signup-DfG7Xmkx.js → Signup-2pqvJiVt.js} +57 -57
- package/dist/Signup-2pqvJiVt.js.map +1 -0
- package/dist/Signup-XdImA1os.js +9 -0
- package/dist/SignupConsentFlow-dyQSp9iU.js +214 -0
- package/dist/SignupConsentFlow-dyQSp9iU.js.map +1 -0
- package/dist/{SignupRequirementsPage-Sm3vgkhC.js → SignupRequirementsPage-Cf-ElkEq.js} +9 -8
- package/dist/{SignupRequirementsPage-Sm3vgkhC.js.map → SignupRequirementsPage-Cf-ElkEq.js.map} +1 -1
- package/dist/StaffCreateSupportTicketForm-BgaZJWpj.js +255 -0
- package/dist/StaffCreateSupportTicketForm-BgaZJWpj.js.map +1 -0
- package/dist/StaffCreateSupportTicketForm-C_i7mz26.js +14 -0
- package/dist/{StaffSupportTicketDetailPage-ePkLJU12.js → StaffSupportTicketDetailPage-DoZClE4Y.js} +17 -14
- package/dist/StaffSupportTicketDetailPage-DoZClE4Y.js.map +1 -0
- package/dist/StaffSupportTicketList-DejFCAh7.js +63 -0
- package/dist/StaffSupportTicketParent-B7mEN1oD.js +8 -0
- package/dist/{StaffSupportTicketParent-Bz-SH6-k.js → StaffSupportTicketParent-BvPwgOqH.js} +4 -4
- package/dist/{StaffSupportTicketParent-Bz-SH6-k.js.map → StaffSupportTicketParent-BvPwgOqH.js.map} +1 -1
- package/dist/StaffSupportTicketSuccess-Bt9FWXmM.js +12 -0
- package/dist/StaffSupportTicketSuccess-CUu2MNXF.js +54 -0
- package/dist/StaffSupportTicketSuccess-CUu2MNXF.js.map +1 -0
- package/dist/{SupportStaffPage-0X1VMovT.js → SupportStaffPage-B69-kuvg.js} +8 -7
- package/dist/{SupportStaffPage-0X1VMovT.js.map → SupportStaffPage-B69-kuvg.js.map} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js → SupportTicketDevLifecycleBadge-BoAjMb08.js} +1 -1
- package/dist/{SupportTicketDevLifecycleBadge-EMrQHfyG.js.map → SupportTicketDevLifecycleBadge-BoAjMb08.js.map} +1 -1
- package/dist/{SupportTicketMaintenancePage-CLDqc4Pb.js → SupportTicketMaintenancePage-Bptja-xb.js} +5 -4
- package/dist/{SupportTicketMaintenancePage-CLDqc4Pb.js.map → SupportTicketMaintenancePage-Bptja-xb.js.map} +1 -1
- package/dist/TeamAttachmentsTab-D4iYMMF3.js +63 -0
- package/dist/TeamHistoryTab-CRONdHcL.js +6 -0
- package/dist/{TeamHistoryTab-D0zW5wjj.js → TeamHistoryTab-DM8KBEG1.js} +7 -19
- package/dist/TeamHistoryTab-DM8KBEG1.js.map +1 -0
- package/dist/TeamList-BZN0Ek6v.js +141 -0
- package/dist/TeamList-BZN0Ek6v.js.map +1 -0
- package/dist/TeamList-DXtr4j1y.js +8 -0
- package/dist/TeamMemberList-JfyklWlt.js +7 -0
- package/dist/TeamMemberList-TTAPf2GN.js +166 -0
- package/dist/TeamMemberList-TTAPf2GN.js.map +1 -0
- package/dist/TeamMemberParent-a2xQB08R.js +10 -0
- package/dist/TeamMemberParent-xv56jEhd.js +83 -0
- package/dist/TeamMemberParent-xv56jEhd.js.map +1 -0
- package/dist/TeamMembersTab-BGcdyEE8.js +3 -0
- package/dist/{TeamMembersTab-4gmnP9sD.js → TeamMembersTab-BigqpBDH.js} +1 -1
- package/dist/{TeamMembersTab-4gmnP9sD.js.map → TeamMembersTab-BigqpBDH.js.map} +1 -1
- package/dist/{TeamNotesTab-DImzeVPk.js → TeamNotesTab-BgxleidZ.js} +6 -5
- package/dist/{TeamNotesTab-DImzeVPk.js.map → TeamNotesTab-BgxleidZ.js.map} +1 -1
- package/dist/TeamNotesTab-o7glfjoY.js +8 -0
- package/dist/TeamParent-7_XO4IOH.js +83 -0
- package/dist/TeamParent-7_XO4IOH.js.map +1 -0
- package/dist/TeamParent-Cf6RWFHo.js +11 -0
- package/dist/{TimelineNoteInput-Cpnwnx7B.js → TimelineNoteInput-D6LOdKZW.js} +3 -2
- package/dist/{TimelineNoteInput-Cpnwnx7B.js.map → TimelineNoteInput-D6LOdKZW.js.map} +1 -1
- package/dist/TimelineSystemEvent-zCMUx5Zz.js +525 -0
- package/dist/TimelineSystemEvent-zCMUx5Zz.js.map +1 -0
- package/dist/UserListPage-Bmwg0an5.js +5 -0
- package/dist/{UserListPage-DpkOdR1U.js → UserListPage-DtA8tLff.js} +4 -3
- package/dist/{UserListPage-DpkOdR1U.js.map → UserListPage-DtA8tLff.js.map} +1 -1
- package/dist/UserProfilePage-DRbCAr9H.js +8 -0
- package/dist/{UserProfilePage-CWRgwGQH.js → UserProfilePage-g4-VEDXo.js} +4 -4
- package/dist/{UserProfilePage-CWRgwGQH.js.map → UserProfilePage-g4-VEDXo.js.map} +1 -1
- package/dist/{VerifyEmail-DXZ4T5eN.js → VerifyEmail-CM5ehFB8.js} +7 -7
- package/dist/{VerifyEmail-DXZ4T5eN.js.map → VerifyEmail-CM5ehFB8.js.map} +1 -1
- package/dist/VerifyEmail-DMHczC9f.js +10 -0
- package/dist/ViewTeam-CbV0w4J_.js +220 -0
- package/dist/ViewTeam-CbV0w4J_.js.map +1 -0
- package/dist/ViewTeam-LAQmZPzc.js +8 -0
- package/dist/ViewTeamMember-DtWqc_q5.js +7 -0
- package/dist/ViewTeamMember-y3txJoRR.js +167 -0
- package/dist/ViewTeamMember-y3txJoRR.js.map +1 -0
- package/dist/ZiniaContainer-CjVhCnGB.js +18 -0
- package/dist/ZiniaContainer-CjVhCnGB.js.map +1 -0
- package/dist/{convertToLocalDateTime-CFhtN6PI.js → convertToLocalDateTime-BF25N4xd.js} +1 -2
- package/dist/convertToLocalDateTime-BF25N4xd.js.map +1 -0
- package/dist/customerSupportTicketRoutes-DYG3Vlzz.js +142 -0
- package/dist/customerSupportTicketRoutes-DYG3Vlzz.js.map +1 -0
- package/dist/{displayIdFormatter-Dz900Awr.js → displayIdFormatter-B-_WQHOr.js} +1 -1
- package/dist/{displayIdFormatter-Dz900Awr.js.map → displayIdFormatter-B-_WQHOr.js.map} +1 -1
- package/dist/{extractRpcErrorMessage-Di8E8-Wh.js → extractRpcErrorMessage-diUBl6Ij.js} +1 -1
- package/dist/{extractRpcErrorMessage-Di8E8-Wh.js.map → extractRpcErrorMessage-diUBl6Ij.js.map} +1 -1
- package/dist/index.d.ts +859 -900
- package/dist/index.js +66 -38
- package/dist/{mfaSchema-BnRWf0ma.js → mfaSchema-Ukqzdyck.js} +1 -1
- package/dist/{mfaSchema-BnRWf0ma.js.map → mfaSchema-Ukqzdyck.js.map} +1 -1
- package/dist/saved_filter-fHzm4pk5.js +1210 -0
- package/dist/saved_filter-fHzm4pk5.js.map +1 -0
- package/dist/signupConsentStorage-DS9vCUuC.js +27 -0
- package/dist/signupConsentStorage-DS9vCUuC.js.map +1 -0
- package/dist/{src-CEBiyg_f.css → src-C6ZmNSSU.css} +1 -1
- package/dist/{src-CEBiyg_f.css.map → src-C6ZmNSSU.css.map} +1 -1
- package/dist/src-DgC3Izwe.js +4655 -0
- package/dist/src-DgC3Izwe.js.map +1 -0
- package/dist/staffSupportTicketRoutes-Crk6BFEE.js +135 -0
- package/dist/staffSupportTicketRoutes-Crk6BFEE.js.map +1 -0
- package/dist/teamMemberMetadata-CQnbVepq.js +49 -0
- package/dist/teamMemberMetadata-CQnbVepq.js.map +1 -0
- package/dist/teamMetadata-DlvwO5V0.js +53 -0
- package/dist/teamMetadata-DlvwO5V0.js.map +1 -0
- package/dist/teamRoutes-_-DGwLZW.js +192 -0
- package/dist/teamRoutes-_-DGwLZW.js.map +1 -0
- package/dist/team_memberRoutes-B7Zzuuz8.js +84 -0
- package/dist/team_memberRoutes-B7Zzuuz8.js.map +1 -0
- package/dist/{useBreadcrumbs-qB6ghsAf.js → useBreadcrumbs-DIqU5AAp.js} +1 -1
- package/dist/{useBreadcrumbs-qB6ghsAf.js.map → useBreadcrumbs-DIqU5AAp.js.map} +1 -1
- package/dist/{useEmailVerificationChannel-BiiuuTUM.js → useEmailVerificationChannel-B51z65PN.js} +3 -3
- package/dist/{useEmailVerificationChannel-BiiuuTUM.js.map → useEmailVerificationChannel-B51z65PN.js.map} +1 -1
- package/dist/{useMutation-BMZJLpgx.js → useMutation-BLNuJoYl.js} +6 -3
- package/dist/useMutation-BLNuJoYl.js.map +1 -0
- package/dist/{useQuery-qpXzBuVg.js → useQuery-BzUGEOj0.js} +4 -3
- package/dist/{useQuery-qpXzBuVg.js.map → useQuery-BzUGEOj0.js.map} +1 -1
- package/dist/{useQueryCache-DkRwK5Gz.js → useQueryCache-alzaRWEb.js} +2 -2
- package/dist/{useQueryCache-DkRwK5Gz.js.map → useQueryCache-alzaRWEb.js.map} +1 -1
- package/dist/{useReturnUrl-qFeazn-G.js → useReturnUrl-B5V3SJf5.js} +1 -1
- package/dist/{useReturnUrl-qFeazn-G.js.map → useReturnUrl-B5V3SJf5.js.map} +1 -1
- package/dist/{useRpcAuth-x5Gn5gR0.js → useRpcAuth-CJtq1dqM.js} +9 -192
- package/dist/useRpcAuth-CJtq1dqM.js.map +1 -0
- package/dist/userAuthorized-C09FHWGL.js +185 -0
- package/dist/userAuthorized-C09FHWGL.js.map +1 -0
- package/package.json +3 -3
- package/dist/Appearance-D5pwxuf4.js +0 -3
- package/dist/ChangePasswordPage-DVBkBcm9.js +0 -6
- package/dist/ConsentRequired-e7DEOGNg.js +0 -213
- package/dist/ConsentRequired-e7DEOGNg.js.map +0 -1
- package/dist/CreateTeamForm-CV9Y00tD.js +0 -35
- package/dist/CreateTeamMemberForm-BX1vUcdg.js +0 -35
- package/dist/CreateUserPage-DQoEX-Er.js +0 -6
- package/dist/CreditBalanceDashboard-BZAnEjSz.js +0 -35
- package/dist/CreditManagement-C4-_c175.js +0 -35
- package/dist/CustomerCreateSupportTicketForm-3tIJKMnJ.js +0 -35
- package/dist/CustomerSupportTicketList-CFQEoXtm.js +0 -35
- package/dist/CustomerSupportTicketParent-Tnov1dEg.js +0 -7
- package/dist/CustomerSupportTicketSuccess-DLszUCsg.js +0 -35
- package/dist/EditTeamForm-Ww04P2M0.js +0 -35
- package/dist/EditTeamMemberForm-BgjNP8MZ.js.map +0 -1
- package/dist/EditTeamMemberForm-COfY-2FQ.js +0 -6
- package/dist/EditUserPage-BJHs3raG.js +0 -7
- package/dist/ForgotPassword-CzMPARbz.js +0 -7
- package/dist/LoginForm-DdzRn8nU.js +0 -7
- package/dist/Logout-3_Ns09Vy.js +0 -7
- package/dist/MfaSetup-BE_NP70B.js +0 -8
- package/dist/MfaVerify-CyiJ9A3L.js +0 -8
- package/dist/ResetPassword-DXHunZVp.js +0 -7
- package/dist/Signup-Cy1puoqh.js +0 -9
- package/dist/Signup-DfG7Xmkx.js.map +0 -1
- package/dist/SignupConsentFlow-YGWhF7tj.js +0 -269
- package/dist/SignupConsentFlow-YGWhF7tj.js.map +0 -1
- package/dist/StaffCreateSupportTicketForm-C5tRPz95.js +0 -35
- package/dist/StaffSupportTicketDetailPage-ePkLJU12.js.map +0 -1
- package/dist/StaffSupportTicketList-BbiPTm54.js +0 -35
- package/dist/StaffSupportTicketParent-D2onnMqe.js +0 -7
- package/dist/StaffSupportTicketSuccess-DLVRTvr1.js +0 -35
- package/dist/TeamAttachmentsTab-B-xXmvOy.js +0 -35
- package/dist/TeamHistoryTab-Bb7mq4Dc.js +0 -4
- package/dist/TeamHistoryTab-D0zW5wjj.js.map +0 -1
- package/dist/TeamList-B-cFoclM.js +0 -35
- package/dist/TeamMemberList-D3GNHlXH.js +0 -35
- package/dist/TeamMemberParent-BKfPMX05.js +0 -35
- package/dist/TeamMembersTab-CBB2Yl_I.js +0 -3
- package/dist/TeamNotesTab-BbODx7wS.js +0 -7
- package/dist/TeamParent-5lokhztw.js +0 -35
- package/dist/TimelineSystemEvent-BGG9WkQw.js.map +0 -1
- package/dist/UserListPage-4hZll_PC.js +0 -4
- package/dist/UserProfilePage-qFrg3PiC.js +0 -7
- package/dist/VerifyEmail-C5EO8OFo.js +0 -9
- package/dist/ViewTeam-Die0SWa_.js +0 -35
- package/dist/ViewTeamMember-_sqrqGit.js +0 -35
- package/dist/convertToLocalDateTime-CFhtN6PI.js.map +0 -1
- package/dist/src-_IeDZXH6.js +0 -8951
- package/dist/src-_IeDZXH6.js.map +0 -1
- package/dist/useMutation-BMZJLpgx.js.map +0 -1
- package/dist/useRpcAuth-x5Gn5gR0.js.map +0 -1
- package/dist/useSignupPendingData-BWHwUHhL.js +0 -47
- package/dist/useSignupPendingData-BWHwUHhL.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppLink-
|
|
1
|
+
{"version":3,"file":"AppLink-FcNGKgvG.js","names":["$attrs"],"sources":["../src/components/AppLink.vue"],"sourcesContent":["<template>\n <template v-if=\"isExternalLink\">\n <a\n v-bind=\"$attrs\"\n :href=\"to\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n :class=\"[$attrs.class]\"\n >\n <slot />\n </a>\n </template>\n <template v-else>\n <router-link\n v-bind=\"$attrs\"\n :to=\"to\"\n :class=\"[$attrs.class]\"\n :active-class=\"activeClass\"\n :exact-active-class=\"exactActiveClass\"\n >\n <slot />\n </router-link>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { RouterLink } from 'vue-router';\n\nconst props = defineProps({\n to: {\n type: String,\n required: true,\n },\n activeClass: {\n type: String,\n default: 'active',\n },\n exactActiveClass: {\n type: String,\n default: 'exact-active',\n },\n});\n\nconst isExternalLink = computed(() => {\n return typeof props.to === 'string' && props.to.startsWith('http');\n});\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EA6BA,MAAM,QAAQ;EAed,MAAM,iBAAiB,eAAe;AACpC,UAAO,OAAO,MAAM,OAAO,YAAY,MAAM,GAAG,WAAW,OAAO;IAClE;;UA7CgB,eAAA,SAAA,WAAA,EACd,mBAQI,KARJ,WAQI,EAAA,KAAA,GAAA,EAPMA,KAAAA,QAAM;IACb,MAAM,QAAA;IACP,QAAO;IACP,KAAI;IACH,OAAK,CAAGA,KAAAA,OAAO,MAAK;QAErB,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA,KAAA,WAAA,EAIV,YAQc,MAAA,WAAA,EARd,WAQc,EAAA,KAAA,GAAA,EAPJA,KAAAA,QAAM;IACb,IAAI,QAAA;IACJ,OAAK,CAAGA,KAAAA,OAAO,MAAK;IACpB,gBAAc,QAAA;IACd,sBAAoB,QAAA;;2BAEb,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Appearance-
|
|
1
|
+
{"version":3,"file":"Appearance-shr0Aql0.js","names":[],"sources":["../src/components/ThemePref.vue","../src/slices/user/features/Appearance.vue"],"sourcesContent":["<template>\n <div class=\"btn btn-ghost btn-circle\" @click=\"next()\">\n <template v-if=\"colorMode == 'dark'\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"h-6 w-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z\"\n />\n </svg>\n </template>\n <template v-else>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n class=\"h-6 w-6\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z\"\n />\n </svg>\n </template>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { useColorMode, useCycleList } from '@vueuse/core';\nimport { watchEffect } from 'vue';\n\nconst colorMode = useColorMode({\n emitAuto: true,\n attribute: 'data-theme',\n initialValue: 'dark',\n modes: {\n dark: 'dark',\n light: 'light',\n },\n});\n\nconst { state, next } = useCycleList(['dark', 'light'], {\n initialValue: colorMode,\n});\n\nwatchEffect(() => (colorMode.value = state.value as any));\n</script>\n","<template>\n <div class=\"max-w-md mx-auto bg-base-200 p-6 rounded-xl shadow-md container\">\n <div>\n <span>Theme Preference: <ThemePref /></span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport ThemePref from '../../../components/ThemePref.vue';\n</script>\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,YAAY,aAAa;GAC7B,UAAU;GACV,WAAW;GACX,cAAc;GACd,OAAO;IACL,MAAM;IACN,OAAO;IACR;GACF,CAAC;EAEF,MAAM,EAAE,OAAO,SAAS,aAAa,CAAC,QAAQ,QAAQ,EAAE,EACtD,cAAc,WACf,CAAC;AAEF,oBAAmB,UAAU,QAAQ,MAAM,MAAc;;uBArDvD,mBAiCM,OAAA;IAjCD,OAAM;IAA4B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,KAAI,EAAA;OAChC,MAAA,UAAS,IAAA,UAAA,WAAA,EACvB,mBAaM,OAbN,cAaM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CALJ,mBAIE,QAAA;IAHA,kBAAe;IACf,mBAAgB;IAChB,GAAE;qCAKN,mBAaM,OAbN,YAaM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CALJ,mBAIE,QAAA;IAHA,kBAAe;IACf,mBAAgB;IAChB,GAAE;;;;;;;;;;;;;;uBC7BV,mBAIM,OAJN,YAIM,CAHJ,mBAEM,OAAA,MAAA,CADJ,mBAA4C,QAAA,MAAA,CAAA,OAAA,OAAA,OAAA,KAAA,gBAAtC,sBAAkB,GAAA,GAAA,YAAa,kBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as useMutation } from "./useMutation-
|
|
1
|
+
import { t as useMutation } from "./useMutation-BLNuJoYl.js";
|
|
2
2
|
import { createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, openBlock, unref, withCtx } from "vue";
|
|
3
3
|
import { toast } from "vue3-toastify";
|
|
4
4
|
import { changePasswordSchema } from "@dragonmastery/dragoncore-shared";
|
|
@@ -83,4 +83,4 @@ var ChangePasswordPage_default = _sfc_main;
|
|
|
83
83
|
|
|
84
84
|
//#endregion
|
|
85
85
|
export { changePasswordSchemaWithMetadata as n, ChangePasswordPage_default as t };
|
|
86
|
-
//# sourceMappingURL=ChangePasswordPage-
|
|
86
|
+
//# sourceMappingURL=ChangePasswordPage-C633yQiU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePasswordPage-
|
|
1
|
+
{"version":3,"file":"ChangePasswordPage-C633yQiU.js","names":[],"sources":["../src/slices/user/features/change_password/changePasswordSchema.ts","../src/slices/user/features/change_password/ChangePasswordPage.vue"],"sourcesContent":["import { withMetadata } from '@dragonmastery/zinia-forms-core';\nimport { changePasswordSchema } from '@dragonmastery/dragoncore-shared';\nimport { z } from 'zod';\n\n// Define the login form type\nexport type ChangePasswordForm = z.infer<typeof changePasswordSchema>;\n\n// Enhance the schema with metadata\nexport const changePasswordSchemaWithMetadata = withMetadata(\n changePasswordSchema,\n 'changePasswordSchema',\n {\n 'passwords.current_password': {\n inputType: 'password',\n placeholder: 'Enter current password',\n helpText: 'Enter your current password',\n autocomplete: 'current-password',\n },\n\n 'passwords.new_password': {\n inputType: 'password',\n placeholder: 'Enter new password',\n helpText: 'Enter your new password',\n },\n 'passwords.new_password_confirm': {\n inputType: 'password',\n placeholder: 'Confirm new password',\n helpText: 'Confirm your new password',\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\">Change Password</h1>\n\n <ZiniaForm @handle-submit=\"handleSubmit\" @success=\"handleSuccess\" @error=\"handleError\">\n <!-- hidden username -->\n <input type=\"text\" class=\"hidden\" autocomplete=\"username\" name=\"username\" />\n <zinia.PasswordsCurrentPasswordField />\n <zinia.PasswordsNewPasswordField />\n <zinia.PasswordsNewPasswordConfirmField />\n\n <ZiniaSubmitButton submitText=\"Change Password\" submittingText=\"Changing Password...\" />\n </ZiniaForm>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useForm } from '@dragonmastery/zinia-forms-core';\nimport { toast } from 'vue3-toastify';\nimport { z } from 'zod';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { changePasswordSchemaWithMetadata } from './changePasswordSchema';\n\n// Create a type-safe form using our schema with metadata\nconst { form, zinia, ZiniaForm, ZiniaSubmitButton } = useForm(\n changePasswordSchemaWithMetadata,\n {\n storeName: 'change-password-form',\n persistToLocalStorage: false,\n renderStyle: 'daisy_ui',\n },\n);\n\nconst { mutate: changePasswordMutate } = useMutation(\n (api, input: z.infer<typeof changePasswordSchemaWithMetadata>) =>\n api.passwordReset.changePassword(input),\n);\n\n// Handle form submission\nconst handleSubmit = async (data: z.infer<typeof changePasswordSchemaWithMetadata>) => {\n const result = await changePasswordMutate(data);\n if (!result?.ok) throw new Error('Failed to change password');\n return result;\n};\n\n// Handle success\nconst handleSuccess = async (_: { ok: boolean }) => {\n form.reset({\n passwords: {\n current_password: '',\n new_password: '',\n new_password_confirm: '',\n },\n });\n toast.success('Password changed successfully!');\n};\n\n// Handle error\nconst handleError = (error: any) => {\n toast.error(error.message || 'Failed to change password');\n};\n</script>\n"],"mappings":";;;;;;;AAQA,MAAa,mCAAmC,aAC9C,sBACA,wBACA;CACE,8BAA8B;EAC5B,WAAW;EACX,aAAa;EACb,UAAU;EACV,cAAc;EACf;CAED,0BAA0B;EACxB,WAAW;EACX,aAAa;EACb,UAAU;EACX;CACD,kCAAkC;EAChC,WAAW;EACX,aAAa;EACb,UAAU;EACX;CACF,CACF;;;;;;;;ECND,MAAM,EAAE,MAAM,OAAO,WAAW,sBAAsB,QACpD,kCACA;GACE,WAAW;GACX,uBAAuB;GACvB,aAAa;GACd,CACF;EAED,MAAM,EAAE,QAAQ,yBAAyB,aACtC,KAAK,UACJ,IAAI,cAAc,eAAe,MAAM,CAC1C;EAGD,MAAM,eAAe,OAAO,SAA2D;GACrF,MAAM,SAAS,MAAM,qBAAqB,KAAK;AAC/C,OAAI,CAAC,QAAQ,GAAI,OAAM,IAAI,MAAM,4BAA4B;AAC7D,UAAO;;EAIT,MAAM,gBAAgB,OAAO,MAAuB;AAClD,QAAK,MAAM,EACT,WAAW;IACT,kBAAkB;IAClB,cAAc;IACd,sBAAsB;IACvB,EACF,CAAC;AACF,SAAM,QAAQ,iCAAiC;;EAIjD,MAAM,eAAe,UAAe;AAClC,SAAM,MAAM,MAAM,WAAW,4BAA4B;;;uBA1DzD,mBAYM,OAZN,YAYM,CAAA,OAAA,OAAA,OAAA,KAXJ,mBAAoE,MAAA,EAAhE,OAAM,uCAAqC,EAAC,mBAAe,GAAA,GAE/D,YAQY,MAAA,UAAA,EAAA;IARA,gBAAe;IAAe,WAAS;IAAgB,SAAO;;2BAChD;KAAxB,mBAAA,oBAAwB;+BACxB,mBAA4E,SAAA;MAArE,MAAK;MAAO,OAAM;MAAS,cAAa;MAAW,MAAK;;KAC/D,YAAuC,MAAA,MAAA,CAAA,8BAAA;KACvC,YAAmC,MAAA,MAAA,CAAA,0BAAA;KACnC,YAA0C,MAAA,MAAA,CAAA,iCAAA;KAE1C,YAAwF,MAAA,kBAAA,EAAA;MAArE,YAAW;MAAkB,gBAAe"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import { t as ChangePasswordPage_default } from "./ChangePasswordPage-C633yQiU.js";
|
|
6
|
+
|
|
7
|
+
export { ChangePasswordPage_default as default };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, toDisplayString, watch, withModifiers } from "vue";
|
|
2
|
+
|
|
3
|
+
//#region src/components/ConfirmDialog.vue
|
|
4
|
+
const _hoisted_1 = { class: "font-bold text-lg mb-4" };
|
|
5
|
+
const _hoisted_2 = { class: "py-4" };
|
|
6
|
+
const _hoisted_3 = { class: "modal-action" };
|
|
7
|
+
const _hoisted_4 = ["disabled"];
|
|
8
|
+
const _hoisted_5 = ["disabled"];
|
|
9
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
10
|
+
__name: "ConfirmDialog",
|
|
11
|
+
props: {
|
|
12
|
+
modelValue: { type: Boolean },
|
|
13
|
+
title: { default: "Confirm" },
|
|
14
|
+
message: { default: "Are you sure?" },
|
|
15
|
+
confirmText: { default: "Confirm" },
|
|
16
|
+
cancelText: { default: "Cancel" },
|
|
17
|
+
processingText: { default: "Processing..." },
|
|
18
|
+
confirmButtonClass: { default: "btn-primary" },
|
|
19
|
+
isProcessing: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: false
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
emits: [
|
|
25
|
+
"update:modelValue",
|
|
26
|
+
"confirm",
|
|
27
|
+
"cancel"
|
|
28
|
+
],
|
|
29
|
+
setup(__props, { emit: __emit }) {
|
|
30
|
+
const props = __props;
|
|
31
|
+
const emit = __emit;
|
|
32
|
+
const dialogRef = ref(null);
|
|
33
|
+
const isOpen = ref(props.modelValue);
|
|
34
|
+
watch(() => props.modelValue, (newValue) => {
|
|
35
|
+
isOpen.value = newValue;
|
|
36
|
+
if (newValue && dialogRef.value) dialogRef.value.showModal();
|
|
37
|
+
else if (dialogRef.value) dialogRef.value.close();
|
|
38
|
+
}, { immediate: true });
|
|
39
|
+
watch(isOpen, (newValue) => {
|
|
40
|
+
if (newValue && dialogRef.value) dialogRef.value.showModal();
|
|
41
|
+
else if (dialogRef.value) dialogRef.value.close();
|
|
42
|
+
});
|
|
43
|
+
const handleConfirm = () => {
|
|
44
|
+
emit("confirm");
|
|
45
|
+
};
|
|
46
|
+
const handleCancel = () => {
|
|
47
|
+
isOpen.value = false;
|
|
48
|
+
emit("update:modelValue", false);
|
|
49
|
+
emit("cancel");
|
|
50
|
+
};
|
|
51
|
+
const handleBackdropClick = (event) => {
|
|
52
|
+
if (event.target === dialogRef.value) handleCancel();
|
|
53
|
+
};
|
|
54
|
+
return (_ctx, _cache) => {
|
|
55
|
+
return openBlock(), createElementBlock("dialog", {
|
|
56
|
+
ref_key: "dialogRef",
|
|
57
|
+
ref: dialogRef,
|
|
58
|
+
class: normalizeClass(["modal", { "modal-open": isOpen.value }]),
|
|
59
|
+
onClick: handleBackdropClick
|
|
60
|
+
}, [createElementVNode("div", {
|
|
61
|
+
class: "modal-box",
|
|
62
|
+
onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"]))
|
|
63
|
+
}, [
|
|
64
|
+
createElementVNode("h3", _hoisted_1, toDisplayString(__props.title), 1),
|
|
65
|
+
createElementVNode("div", _hoisted_2, [renderSlot(_ctx.$slots, "message", {}, () => [createElementVNode("p", null, toDisplayString(__props.message), 1)])]),
|
|
66
|
+
createElementVNode("div", _hoisted_3, [createElementVNode("button", {
|
|
67
|
+
class: "btn btn-outline",
|
|
68
|
+
onClick: withModifiers(handleCancel, ["prevent"]),
|
|
69
|
+
disabled: __props.isProcessing,
|
|
70
|
+
type: "button"
|
|
71
|
+
}, toDisplayString(__props.cancelText), 9, _hoisted_4), createElementVNode("button", {
|
|
72
|
+
class: normalizeClass(["btn", __props.confirmButtonClass]),
|
|
73
|
+
onClick: withModifiers(handleConfirm, ["prevent"]),
|
|
74
|
+
disabled: __props.isProcessing,
|
|
75
|
+
type: "button"
|
|
76
|
+
}, toDisplayString(__props.isProcessing ? __props.processingText : __props.confirmText), 11, _hoisted_5)])
|
|
77
|
+
])], 2);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
var ConfirmDialog_default = _sfc_main;
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
export { ConfirmDialog_default as t };
|
|
85
|
+
//# sourceMappingURL=ConfirmDialog-DjthOYU6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmDialog-DjthOYU6.js","names":[],"sources":["../src/components/ConfirmDialog.vue"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n :class=\"['modal', { 'modal-open': isOpen }]\"\n @click=\"handleBackdropClick\"\n >\n <div class=\"modal-box\" @click.stop>\n <h3 class=\"font-bold text-lg mb-4\">{{ title }}</h3>\n <div class=\"py-4\">\n <slot name=\"message\">\n <p>{{ message }}</p>\n </slot>\n </div>\n <div class=\"modal-action\">\n <button\n class=\"btn btn-outline\"\n @click.prevent=\"handleCancel\"\n :disabled=\"isProcessing\"\n type=\"button\"\n >\n {{ cancelText }}\n </button>\n <button\n class=\"btn\"\n :class=\"confirmButtonClass\"\n @click.prevent=\"handleConfirm\"\n :disabled=\"isProcessing\"\n type=\"button\"\n >\n {{ isProcessing ? processingText : confirmText }}\n </button>\n </div>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\n\ninterface Props {\n modelValue: boolean;\n title?: string;\n message?: string;\n confirmText?: string;\n cancelText?: string;\n processingText?: string;\n confirmButtonClass?: string;\n isProcessing?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n title: 'Confirm',\n message: 'Are you sure?',\n confirmText: 'Confirm',\n cancelText: 'Cancel',\n processingText: 'Processing...',\n confirmButtonClass: 'btn-primary',\n isProcessing: false,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n confirm: [];\n cancel: [];\n}>();\n\nconst dialogRef = ref<HTMLDialogElement | null>(null);\nconst isOpen = ref(props.modelValue);\n\nwatch(\n () => props.modelValue,\n (newValue) => {\n isOpen.value = newValue;\n if (newValue && dialogRef.value) {\n dialogRef.value.showModal();\n } else if (dialogRef.value) {\n dialogRef.value.close();\n }\n },\n { immediate: true },\n);\n\nwatch(isOpen, (newValue) => {\n if (newValue && dialogRef.value) {\n dialogRef.value.showModal();\n } else if (dialogRef.value) {\n dialogRef.value.close();\n }\n});\n\nconst handleConfirm = () => {\n emit('confirm');\n};\n\nconst handleCancel = () => {\n isOpen.value = false;\n emit('update:modelValue', false);\n emit('cancel');\n};\n\nconst handleBackdropClick = (event: MouseEvent) => {\n // Close when clicking the backdrop (modal itself)\n if (event.target === dialogRef.value) {\n handleCancel();\n }\n};\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDA,MAAM,QAAQ;EAUd,MAAM,OAAO;EAMb,MAAM,YAAY,IAA8B,KAAK;EACrD,MAAM,SAAS,IAAI,MAAM,WAAW;AAEpC,cACQ,MAAM,aACX,aAAa;AACZ,UAAO,QAAQ;AACf,OAAI,YAAY,UAAU,MACxB,WAAU,MAAM,WAAW;YAClB,UAAU,MACnB,WAAU,MAAM,OAAO;KAG3B,EAAE,WAAW,MAAM,CACpB;AAED,QAAM,SAAS,aAAa;AAC1B,OAAI,YAAY,UAAU,MACxB,WAAU,MAAM,WAAW;YAClB,UAAU,MACnB,WAAU,MAAM,OAAO;IAEzB;EAEF,MAAM,sBAAsB;AAC1B,QAAK,UAAU;;EAGjB,MAAM,qBAAqB;AACzB,UAAO,QAAQ;AACf,QAAK,qBAAqB,MAAM;AAChC,QAAK,SAAS;;EAGhB,MAAM,uBAAuB,UAAsB;AAEjD,OAAI,MAAM,WAAW,UAAU,MAC7B,eAAc;;;uBAtGhB,mBAgCS,UAAA;aA/BH;IAAJ,KAAI;IACH,OAAK,eAAA,CAAA,SAAA,EAAA,cAA4B,OAAA,OAAM,CAAA,CAAA;IACvC,SAAO;OAER,mBA0BM,OAAA;IA1BD,OAAM;IAAa,SAAK,OAAA,OAAA,OAAA,KAAA,oBAAN,IAAW,CAAA,OAAA,CAAA;;IAChC,mBAAmD,MAAnD,YAAmD,gBAAb,QAAA,MAAK,EAAA,EAAA;IAC3C,mBAIM,OAJN,YAIM,CAHJ,WAEO,KAAA,QAAA,WAAA,EAAA,QAAA,CADL,mBAAoB,KAAA,MAAA,gBAAd,QAAA,QAAO,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;IAGjB,mBAkBM,OAlBN,YAkBM,CAjBJ,mBAOS,UAAA;KANP,OAAM;KACL,SAAK,cAAU,cAAY,CAAA,UAAA,CAAA;KAC3B,UAAU,QAAA;KACX,MAAK;uBAEF,QAAA,WAAU,EAAA,GAAA,WAAA,EAEf,mBAQS,UAAA;KAPP,OAAK,eAAA,CAAC,OACE,QAAA,mBAAkB,CAAA;KACzB,SAAK,cAAU,eAAa,CAAA,UAAA,CAAA;KAC5B,UAAU,QAAA;KACX,MAAK;uBAEF,QAAA,eAAe,QAAA,iBAAiB,QAAA,YAAW,EAAA,IAAA,WAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Fragment, createCommentVNode, createElementBlock, createElementVNode, defineComponent, nextTick, openBlock, ref, renderSlot, toDisplayString, watch } from "vue";
|
|
2
|
+
import DOMPurify from "dompurify";
|
|
3
|
+
import { marked } from "marked";
|
|
4
|
+
|
|
5
|
+
//#region src/slices/auth/features/shared/ConsentFlowStep.vue
|
|
6
|
+
const _hoisted_1 = { class: "space-y-6" };
|
|
7
|
+
const _hoisted_2 = { class: "text-center space-y-1" };
|
|
8
|
+
const _hoisted_3 = { class: "text-2xl font-bold" };
|
|
9
|
+
const _hoisted_4 = { class: "text-base-content/80" };
|
|
10
|
+
const _hoisted_5 = {
|
|
11
|
+
key: 0,
|
|
12
|
+
class: "alert alert-error flex flex-col gap-2"
|
|
13
|
+
};
|
|
14
|
+
const _hoisted_6 = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "text-sm text-base-content/70 mb-2"
|
|
17
|
+
};
|
|
18
|
+
const _hoisted_7 = ["data-consent-type"];
|
|
19
|
+
const _hoisted_8 = ["innerHTML"];
|
|
20
|
+
const _hoisted_9 = ["href"];
|
|
21
|
+
const _hoisted_10 = { class: "flex flex-col gap-5" };
|
|
22
|
+
const _hoisted_11 = ["disabled"];
|
|
23
|
+
const _hoisted_12 = ["disabled"];
|
|
24
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
25
|
+
__name: "ConsentFlowStep",
|
|
26
|
+
props: {
|
|
27
|
+
config: {},
|
|
28
|
+
currentStep: {},
|
|
29
|
+
totalSteps: {},
|
|
30
|
+
submitting: {
|
|
31
|
+
type: Boolean,
|
|
32
|
+
default: false
|
|
33
|
+
},
|
|
34
|
+
submitError: { default: null },
|
|
35
|
+
declining: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false
|
|
38
|
+
},
|
|
39
|
+
acceptLabel: { default: "Accept and continue" },
|
|
40
|
+
submitAcceptLabel: { default: "Submitting..." },
|
|
41
|
+
declineLabel: { default: "Decline" },
|
|
42
|
+
declineSubmittingLabel: { default: "Returning..." },
|
|
43
|
+
introText: { default: "Please read the full document before accepting. Scroll to the bottom when you've finished reading." }
|
|
44
|
+
},
|
|
45
|
+
emits: ["accept", "decline"],
|
|
46
|
+
setup(__props, { emit: __emit }) {
|
|
47
|
+
const props = __props;
|
|
48
|
+
const emit = __emit;
|
|
49
|
+
function retry() {
|
|
50
|
+
emit("accept");
|
|
51
|
+
}
|
|
52
|
+
const hasScrolledToBottom = ref(!props.config.content);
|
|
53
|
+
const scrollEl = ref(null);
|
|
54
|
+
function setScrollRef(el) {
|
|
55
|
+
scrollEl.value = el instanceof HTMLElement ? el : null;
|
|
56
|
+
}
|
|
57
|
+
watch(() => props.config, (config) => {
|
|
58
|
+
hasScrolledToBottom.value = !config?.content;
|
|
59
|
+
nextTick(() => {
|
|
60
|
+
scrollEl.value?.scrollTo(0, 0);
|
|
61
|
+
});
|
|
62
|
+
}, { immediate: true });
|
|
63
|
+
function renderMarkdown(content) {
|
|
64
|
+
const html = marked.parse(content);
|
|
65
|
+
return DOMPurify.sanitize(html, {
|
|
66
|
+
ALLOWED_TAGS: [
|
|
67
|
+
"p",
|
|
68
|
+
"br",
|
|
69
|
+
"strong",
|
|
70
|
+
"em",
|
|
71
|
+
"u",
|
|
72
|
+
"a",
|
|
73
|
+
"ul",
|
|
74
|
+
"ol",
|
|
75
|
+
"li",
|
|
76
|
+
"h1",
|
|
77
|
+
"h2",
|
|
78
|
+
"h3",
|
|
79
|
+
"h4",
|
|
80
|
+
"blockquote",
|
|
81
|
+
"code",
|
|
82
|
+
"pre",
|
|
83
|
+
"hr"
|
|
84
|
+
],
|
|
85
|
+
ALLOWED_ATTR: [
|
|
86
|
+
"href",
|
|
87
|
+
"target",
|
|
88
|
+
"rel"
|
|
89
|
+
]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function checkScrolledToBottom() {
|
|
93
|
+
const el = scrollEl.value;
|
|
94
|
+
if (!el) return;
|
|
95
|
+
const { scrollTop, scrollHeight, clientHeight } = el;
|
|
96
|
+
if (scrollHeight - scrollTop - clientHeight < 10) hasScrolledToBottom.value = true;
|
|
97
|
+
}
|
|
98
|
+
function onScroll() {
|
|
99
|
+
checkScrolledToBottom();
|
|
100
|
+
}
|
|
101
|
+
return (_ctx, _cache) => {
|
|
102
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
103
|
+
createElementVNode("div", _hoisted_2, [
|
|
104
|
+
createElementVNode("h1", _hoisted_3, toDisplayString(__props.config.label), 1),
|
|
105
|
+
createElementVNode("p", _hoisted_4, "Step " + toDisplayString(__props.currentStep) + " of " + toDisplayString(__props.totalSteps), 1),
|
|
106
|
+
_cache[2] || (_cache[2] = createElementVNode("p", { class: "text-base-content/70 text-sm" }, "Review and accept", -1))
|
|
107
|
+
]),
|
|
108
|
+
__props.submitError ? (openBlock(), createElementBlock("div", _hoisted_5, [renderSlot(_ctx.$slots, "error-recovery", {
|
|
109
|
+
retry,
|
|
110
|
+
submitting: __props.submitting
|
|
111
|
+
}, () => [createElementVNode("span", null, toDisplayString(__props.submitError), 1), _cache[3] || (_cache[3] = createElementVNode("p", { class: "text-sm opacity-90" }, "You can try again using the buttons below.", -1))])])) : createCommentVNode("v-if", true),
|
|
112
|
+
__props.config.content ? (openBlock(), createElementBlock("p", _hoisted_6, toDisplayString(__props.introText), 1)) : createCommentVNode("v-if", true),
|
|
113
|
+
createCommentVNode(" Scrollable terms box when content is provided "),
|
|
114
|
+
__props.config.content ? (openBlock(), createElementBlock("div", {
|
|
115
|
+
key: __props.config.type,
|
|
116
|
+
ref: (el) => setScrollRef(el),
|
|
117
|
+
class: "border border-base-300 rounded-lg px-3 py-4 sm:p-4 bg-base-100 overflow-y-auto overflow-x-hidden min-h-80 max-h-[min(32rem,70vh)] w-full min-w-0",
|
|
118
|
+
"data-consent-type": __props.config.type,
|
|
119
|
+
onScroll
|
|
120
|
+
}, [createElementVNode("div", {
|
|
121
|
+
class: "prose prose-sm prose-max-w-none max-w-full min-w-0 text-sm prose-headings:font-semibold prose-p:my-2",
|
|
122
|
+
innerHTML: renderMarkdown(__props.config.content)
|
|
123
|
+
}, null, 8, _hoisted_8)], 40, _hoisted_7)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [createCommentVNode(" Link-only when no content "), createElementVNode("div", null, [__props.config.url ? (openBlock(), createElementBlock("a", {
|
|
124
|
+
key: 0,
|
|
125
|
+
href: __props.config.url,
|
|
126
|
+
target: "_blank",
|
|
127
|
+
rel: "noopener noreferrer",
|
|
128
|
+
class: "link link-accent"
|
|
129
|
+
}, " View " + toDisplayString(__props.config.label), 9, _hoisted_9)) : createCommentVNode("v-if", true)])], 2112)),
|
|
130
|
+
createElementVNode("div", _hoisted_10, [createElementVNode("button", {
|
|
131
|
+
type: "button",
|
|
132
|
+
class: "btn btn-primary",
|
|
133
|
+
disabled: (__props.config.content ? !hasScrolledToBottom.value : false) || __props.submitting,
|
|
134
|
+
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("accept"))
|
|
135
|
+
}, toDisplayString(__props.submitting ? __props.submitAcceptLabel : __props.acceptLabel), 9, _hoisted_11), createElementVNode("button", {
|
|
136
|
+
type: "button",
|
|
137
|
+
class: "btn btn-outline btn-sm btn-error",
|
|
138
|
+
disabled: __props.declining || __props.submitting,
|
|
139
|
+
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("decline"))
|
|
140
|
+
}, toDisplayString(__props.declining ? __props.declineSubmittingLabel : __props.declineLabel), 9, _hoisted_12)])
|
|
141
|
+
]);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
var ConsentFlowStep_default = _sfc_main;
|
|
146
|
+
|
|
147
|
+
//#endregion
|
|
148
|
+
export { ConsentFlowStep_default as t };
|
|
149
|
+
//# sourceMappingURL=ConsentFlowStep-DbQpQQA-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsentFlowStep-DbQpQQA-.js","names":["$emit"],"sources":["../src/slices/auth/features/shared/ConsentFlowStep.vue"],"sourcesContent":["<template>\n <div class=\"space-y-6\">\n <div class=\"text-center space-y-1\">\n <h1 class=\"text-2xl font-bold\">{{ config.label }}</h1>\n <p class=\"text-base-content/80\">Step {{ currentStep }} of {{ totalSteps }}</p>\n <p class=\"text-base-content/70 text-sm\">Review and accept</p>\n </div>\n\n <div\n v-if=\"submitError\"\n class=\"alert alert-error flex flex-col gap-2\"\n >\n <slot\n name=\"error-recovery\"\n :retry=\"retry\"\n :submitting=\"submitting\"\n >\n <span>{{ submitError }}</span>\n <p class=\"text-sm opacity-90\">You can try again using the buttons below.</p>\n </slot>\n </div>\n\n <p\n v-if=\"config.content\"\n class=\"text-sm text-base-content/70 mb-2\"\n >\n {{ introText }}\n </p>\n\n <!-- Scrollable terms box when content is provided -->\n <div\n v-if=\"config.content\"\n :key=\"config.type\"\n :ref=\"(el) => setScrollRef(el)\"\n class=\"border border-base-300 rounded-lg px-3 py-4 sm:p-4 bg-base-100 overflow-y-auto overflow-x-hidden min-h-80 max-h-[min(32rem,70vh)] w-full min-w-0\"\n :data-consent-type=\"config.type\"\n @scroll=\"onScroll\"\n >\n <div\n class=\"prose prose-sm prose-max-w-none max-w-full min-w-0 text-sm prose-headings:font-semibold prose-p:my-2\"\n v-html=\"renderMarkdown(config.content)\"\n />\n </div>\n\n <!-- Link-only when no content -->\n <div v-else>\n <a\n v-if=\"config.url\"\n :href=\"config.url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"link link-accent\"\n >\n View {{ config.label }}\n </a>\n </div>\n\n <div class=\"flex flex-col gap-5\">\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n :disabled=\"(config.content ? !hasScrolledToBottom : false) || submitting\"\n @click=\"$emit('accept')\"\n >\n {{ submitting ? submitAcceptLabel : acceptLabel }}\n </button>\n <button\n type=\"button\"\n class=\"btn btn-outline btn-sm btn-error\"\n :disabled=\"declining || submitting\"\n @click=\"$emit('decline')\"\n >\n {{ declining ? declineSubmittingLabel : declineLabel }}\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { SignupConsentConfigDto } from '@dragonmastery/dragoncore-shared';\nimport DOMPurify from 'dompurify';\nimport { marked } from 'marked';\nimport { nextTick, ref, watch } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n config: SignupConsentConfigDto;\n currentStep: number;\n totalSteps: number;\n submitting?: boolean;\n submitError?: string | null;\n declining?: boolean;\n /** e.g. \"Accept and continue\" */\n acceptLabel?: string;\n /** e.g. \"Submitting...\" or \"Saving...\" */\n submitAcceptLabel?: string;\n /** e.g. \"Decline\" or \"Decline and log out\" */\n declineLabel?: string;\n /** e.g. \"Returning...\" or \"Logging out...\" */\n declineSubmittingLabel?: string;\n /** Intro text when content is shown, e.g. \"Please read the full document before accepting...\" */\n introText?: string;\n }>(),\n {\n submitting: false,\n submitError: null,\n declining: false,\n acceptLabel: 'Accept and continue',\n submitAcceptLabel: 'Submitting...',\n declineLabel: 'Decline',\n declineSubmittingLabel: 'Returning...',\n introText:\n \"Please read the full document before accepting. Scroll to the bottom when you've finished reading.\",\n },\n);\n\nconst emit = defineEmits<{\n accept: [];\n decline: [];\n}>();\n\nfunction retry() {\n emit('accept');\n}\n\nconst hasScrolledToBottom = ref(!props.config.content);\nconst scrollEl = ref<HTMLElement | null>(null);\n\nfunction setScrollRef(el: unknown) {\n scrollEl.value = el instanceof HTMLElement ? el : null;\n}\n\nwatch(\n () => props.config,\n (config) => {\n hasScrolledToBottom.value = !config?.content;\n nextTick(() => {\n scrollEl.value?.scrollTo(0, 0);\n });\n },\n { immediate: true },\n);\n\nfunction renderMarkdown(content: string): string {\n const html = marked.parse(content) as string;\n return DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [\n 'p',\n 'br',\n 'strong',\n 'em',\n 'u',\n 'a',\n 'ul',\n 'ol',\n 'li',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'blockquote',\n 'code',\n 'pre',\n 'hr',\n ],\n ALLOWED_ATTR: ['href', 'target', 'rel'],\n });\n}\n\nfunction checkScrolledToBottom() {\n const el = scrollEl.value;\n if (!el) return;\n const { scrollTop, scrollHeight, clientHeight } = el;\n const atBottom = scrollHeight - scrollTop - clientHeight < 10;\n if (atBottom) {\n hasScrolledToBottom.value = true;\n }\n}\n\nfunction onScroll() {\n checkScrolledToBottom();\n}\n\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFA,MAAM,QAAQ;EAgCd,MAAM,OAAO;EAKb,SAAS,QAAQ;AACf,QAAK,SAAS;;EAGhB,MAAM,sBAAsB,IAAI,CAAC,MAAM,OAAO,QAAQ;EACtD,MAAM,WAAW,IAAwB,KAAK;EAE9C,SAAS,aAAa,IAAa;AACjC,YAAS,QAAQ,cAAc,cAAc,KAAK;;AAGpD,cACQ,MAAM,SACX,WAAW;AACV,uBAAoB,QAAQ,CAAC,QAAQ;AACrC,kBAAe;AACb,aAAS,OAAO,SAAS,GAAG,EAAE;KAC9B;KAEJ,EAAE,WAAW,MAAM,CACpB;EAED,SAAS,eAAe,SAAyB;GAC/C,MAAM,OAAO,OAAO,MAAM,QAAQ;AAClC,UAAO,UAAU,SAAS,MAAM;IAC9B,cAAc;KACZ;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACD;IACD,cAAc;KAAC;KAAQ;KAAU;KAAM;IACxC,CAAC;;EAGJ,SAAS,wBAAwB;GAC/B,MAAM,KAAK,SAAS;AACpB,OAAI,CAAC,GAAI;GACT,MAAM,EAAE,WAAW,cAAc,iBAAiB;AAElD,OADiB,eAAe,YAAY,eAAe,GAEzD,qBAAoB,QAAQ;;EAIhC,SAAS,WAAW;AAClB,0BAAuB;;;uBAnLvB,mBA0EM,OA1EN,YA0EM;IAzEJ,mBAIM,OAJN,YAIM;KAHJ,mBAAsD,MAAtD,YAAsD,gBAApB,QAAA,OAAO,MAAK,EAAA,EAAA;KAC9C,mBAA8E,KAA9E,YAAgC,UAAK,gBAAG,QAAA,YAAW,GAAG,SAAI,gBAAG,QAAA,WAAU,EAAA,EAAA;+BACvE,mBAA6D,KAAA,EAA1D,OAAM,gCAA8B,EAAC,qBAAiB,GAAA;;IAInD,QAAA,eAAA,WAAA,EADR,mBAYM,OAZN,YAYM,CARJ,WAOO,KAAA,QAAA,kBAAA;KALG;KACP,YAAY,QAAA;aAIR,CAFL,mBAA8B,QAAA,MAAA,gBAArB,QAAA,YAAW,EAAA,EAAA,EAAA,OAAA,OAAA,OAAA,KACpB,mBAA4E,KAAA,EAAzE,OAAM,sBAAoB,EAAC,8CAA0C,GAAA,EAAA,CAAA,CAAA,CAAA,IAAA,mBAAA,QAAA,KAAA;IAKpE,QAAA,OAAO,WAAA,WAAA,EADf,mBAKI,KALJ,YAKI,gBADC,QAAA,UAAS,EAAA,EAAA,IAAA,mBAAA,QAAA,KAAA;IAGd,mBAAA,kDAAsD;IAE9C,QAAA,OAAO,WAAA,WAAA,EADf,mBAYM,OAAA;KAVH,KAAK,QAAA,OAAO;KACZ,MAAM,OAAO,aAAa,GAAE;KAC7B,OAAM;KACL,qBAAmB,QAAA,OAAO;KAClB;QAET,mBAGE,OAAA;KAFA,OAAM;KACN,WAAQ,eAAe,QAAA,OAAO,QAAO;+DAKzC,mBAUM,UAAA,EAAA,KAAA,GAAA,EAAA,CAXN,mBAAA,8BAAkC,EAClC,mBAUM,OAAA,MAAA,CARI,QAAA,OAAO,OAAA,WAAA,EADf,mBAQI,KAAA;;KAND,MAAM,QAAA,OAAO;KACd,QAAO;KACP,KAAI;KACJ,OAAM;OACP,WACM,gBAAG,QAAA,OAAO,MAAK,EAAA,GAAA,WAAA,IAAA,mBAAA,QAAA,KAAA,CAAA,CAAA,CAAA;IAIxB,mBAiBM,OAjBN,aAiBM,CAhBJ,mBAOS,UAAA;KANP,MAAK;KACL,OAAM;KACL,WAAW,QAAA,OAAO,UAAO,CAAI,oBAAA,QAAmB,UAAa,QAAA;KAC7D,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;uBAEV,QAAA,aAAa,QAAA,oBAAoB,QAAA,YAAW,EAAA,GAAA,YAAA,EAEjD,mBAOS,UAAA;KANP,MAAK;KACL,OAAM;KACL,UAAU,QAAA,aAAa,QAAA;KACvB,SAAK,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,UAAA;uBAEV,QAAA,YAAY,QAAA,yBAAyB,QAAA,aAAY,EAAA,GAAA,YAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { o as useUserSessionStore } from "./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 { r as getValidReturnUrl } from "./useReturnUrl-B5V3SJf5.js";
|
|
7
|
+
import { t as ConsentFlowStep_default } from "./ConsentFlowStep-DbQpQQA-.js";
|
|
8
|
+
import { computed, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, nextTick, openBlock, ref, unref, watch } from "vue";
|
|
9
|
+
import { useRoute, useRouter } from "vue-router";
|
|
10
|
+
import { toast } from "vue3-toastify";
|
|
11
|
+
|
|
12
|
+
//#region src/slices/auth/features/consent_required/ConsentRequired.vue
|
|
13
|
+
const _hoisted_1 = { class: "w-full max-w-md mx-auto mb-8 sm:mb-10 bg-base-200 px-3 py-4 sm:px-6 sm:py-6 rounded-xl shadow-md container min-w-0" };
|
|
14
|
+
const _hoisted_2 = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "text-center"
|
|
17
|
+
};
|
|
18
|
+
const _hoisted_3 = {
|
|
19
|
+
key: 1,
|
|
20
|
+
class: "space-y-6"
|
|
21
|
+
};
|
|
22
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
23
|
+
__name: "ConsentRequired",
|
|
24
|
+
setup(__props) {
|
|
25
|
+
const sessionStore = useUserSessionStore();
|
|
26
|
+
const router = useRouter();
|
|
27
|
+
const route = useRoute();
|
|
28
|
+
const { data: pendingConsents, loading } = useQuery((api) => api.users.getPendingConsents(), { skipAuthCheck: false });
|
|
29
|
+
const currentStep = ref(1);
|
|
30
|
+
const totalSteps = computed(() => (pendingConsents.value ?? []).length);
|
|
31
|
+
const currentConfig = computed(() => (pendingConsents.value ?? [])[currentStep.value - 1] ?? null);
|
|
32
|
+
const declining = ref(false);
|
|
33
|
+
const submitting = ref(false);
|
|
34
|
+
const submitError = ref(null);
|
|
35
|
+
function getErrorMessage(error) {
|
|
36
|
+
if (error instanceof Error && error.message) return error.message;
|
|
37
|
+
if (error && typeof error === "object" && "message" in error && typeof error.message === "string") return error.message;
|
|
38
|
+
return "Failed to record consents. Please try again.";
|
|
39
|
+
}
|
|
40
|
+
const { mutate: recordConsentsMutate } = useMutation((api, input) => api.users.recordConsents(input), { skipAuthCheck: false });
|
|
41
|
+
async function handleAccept() {
|
|
42
|
+
const config = currentConfig.value;
|
|
43
|
+
const consents = pendingConsents.value ?? [];
|
|
44
|
+
if (!config || consents.length === 0) return;
|
|
45
|
+
submitError.value = null;
|
|
46
|
+
const acceptancesSoFar = {};
|
|
47
|
+
for (let i = 0; i < currentStep.value; i++) {
|
|
48
|
+
const c = consents[i];
|
|
49
|
+
if (c) acceptancesSoFar[c.type] = true;
|
|
50
|
+
}
|
|
51
|
+
if (currentStep.value >= totalSteps.value) {
|
|
52
|
+
submitting.value = true;
|
|
53
|
+
try {
|
|
54
|
+
await recordConsentsMutate({ acceptances: acceptancesSoFar });
|
|
55
|
+
await sessionStore.refreshToken();
|
|
56
|
+
window.scrollTo(0, 0);
|
|
57
|
+
const targetUrl = getValidReturnUrl(route, "/");
|
|
58
|
+
await router.push(targetUrl);
|
|
59
|
+
toast.success("Consents recorded. You can now continue.");
|
|
60
|
+
} catch (err) {
|
|
61
|
+
submitError.value = getErrorMessage(err);
|
|
62
|
+
} finally {
|
|
63
|
+
submitting.value = false;
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
currentStep.value++;
|
|
68
|
+
nextTick();
|
|
69
|
+
}
|
|
70
|
+
async function handleDecline() {
|
|
71
|
+
declining.value = true;
|
|
72
|
+
try {
|
|
73
|
+
sessionStore.clearSession();
|
|
74
|
+
await router.push("/auth/login");
|
|
75
|
+
toast.info("You have declined. You have been logged out.");
|
|
76
|
+
} finally {
|
|
77
|
+
declining.value = false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
watch([pendingConsents, loading], ([consents, isLoading]) => {
|
|
81
|
+
if (!isLoading && Array.isArray(consents) && consents.length === 0) router.push(getValidReturnUrl(route, "/"));
|
|
82
|
+
}, { immediate: true });
|
|
83
|
+
return (_ctx, _cache) => {
|
|
84
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [unref(loading) ? (openBlock(), createElementBlock("div", _hoisted_2, [..._cache[0] || (_cache[0] = [createElementVNode("p", { class: "text-base-content/80" }, "Loading...", -1)])])) : currentConfig.value ? (openBlock(), createElementBlock("div", _hoisted_3, [createVNode(ConsentFlowStep_default, {
|
|
85
|
+
config: currentConfig.value,
|
|
86
|
+
"current-step": currentStep.value,
|
|
87
|
+
"total-steps": totalSteps.value,
|
|
88
|
+
submitting: submitting.value,
|
|
89
|
+
"submit-error": submitError.value,
|
|
90
|
+
declining: declining.value,
|
|
91
|
+
"accept-label": "Accept and continue",
|
|
92
|
+
"submit-accept-label": "Saving...",
|
|
93
|
+
"decline-label": "Decline and log out",
|
|
94
|
+
"decline-submitting-label": "Logging out...",
|
|
95
|
+
"intro-text": "Please read the full document before accepting. Scroll to the bottom when you've finished reading. You can decline at any time; if you decline, you will not have access to the application and will be logged out.",
|
|
96
|
+
onAccept: handleAccept,
|
|
97
|
+
onDecline: handleDecline
|
|
98
|
+
}, null, 8, [
|
|
99
|
+
"config",
|
|
100
|
+
"current-step",
|
|
101
|
+
"total-steps",
|
|
102
|
+
"submitting",
|
|
103
|
+
"submit-error",
|
|
104
|
+
"declining"
|
|
105
|
+
])])) : createCommentVNode("v-if", true)]);
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
var ConsentRequired_default = _sfc_main;
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
export { ConsentRequired_default as default };
|
|
113
|
+
//# sourceMappingURL=ConsentRequired-BiCKEVBG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsentRequired-BiCKEVBG.js","names":["acceptancesSoFar: Record<string, boolean>"],"sources":["../src/slices/auth/features/consent_required/ConsentRequired.vue"],"sourcesContent":["<template>\n <div class=\"w-full max-w-md mx-auto mb-8 sm:mb-10 bg-base-200 px-3 py-4 sm:px-6 sm:py-6 rounded-xl shadow-md container min-w-0\">\n <div v-if=\"loading\" class=\"text-center\">\n <p class=\"text-base-content/80\">Loading...</p>\n </div>\n\n <div v-else-if=\"currentConfig\" class=\"space-y-6\">\n <ConsentFlowStep\n :config=\"currentConfig\"\n :current-step=\"currentStep\"\n :total-steps=\"totalSteps\"\n :submitting=\"submitting\"\n :submit-error=\"submitError\"\n :declining=\"declining\"\n accept-label=\"Accept and continue\"\n submit-accept-label=\"Saving...\"\n decline-label=\"Decline and log out\"\n decline-submitting-label=\"Logging out...\"\n intro-text=\"Please read the full document before accepting. Scroll to the bottom when you've finished reading. You can decline at any time; if you decline, you will not have access to the application and will be logged out.\"\n @accept=\"handleAccept\"\n @decline=\"handleDecline\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { RecordConsentsInputDto } from '@dragonmastery/dragoncore-shared';\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { toast } from 'vue3-toastify';\nimport ConsentFlowStep from '../shared/ConsentFlowStep.vue';\nimport { useMutation } from '../../../../composables/useMutation';\nimport { useQuery } from '../../../../composables/useQuery';\nimport { useUserSessionStore } from '../../../../composables/useUserSessionStore';\nimport { getValidReturnUrl } from '../../../../utils/useReturnUrl';\n\nconst sessionStore = useUserSessionStore();\nconst router = useRouter();\nconst route = useRoute();\n\nconst { data: pendingConsents, loading } = useQuery(\n (api) => api.users.getPendingConsents(),\n { skipAuthCheck: false },\n);\n\nconst currentStep = ref(1);\nconst totalSteps = computed(() => (pendingConsents.value ?? []).length);\nconst currentConfig = computed(\n () => (pendingConsents.value ?? [])[currentStep.value - 1] ?? null,\n);\n\nconst declining = ref(false);\nconst submitting = ref(false);\nconst submitError = ref<string | null>(null);\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error && error.message) return error.message;\n if (error && typeof error === 'object' && 'message' in error && typeof (error as { message: unknown }).message === 'string') {\n return (error as { message: string }).message;\n }\n return 'Failed to record consents. Please try again.';\n}\n\nconst { mutate: recordConsentsMutate } = useMutation(\n (api, input: RecordConsentsInputDto) => api.users.recordConsents(input),\n { skipAuthCheck: false },\n);\n\nasync function handleAccept() {\n const config = currentConfig.value;\n const consents = pendingConsents.value ?? [];\n if (!config || consents.length === 0) return;\n\n submitError.value = null;\n\n const acceptancesSoFar: Record<string, boolean> = {};\n for (let i = 0; i < currentStep.value; i++) {\n const c = consents[i];\n if (c) acceptancesSoFar[c.type] = true;\n }\n\n if (currentStep.value >= totalSteps.value) {\n submitting.value = true;\n try {\n await recordConsentsMutate({ acceptances: acceptancesSoFar });\n await sessionStore.refreshToken();\n window.scrollTo(0, 0);\n const targetUrl = getValidReturnUrl(route, '/');\n await router.push(targetUrl);\n toast.success('Consents recorded. You can now continue.');\n } catch (err) {\n submitError.value = getErrorMessage(err);\n } finally {\n submitting.value = false;\n }\n return;\n }\n\n currentStep.value++;\n nextTick();\n}\n\nasync function handleDecline() {\n declining.value = true;\n try {\n sessionStore.clearSession();\n await router.push('/auth/login');\n toast.info('You have declined. You have been logged out.');\n } finally {\n declining.value = false;\n }\n}\n\n// If no pending consents (e.g. already completed or consent disabled), redirect\nwatch(\n [pendingConsents, loading],\n ([consents, isLoading]) => {\n if (!isLoading && Array.isArray(consents) && consents.length === 0) {\n router.push(getValidReturnUrl(route, '/'));\n }\n },\n { immediate: true },\n);\n</script>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAqCA,MAAM,eAAe,qBAAqB;EAC1C,MAAM,SAAS,WAAW;EAC1B,MAAM,QAAQ,UAAU;EAExB,MAAM,EAAE,MAAM,iBAAiB,YAAY,UACxC,QAAQ,IAAI,MAAM,oBAAoB,EACvC,EAAE,eAAe,OAAO,CACzB;EAED,MAAM,cAAc,IAAI,EAAE;EAC1B,MAAM,aAAa,gBAAgB,gBAAgB,SAAS,EAAE,EAAE,OAAO;EACvE,MAAM,gBAAgB,gBACb,gBAAgB,SAAS,EAAE,EAAE,YAAY,QAAQ,MAAM,KAC/D;EAED,MAAM,YAAY,IAAI,MAAM;EAC5B,MAAM,aAAa,IAAI,MAAM;EAC7B,MAAM,cAAc,IAAmB,KAAK;EAE5C,SAAS,gBAAgB,OAAwB;AAC/C,OAAI,iBAAiB,SAAS,MAAM,QAAS,QAAO,MAAM;AAC1D,OAAI,SAAS,OAAO,UAAU,YAAY,aAAa,SAAS,OAAQ,MAA+B,YAAY,SACjH,QAAQ,MAA8B;AAExC,UAAO;;EAGT,MAAM,EAAE,QAAQ,yBAAyB,aACtC,KAAK,UAAkC,IAAI,MAAM,eAAe,MAAM,EACvE,EAAE,eAAe,OAAO,CACzB;EAED,eAAe,eAAe;GAC5B,MAAM,SAAS,cAAc;GAC7B,MAAM,WAAW,gBAAgB,SAAS,EAAE;AAC5C,OAAI,CAAC,UAAU,SAAS,WAAW,EAAG;AAEtC,eAAY,QAAQ;GAEpB,MAAMA,mBAA4C,EAAE;AACpD,QAAK,IAAI,IAAI,GAAG,IAAI,YAAY,OAAO,KAAK;IAC1C,MAAM,IAAI,SAAS;AACnB,QAAI,EAAG,kBAAiB,EAAE,QAAQ;;AAGpC,OAAI,YAAY,SAAS,WAAW,OAAO;AACzC,eAAW,QAAQ;AACnB,QAAI;AACF,WAAM,qBAAqB,EAAE,aAAa,kBAAkB,CAAC;AAC7D,WAAM,aAAa,cAAc;AACjC,YAAO,SAAS,GAAG,EAAE;KACrB,MAAM,YAAY,kBAAkB,OAAO,IAAI;AAC/C,WAAM,OAAO,KAAK,UAAU;AAC5B,WAAM,QAAQ,2CAA2C;aAClD,KAAK;AACZ,iBAAY,QAAQ,gBAAgB,IAAI;cAChC;AACR,gBAAW,QAAQ;;AAErB;;AAGF,eAAY;AACZ,aAAU;;EAGZ,eAAe,gBAAgB;AAC7B,aAAU,QAAQ;AAClB,OAAI;AACF,iBAAa,cAAc;AAC3B,UAAM,OAAO,KAAK,cAAc;AAChC,UAAM,KAAK,+CAA+C;aAClD;AACR,cAAU,QAAQ;;;AAKtB,QACE,CAAC,iBAAiB,QAAQ,GACzB,CAAC,UAAU,eAAe;AACzB,OAAI,CAAC,aAAa,MAAM,QAAQ,SAAS,IAAI,SAAS,WAAW,EAC/D,QAAO,KAAK,kBAAkB,OAAO,IAAI,CAAC;KAG9C,EAAE,WAAW,MAAM,CACpB;;uBA1HC,mBAsBM,OAtBN,YAsBM,CArBO,MAAA,QAAO,IAAA,WAAA,EAAlB,mBAEM,OAFN,YAEM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CADJ,mBAA8C,KAAA,EAA3C,OAAM,wBAAsB,EAAC,cAAU,GAAA,CAAA,EAAA,CAAA,IAG5B,cAAA,SAAA,WAAA,EAAhB,mBAgBM,OAhBN,YAgBM,CAfJ,YAcE,yBAAA;IAbC,QAAQ,cAAA;IACR,gBAAc,YAAA;IACd,eAAa,WAAA;IACb,YAAY,WAAA;IACZ,gBAAc,YAAA;IACd,WAAW,UAAA;IACZ,gBAAa;IACb,uBAAoB;IACpB,iBAAc;IACd,4BAAyB;IACzB,cAAW;IACV,UAAQ;IACR,WAAS"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import "./useRpcAuth-CJtq1dqM.js";
|
|
2
|
+
import "./EnhancedRefreshTokenHandler-C6tZCcfX.js";
|
|
3
|
+
import "./useQueryCache-alzaRWEb.js";
|
|
4
|
+
import "./useMutation-BLNuJoYl.js";
|
|
5
|
+
import "./FieldsetSection-Cd4B8Ad7.js";
|
|
6
|
+
import "./userAuthorized-C09FHWGL.js";
|
|
7
|
+
import "./teamMetadata-DlvwO5V0.js";
|
|
8
|
+
import "./team_memberRoutes-B7Zzuuz8.js";
|
|
9
|
+
import "./teamRoutes-_-DGwLZW.js";
|
|
10
|
+
import { t as CreateTeamForm_default } from "./CreateTeamForm-CvMUbK5X.js";
|
|
11
|
+
|
|
12
|
+
export { CreateTeamForm_default as default };
|