@thunderid/react 1.7.0 → 1.8.0
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/cjs/components/admin/AgentCreate/AgentCreate.cjs +15 -4
- package/dist/cjs/components/admin/AgentCreate/AgentCreate.cjs.map +1 -1
- package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs +36 -8
- package/dist/cjs/components/admin/AgentDetails/AgentDetails.cjs.map +1 -1
- package/dist/cjs/components/admin/AgentList/AgentList.cjs +13 -4
- package/dist/cjs/components/admin/AgentList/AgentList.cjs.map +1 -1
- package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs +70 -0
- package/dist/cjs/components/admin/ApplicationCreate/ApplicationCreate.cjs.map +1 -0
- package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs +135 -0
- package/dist/cjs/components/admin/ApplicationCreate/BaseApplicationCreate.cjs.map +1 -0
- package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs +82 -0
- package/dist/cjs/components/admin/ApplicationDetails/ApplicationDetails.cjs.map +1 -0
- package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs +238 -0
- package/dist/cjs/components/admin/ApplicationDetails/BaseApplicationDetails.cjs.map +1 -0
- package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs +55 -0
- package/dist/cjs/components/admin/ApplicationList/ApplicationList.cjs.map +1 -0
- package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs +95 -0
- package/dist/cjs/components/admin/ApplicationList/BaseApplicationList.cjs.map +1 -0
- package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs +8 -2
- package/dist/cjs/components/admin/GroupCreate/GroupCreate.cjs.map +1 -1
- package/dist/cjs/components/admin/GroupList/GroupList.cjs +10 -3
- package/dist/cjs/components/admin/GroupList/GroupList.cjs.map +1 -1
- package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs +47 -10
- package/dist/cjs/components/admin/GroupMembers/GroupMembers.cjs.map +1 -1
- package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs +48 -14
- package/dist/cjs/components/admin/RoleAssignments/RoleAssignments.cjs.map +1 -1
- package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs +8 -2
- package/dist/cjs/components/admin/RoleCreate/RoleCreate.cjs.map +1 -1
- package/dist/cjs/components/admin/RoleList/RoleList.cjs +10 -3
- package/dist/cjs/components/admin/RoleList/RoleList.cjs.map +1 -1
- package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs +8 -2
- package/dist/cjs/components/admin/RolePermissions/RolePermissions.cjs.map +1 -1
- package/dist/cjs/components/admin/UserCreate/UserCreate.cjs +15 -4
- package/dist/cjs/components/admin/UserCreate/UserCreate.cjs.map +1 -1
- package/dist/cjs/components/admin/UserDetails/UserDetails.cjs +31 -8
- package/dist/cjs/components/admin/UserDetails/UserDetails.cjs.map +1 -1
- package/dist/cjs/components/admin/UserList/UserList.cjs +13 -4
- package/dist/cjs/components/admin/UserList/UserList.cjs.map +1 -1
- package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs +62 -0
- package/dist/cjs/components/admin/shared/ApplicationFormFields.cjs.map +1 -0
- package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs +49 -0
- package/dist/cjs/components/admin/shared/ClientSecretNotice.cjs.map +1 -0
- package/dist/cjs/components/auth/InviteUser/InviteUser.cjs +1 -1
- package/dist/cjs/hooks/management/useManagementEndpoint.cjs.map +1 -1
- package/dist/cjs/hooks/management/useManagementRequestConfig.cjs +41 -0
- package/dist/cjs/hooks/management/useManagementRequestConfig.cjs.map +1 -0
- package/dist/cjs/index.cjs +1066 -188
- package/dist/components/admin/AgentCreate/AgentCreate.d.ts.map +1 -1
- package/dist/components/admin/AgentCreate/AgentCreate.js +16 -5
- package/dist/components/admin/AgentCreate/AgentCreate.js.map +1 -1
- package/dist/components/admin/AgentDetails/AgentDetails.d.ts.map +1 -1
- package/dist/components/admin/AgentDetails/AgentDetails.js +37 -9
- package/dist/components/admin/AgentDetails/AgentDetails.js.map +1 -1
- package/dist/components/admin/AgentList/AgentList.d.ts.map +1 -1
- package/dist/components/admin/AgentList/AgentList.js +14 -5
- package/dist/components/admin/AgentList/AgentList.js.map +1 -1
- package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts +30 -0
- package/dist/components/admin/ApplicationCreate/ApplicationCreate.d.ts.map +1 -0
- package/dist/components/admin/ApplicationCreate/ApplicationCreate.js +66 -0
- package/dist/components/admin/ApplicationCreate/ApplicationCreate.js.map +1 -0
- package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts +80 -0
- package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.d.ts.map +1 -0
- package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js +131 -0
- package/dist/components/admin/ApplicationCreate/BaseApplicationCreate.js.map +1 -0
- package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts +50 -0
- package/dist/components/admin/ApplicationDetails/ApplicationDetails.d.ts.map +1 -0
- package/dist/components/admin/ApplicationDetails/ApplicationDetails.js +79 -0
- package/dist/components/admin/ApplicationDetails/ApplicationDetails.js.map +1 -0
- package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts +92 -0
- package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.d.ts.map +1 -0
- package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js +234 -0
- package/dist/components/admin/ApplicationDetails/BaseApplicationDetails.js.map +1 -0
- package/dist/components/admin/ApplicationList/ApplicationList.d.ts +18 -0
- package/dist/components/admin/ApplicationList/ApplicationList.d.ts.map +1 -0
- package/dist/components/admin/ApplicationList/ApplicationList.js +51 -0
- package/dist/components/admin/ApplicationList/ApplicationList.js.map +1 -0
- package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts +55 -0
- package/dist/components/admin/ApplicationList/BaseApplicationList.d.ts.map +1 -0
- package/dist/components/admin/ApplicationList/BaseApplicationList.js +93 -0
- package/dist/components/admin/ApplicationList/BaseApplicationList.js.map +1 -0
- package/dist/components/admin/GroupCreate/GroupCreate.d.ts.map +1 -1
- package/dist/components/admin/GroupCreate/GroupCreate.js +9 -3
- package/dist/components/admin/GroupCreate/GroupCreate.js.map +1 -1
- package/dist/components/admin/GroupList/GroupList.d.ts.map +1 -1
- package/dist/components/admin/GroupList/GroupList.js +11 -4
- package/dist/components/admin/GroupList/GroupList.js.map +1 -1
- package/dist/components/admin/GroupMembers/GroupMembers.d.ts.map +1 -1
- package/dist/components/admin/GroupMembers/GroupMembers.js +48 -11
- package/dist/components/admin/GroupMembers/GroupMembers.js.map +1 -1
- package/dist/components/admin/RoleAssignments/RoleAssignments.d.ts.map +1 -1
- package/dist/components/admin/RoleAssignments/RoleAssignments.js +49 -15
- package/dist/components/admin/RoleAssignments/RoleAssignments.js.map +1 -1
- package/dist/components/admin/RoleCreate/RoleCreate.d.ts.map +1 -1
- package/dist/components/admin/RoleCreate/RoleCreate.js +9 -3
- package/dist/components/admin/RoleCreate/RoleCreate.js.map +1 -1
- package/dist/components/admin/RoleList/RoleList.d.ts.map +1 -1
- package/dist/components/admin/RoleList/RoleList.js +11 -4
- package/dist/components/admin/RoleList/RoleList.js.map +1 -1
- package/dist/components/admin/RolePermissions/RolePermissions.d.ts.map +1 -1
- package/dist/components/admin/RolePermissions/RolePermissions.js +9 -3
- package/dist/components/admin/RolePermissions/RolePermissions.js.map +1 -1
- package/dist/components/admin/UserCreate/UserCreate.d.ts.map +1 -1
- package/dist/components/admin/UserCreate/UserCreate.js +16 -5
- package/dist/components/admin/UserCreate/UserCreate.js.map +1 -1
- package/dist/components/admin/UserDetails/UserDetails.d.ts.map +1 -1
- package/dist/components/admin/UserDetails/UserDetails.js +32 -9
- package/dist/components/admin/UserDetails/UserDetails.js.map +1 -1
- package/dist/components/admin/UserList/UserList.d.ts.map +1 -1
- package/dist/components/admin/UserList/UserList.js +14 -5
- package/dist/components/admin/UserList/UserList.js.map +1 -1
- package/dist/components/admin/shared/ApplicationFormFields.d.ts +35 -0
- package/dist/components/admin/shared/ApplicationFormFields.d.ts.map +1 -0
- package/dist/components/admin/shared/ApplicationFormFields.js +59 -0
- package/dist/components/admin/shared/ApplicationFormFields.js.map +1 -0
- package/dist/components/admin/shared/ClientSecretNotice.d.ts +16 -0
- package/dist/components/admin/shared/ClientSecretNotice.d.ts.map +1 -0
- package/dist/components/admin/shared/ClientSecretNotice.js +47 -0
- package/dist/components/admin/shared/ClientSecretNotice.js.map +1 -0
- package/dist/components/auth/InviteUser/InviteUser.js +1 -1
- package/dist/hooks/management/useManagementEndpoint.d.ts +5 -1
- package/dist/hooks/management/useManagementEndpoint.d.ts.map +1 -1
- package/dist/hooks/management/useManagementEndpoint.js.map +1 -1
- package/dist/hooks/management/useManagementRequestConfig.d.ts +22 -0
- package/dist/hooks/management/useManagementRequestConfig.d.ts.map +1 -0
- package/dist/hooks/management/useManagementRequestConfig.js +39 -0
- package/dist/hooks/management/useManagementRequestConfig.js.map +1 -0
- package/dist/index.d.ts +22 -55
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -41
- package/dist/models/config.d.ts +3 -4
- package/dist/models/config.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/cjs/hooks/management/agents/useCreateAgent.cjs +0 -26
- package/dist/cjs/hooks/management/agents/useCreateAgent.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useDeleteAgent.cjs +0 -26
- package/dist/cjs/hooks/management/agents/useDeleteAgent.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useGetAgent.cjs +0 -30
- package/dist/cjs/hooks/management/agents/useGetAgent.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useGetAgentGroups.cjs +0 -41
- package/dist/cjs/hooks/management/agents/useGetAgentGroups.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useGetAgentRoles.cjs +0 -42
- package/dist/cjs/hooks/management/agents/useGetAgentRoles.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useGetAgentTypes.cjs +0 -31
- package/dist/cjs/hooks/management/agents/useGetAgentTypes.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useGetAgents.cjs +0 -33
- package/dist/cjs/hooks/management/agents/useGetAgents.cjs.map +0 -1
- package/dist/cjs/hooks/management/agents/useUpdateAgent.cjs +0 -27
- package/dist/cjs/hooks/management/agents/useUpdateAgent.cjs.map +0 -1
- package/dist/cjs/hooks/management/applications/useCreateApplication.cjs +0 -31
- package/dist/cjs/hooks/management/applications/useCreateApplication.cjs.map +0 -1
- package/dist/cjs/hooks/management/applications/useDeleteApplication.cjs +0 -26
- package/dist/cjs/hooks/management/applications/useDeleteApplication.cjs.map +0 -1
- package/dist/cjs/hooks/management/applications/useGetApplication.cjs +0 -35
- package/dist/cjs/hooks/management/applications/useGetApplication.cjs.map +0 -1
- package/dist/cjs/hooks/management/applications/useGetApplications.cjs +0 -36
- package/dist/cjs/hooks/management/applications/useGetApplications.cjs.map +0 -1
- package/dist/cjs/hooks/management/applications/useUpdateApplication.cjs +0 -27
- package/dist/cjs/hooks/management/applications/useUpdateApplication.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useAddGroupMembers.cjs +0 -32
- package/dist/cjs/hooks/management/groups/useAddGroupMembers.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useCreateGroup.cjs +0 -26
- package/dist/cjs/hooks/management/groups/useCreateGroup.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useDeleteGroup.cjs +0 -30
- package/dist/cjs/hooks/management/groups/useDeleteGroup.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useGetGroup.cjs +0 -30
- package/dist/cjs/hooks/management/groups/useGetGroup.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useGetGroupMembers.cjs +0 -40
- package/dist/cjs/hooks/management/groups/useGetGroupMembers.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useGetGroups.cjs +0 -31
- package/dist/cjs/hooks/management/groups/useGetGroups.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useRemoveGroupMembers.cjs +0 -32
- package/dist/cjs/hooks/management/groups/useRemoveGroupMembers.cjs.map +0 -1
- package/dist/cjs/hooks/management/groups/useUpdateGroup.cjs +0 -31
- package/dist/cjs/hooks/management/groups/useUpdateGroup.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useAddRoleAssignments.cjs +0 -27
- package/dist/cjs/hooks/management/roles/useAddRoleAssignments.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useCreateRole.cjs +0 -26
- package/dist/cjs/hooks/management/roles/useCreateRole.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useDeleteRole.cjs +0 -26
- package/dist/cjs/hooks/management/roles/useDeleteRole.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useGetRole.cjs +0 -30
- package/dist/cjs/hooks/management/roles/useGetRole.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useGetRoleAssignments.cjs +0 -42
- package/dist/cjs/hooks/management/roles/useGetRoleAssignments.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useGetRoles.cjs +0 -31
- package/dist/cjs/hooks/management/roles/useGetRoles.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useRemoveRoleAssignments.cjs +0 -27
- package/dist/cjs/hooks/management/roles/useRemoveRoleAssignments.cjs.map +0 -1
- package/dist/cjs/hooks/management/roles/useUpdateRole.cjs +0 -27
- package/dist/cjs/hooks/management/roles/useUpdateRole.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useCreateUser.cjs +0 -26
- package/dist/cjs/hooks/management/users/useCreateUser.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useDeleteUser.cjs +0 -26
- package/dist/cjs/hooks/management/users/useDeleteUser.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useGetUser.cjs +0 -30
- package/dist/cjs/hooks/management/users/useGetUser.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useGetUserGroups.cjs +0 -41
- package/dist/cjs/hooks/management/users/useGetUserGroups.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useGetUserTypes.cjs +0 -31
- package/dist/cjs/hooks/management/users/useGetUserTypes.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useGetUsers.cjs +0 -38
- package/dist/cjs/hooks/management/users/useGetUsers.cjs.map +0 -1
- package/dist/cjs/hooks/management/users/useUpdateUser.cjs +0 -27
- package/dist/cjs/hooks/management/users/useUpdateUser.cjs.map +0 -1
- package/dist/hooks/management/agents/useCreateAgent.d.ts +0 -11
- package/dist/hooks/management/agents/useCreateAgent.d.ts.map +0 -1
- package/dist/hooks/management/agents/useCreateAgent.js +0 -24
- package/dist/hooks/management/agents/useCreateAgent.js.map +0 -1
- package/dist/hooks/management/agents/useDeleteAgent.d.ts +0 -10
- package/dist/hooks/management/agents/useDeleteAgent.d.ts.map +0 -1
- package/dist/hooks/management/agents/useDeleteAgent.js +0 -24
- package/dist/hooks/management/agents/useDeleteAgent.js.map +0 -1
- package/dist/hooks/management/agents/useGetAgent.d.ts +0 -12
- package/dist/hooks/management/agents/useGetAgent.d.ts.map +0 -1
- package/dist/hooks/management/agents/useGetAgent.js +0 -28
- package/dist/hooks/management/agents/useGetAgent.js.map +0 -1
- package/dist/hooks/management/agents/useGetAgentGroups.d.ts +0 -16
- package/dist/hooks/management/agents/useGetAgentGroups.d.ts.map +0 -1
- package/dist/hooks/management/agents/useGetAgentGroups.js +0 -39
- package/dist/hooks/management/agents/useGetAgentGroups.js.map +0 -1
- package/dist/hooks/management/agents/useGetAgentRoles.d.ts +0 -17
- package/dist/hooks/management/agents/useGetAgentRoles.d.ts.map +0 -1
- package/dist/hooks/management/agents/useGetAgentRoles.js +0 -40
- package/dist/hooks/management/agents/useGetAgentRoles.js.map +0 -1
- package/dist/hooks/management/agents/useGetAgentTypes.d.ts +0 -15
- package/dist/hooks/management/agents/useGetAgentTypes.d.ts.map +0 -1
- package/dist/hooks/management/agents/useGetAgentTypes.js +0 -29
- package/dist/hooks/management/agents/useGetAgentTypes.js.map +0 -1
- package/dist/hooks/management/agents/useGetAgents.d.ts +0 -23
- package/dist/hooks/management/agents/useGetAgents.d.ts.map +0 -1
- package/dist/hooks/management/agents/useGetAgents.js +0 -31
- package/dist/hooks/management/agents/useGetAgents.js.map +0 -1
- package/dist/hooks/management/agents/useUpdateAgent.d.ts +0 -18
- package/dist/hooks/management/agents/useUpdateAgent.d.ts.map +0 -1
- package/dist/hooks/management/agents/useUpdateAgent.js +0 -25
- package/dist/hooks/management/agents/useUpdateAgent.js.map +0 -1
- package/dist/hooks/management/applications/useCreateApplication.d.ts +0 -16
- package/dist/hooks/management/applications/useCreateApplication.d.ts.map +0 -1
- package/dist/hooks/management/applications/useCreateApplication.js +0 -29
- package/dist/hooks/management/applications/useCreateApplication.js.map +0 -1
- package/dist/hooks/management/applications/useDeleteApplication.d.ts +0 -10
- package/dist/hooks/management/applications/useDeleteApplication.d.ts.map +0 -1
- package/dist/hooks/management/applications/useDeleteApplication.js +0 -24
- package/dist/hooks/management/applications/useDeleteApplication.js.map +0 -1
- package/dist/hooks/management/applications/useGetApplication.d.ts +0 -17
- package/dist/hooks/management/applications/useGetApplication.d.ts.map +0 -1
- package/dist/hooks/management/applications/useGetApplication.js +0 -33
- package/dist/hooks/management/applications/useGetApplication.js.map +0 -1
- package/dist/hooks/management/applications/useGetApplications.d.ts +0 -24
- package/dist/hooks/management/applications/useGetApplications.d.ts.map +0 -1
- package/dist/hooks/management/applications/useGetApplications.js +0 -34
- package/dist/hooks/management/applications/useGetApplications.js.map +0 -1
- package/dist/hooks/management/applications/useUpdateApplication.d.ts +0 -18
- package/dist/hooks/management/applications/useUpdateApplication.d.ts.map +0 -1
- package/dist/hooks/management/applications/useUpdateApplication.js +0 -25
- package/dist/hooks/management/applications/useUpdateApplication.js.map +0 -1
- package/dist/hooks/management/groups/useAddGroupMembers.d.ts +0 -24
- package/dist/hooks/management/groups/useAddGroupMembers.d.ts.map +0 -1
- package/dist/hooks/management/groups/useAddGroupMembers.js +0 -30
- package/dist/hooks/management/groups/useAddGroupMembers.js.map +0 -1
- package/dist/hooks/management/groups/useCreateGroup.d.ts +0 -11
- package/dist/hooks/management/groups/useCreateGroup.d.ts.map +0 -1
- package/dist/hooks/management/groups/useCreateGroup.js +0 -24
- package/dist/hooks/management/groups/useCreateGroup.js.map +0 -1
- package/dist/hooks/management/groups/useDeleteGroup.d.ts +0 -10
- package/dist/hooks/management/groups/useDeleteGroup.d.ts.map +0 -1
- package/dist/hooks/management/groups/useDeleteGroup.js +0 -28
- package/dist/hooks/management/groups/useDeleteGroup.js.map +0 -1
- package/dist/hooks/management/groups/useGetGroup.d.ts +0 -12
- package/dist/hooks/management/groups/useGetGroup.d.ts.map +0 -1
- package/dist/hooks/management/groups/useGetGroup.js +0 -28
- package/dist/hooks/management/groups/useGetGroup.js.map +0 -1
- package/dist/hooks/management/groups/useGetGroupMembers.d.ts +0 -20
- package/dist/hooks/management/groups/useGetGroupMembers.d.ts.map +0 -1
- package/dist/hooks/management/groups/useGetGroupMembers.js +0 -38
- package/dist/hooks/management/groups/useGetGroupMembers.js.map +0 -1
- package/dist/hooks/management/groups/useGetGroups.d.ts +0 -19
- package/dist/hooks/management/groups/useGetGroups.d.ts.map +0 -1
- package/dist/hooks/management/groups/useGetGroups.js +0 -29
- package/dist/hooks/management/groups/useGetGroups.js.map +0 -1
- package/dist/hooks/management/groups/useRemoveGroupMembers.d.ts +0 -12
- package/dist/hooks/management/groups/useRemoveGroupMembers.d.ts.map +0 -1
- package/dist/hooks/management/groups/useRemoveGroupMembers.js +0 -30
- package/dist/hooks/management/groups/useRemoveGroupMembers.js.map +0 -1
- package/dist/hooks/management/groups/useUpdateGroup.d.ts +0 -24
- package/dist/hooks/management/groups/useUpdateGroup.d.ts.map +0 -1
- package/dist/hooks/management/groups/useUpdateGroup.js +0 -29
- package/dist/hooks/management/groups/useUpdateGroup.js.map +0 -1
- package/dist/hooks/management/roles/useAddRoleAssignments.d.ts +0 -24
- package/dist/hooks/management/roles/useAddRoleAssignments.d.ts.map +0 -1
- package/dist/hooks/management/roles/useAddRoleAssignments.js +0 -25
- package/dist/hooks/management/roles/useAddRoleAssignments.js.map +0 -1
- package/dist/hooks/management/roles/useCreateRole.d.ts +0 -11
- package/dist/hooks/management/roles/useCreateRole.d.ts.map +0 -1
- package/dist/hooks/management/roles/useCreateRole.js +0 -24
- package/dist/hooks/management/roles/useCreateRole.js.map +0 -1
- package/dist/hooks/management/roles/useDeleteRole.d.ts +0 -10
- package/dist/hooks/management/roles/useDeleteRole.d.ts.map +0 -1
- package/dist/hooks/management/roles/useDeleteRole.js +0 -24
- package/dist/hooks/management/roles/useDeleteRole.js.map +0 -1
- package/dist/hooks/management/roles/useGetRole.d.ts +0 -12
- package/dist/hooks/management/roles/useGetRole.d.ts.map +0 -1
- package/dist/hooks/management/roles/useGetRole.js +0 -28
- package/dist/hooks/management/roles/useGetRole.js.map +0 -1
- package/dist/hooks/management/roles/useGetRoleAssignments.d.ts +0 -24
- package/dist/hooks/management/roles/useGetRoleAssignments.d.ts.map +0 -1
- package/dist/hooks/management/roles/useGetRoleAssignments.js +0 -40
- package/dist/hooks/management/roles/useGetRoleAssignments.js.map +0 -1
- package/dist/hooks/management/roles/useGetRoles.d.ts +0 -19
- package/dist/hooks/management/roles/useGetRoles.d.ts.map +0 -1
- package/dist/hooks/management/roles/useGetRoles.js +0 -29
- package/dist/hooks/management/roles/useGetRoles.js.map +0 -1
- package/dist/hooks/management/roles/useRemoveRoleAssignments.d.ts +0 -11
- package/dist/hooks/management/roles/useRemoveRoleAssignments.d.ts.map +0 -1
- package/dist/hooks/management/roles/useRemoveRoleAssignments.js +0 -25
- package/dist/hooks/management/roles/useRemoveRoleAssignments.js.map +0 -1
- package/dist/hooks/management/roles/useUpdateRole.d.ts +0 -24
- package/dist/hooks/management/roles/useUpdateRole.d.ts.map +0 -1
- package/dist/hooks/management/roles/useUpdateRole.js +0 -25
- package/dist/hooks/management/roles/useUpdateRole.js.map +0 -1
- package/dist/hooks/management/users/useCreateUser.d.ts +0 -11
- package/dist/hooks/management/users/useCreateUser.d.ts.map +0 -1
- package/dist/hooks/management/users/useCreateUser.js +0 -24
- package/dist/hooks/management/users/useCreateUser.js.map +0 -1
- package/dist/hooks/management/users/useDeleteUser.d.ts +0 -10
- package/dist/hooks/management/users/useDeleteUser.d.ts.map +0 -1
- package/dist/hooks/management/users/useDeleteUser.js +0 -24
- package/dist/hooks/management/users/useDeleteUser.js.map +0 -1
- package/dist/hooks/management/users/useGetUser.d.ts +0 -12
- package/dist/hooks/management/users/useGetUser.d.ts.map +0 -1
- package/dist/hooks/management/users/useGetUser.js +0 -28
- package/dist/hooks/management/users/useGetUser.js.map +0 -1
- package/dist/hooks/management/users/useGetUserGroups.d.ts +0 -16
- package/dist/hooks/management/users/useGetUserGroups.d.ts.map +0 -1
- package/dist/hooks/management/users/useGetUserGroups.js +0 -39
- package/dist/hooks/management/users/useGetUserGroups.js.map +0 -1
- package/dist/hooks/management/users/useGetUserTypes.d.ts +0 -15
- package/dist/hooks/management/users/useGetUserTypes.d.ts.map +0 -1
- package/dist/hooks/management/users/useGetUserTypes.js +0 -29
- package/dist/hooks/management/users/useGetUserTypes.js.map +0 -1
- package/dist/hooks/management/users/useGetUsers.d.ts +0 -17
- package/dist/hooks/management/users/useGetUsers.d.ts.map +0 -1
- package/dist/hooks/management/users/useGetUsers.js +0 -36
- package/dist/hooks/management/users/useGetUsers.js.map +0 -1
- package/dist/hooks/management/users/useUpdateUser.d.ts +0 -18
- package/dist/hooks/management/users/useUpdateUser.d.ts.map +0 -1
- package/dist/hooks/management/users/useUpdateUser.js +0 -25
- package/dist/hooks/management/users/useUpdateUser.js.map +0 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
3
|
+
const require_Spinner = require('../../primitives/Spinner/Spinner.cjs');
|
|
4
|
+
const require_Button = require('../../primitives/Button/Button.cjs');
|
|
5
|
+
const require_Alert = require('../../primitives/Alert/Alert.cjs');
|
|
6
|
+
const require_CopyableText = require('../../primitives/CopyableText/CopyableText.cjs');
|
|
7
|
+
const require_useAdminPartStyles = require('../shared/useAdminPartStyles.cjs');
|
|
8
|
+
const require_AdminSection = require('../shared/AdminSection.cjs');
|
|
9
|
+
const require_AdminParts = require('../shared/AdminParts.cjs');
|
|
10
|
+
const require_ApplicationFormFields = require('../shared/ApplicationFormFields.cjs');
|
|
11
|
+
const require_ClientSecretNotice = require('../shared/ClientSecretNotice.cjs');
|
|
12
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
13
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
14
|
+
let react = require("react");
|
|
15
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
16
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
17
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
18
|
+
|
|
19
|
+
//#region src/components/admin/ApplicationDetails/BaseApplicationDetails.tsx
|
|
20
|
+
const toFormValues = (application, oauth) => ({
|
|
21
|
+
description: application.description ?? "",
|
|
22
|
+
grantTypes: oauth?.grantTypes ?? [],
|
|
23
|
+
logoUrl: application.logoUrl ?? "",
|
|
24
|
+
name: application.name,
|
|
25
|
+
publicClient: Boolean(oauth?.publicClient),
|
|
26
|
+
redirectUris: (oauth?.redirectUris ?? []).join(", "),
|
|
27
|
+
url: application.url ?? ""
|
|
28
|
+
});
|
|
29
|
+
const toSubmission = (values) => ({
|
|
30
|
+
description: values.description.trim() || void 0,
|
|
31
|
+
grantTypes: values.grantTypes,
|
|
32
|
+
logoUrl: values.logoUrl.trim() || void 0,
|
|
33
|
+
name: values.name.trim(),
|
|
34
|
+
publicClient: values.publicClient,
|
|
35
|
+
redirectUris: (0, __thunderid_browser.parseRedirectUris)(values.redirectUris),
|
|
36
|
+
url: values.url.trim() || void 0
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Shows an application's general fields and OAuth configuration. Holds no data of its own: pass the
|
|
40
|
+
* application and handle editing, deletion and client secret regeneration, each offered only when its
|
|
41
|
+
* handler is set.
|
|
42
|
+
*/
|
|
43
|
+
const BaseApplicationDetails = ({ actions, application, children, className, clientSecret = null, error = null, isDeleting = false, isLoading = false, isRegeneratingSecret = false, isUpdating = false, onDelete, onRegenerateSecret, onSecretDismiss, onUpdate, preferences }) => {
|
|
44
|
+
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
45
|
+
const styles = require_useAdminPartStyles.default();
|
|
46
|
+
const [draft, setDraft] = (0, react.useState)(null);
|
|
47
|
+
const oauthConfig = (0, __thunderid_browser.getApplicationOAuthConfig)(application);
|
|
48
|
+
const isWritable = Boolean(application) && !application?.isReadOnly;
|
|
49
|
+
const canRegenerate = isWritable && Boolean(oauthConfig) && !oauthConfig?.publicClient;
|
|
50
|
+
if (children) {
|
|
51
|
+
let oauth;
|
|
52
|
+
if (oauthConfig) {
|
|
53
|
+
const { clientSecret: storedSecret,...rest } = oauthConfig;
|
|
54
|
+
oauth = rest;
|
|
55
|
+
}
|
|
56
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
57
|
+
className,
|
|
58
|
+
children: children({
|
|
59
|
+
application,
|
|
60
|
+
clientSecret,
|
|
61
|
+
error,
|
|
62
|
+
isDeleting,
|
|
63
|
+
isLoading,
|
|
64
|
+
isRegeneratingSecret,
|
|
65
|
+
isUpdating,
|
|
66
|
+
oauth,
|
|
67
|
+
onDelete: isWritable ? onDelete : void 0,
|
|
68
|
+
onRegenerateSecret: canRegenerate ? onRegenerateSecret : void 0,
|
|
69
|
+
onSecretDismiss: clientSecret ? onSecretDismiss : void 0,
|
|
70
|
+
onUpdate: isWritable ? onUpdate : void 0
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (isLoading && !application) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminSection.default, {
|
|
75
|
+
block: "application-details",
|
|
76
|
+
className,
|
|
77
|
+
preferences,
|
|
78
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
79
|
+
className: styles["muted"],
|
|
80
|
+
role: "status",
|
|
81
|
+
children: [
|
|
82
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Spinner.default, { size: "small" }),
|
|
83
|
+
" ",
|
|
84
|
+
t("admin.common.loading")
|
|
85
|
+
]
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
if (!application) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminSection.default, {
|
|
89
|
+
block: "application-details",
|
|
90
|
+
className,
|
|
91
|
+
preferences,
|
|
92
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Alert.default, {
|
|
93
|
+
variant: "error",
|
|
94
|
+
role: "alert",
|
|
95
|
+
children: error ?? t("admin.common.errors.not_found")
|
|
96
|
+
})
|
|
97
|
+
});
|
|
98
|
+
const notSet = t("admin.applications.details.not_set");
|
|
99
|
+
const overview = [
|
|
100
|
+
{
|
|
101
|
+
label: t("admin.applications.list.columns.client_id"),
|
|
102
|
+
value: oauthConfig?.clientId ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CopyableText.default, { value: oauthConfig.clientId }) : notSet
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
label: t("admin.applications.details.type"),
|
|
106
|
+
value: application.type ?? application.template ?? notSet
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
label: t("admin.common.columns.organization_unit"),
|
|
110
|
+
value: application.ouId ?? notSet
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
label: t("admin.applications.fields.url"),
|
|
114
|
+
value: application.url ?? notSet
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
label: t("admin.applications.fields.logo_url"),
|
|
118
|
+
value: application.logoUrl ?? notSet
|
|
119
|
+
}
|
|
120
|
+
];
|
|
121
|
+
const handleSave = (event) => {
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
if (!draft) return;
|
|
124
|
+
const { publicClient,...submission } = toSubmission(draft);
|
|
125
|
+
onUpdate?.(submission);
|
|
126
|
+
setDraft(null);
|
|
127
|
+
};
|
|
128
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_AdminSection.default, {
|
|
129
|
+
block: "application-details",
|
|
130
|
+
className,
|
|
131
|
+
title: application.name,
|
|
132
|
+
description: application.description,
|
|
133
|
+
preferences,
|
|
134
|
+
actions: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [actions, onDelete && isWritable && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ConfirmButton, {
|
|
135
|
+
confirmText: t("admin.applications.details.delete.confirm", { name: application.name }),
|
|
136
|
+
isLoading: isDeleting,
|
|
137
|
+
onConfirm: onDelete,
|
|
138
|
+
children: t("admin.applications.details.delete.action")
|
|
139
|
+
})] }),
|
|
140
|
+
children: [error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Alert.default, {
|
|
141
|
+
variant: "error",
|
|
142
|
+
role: "alert",
|
|
143
|
+
children: error
|
|
144
|
+
}), draft ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.Panel, {
|
|
145
|
+
title: t("admin.applications.details.edit.action"),
|
|
146
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
|
|
147
|
+
className: styles["row"],
|
|
148
|
+
style: {
|
|
149
|
+
alignItems: "stretch",
|
|
150
|
+
flexDirection: "column"
|
|
151
|
+
},
|
|
152
|
+
onSubmit: handleSave,
|
|
153
|
+
noValidate: true,
|
|
154
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ApplicationFormFields.default, {
|
|
155
|
+
preferences,
|
|
156
|
+
values: draft,
|
|
157
|
+
onInputChange: (field, value) => setDraft((previous) => previous && {
|
|
158
|
+
...previous,
|
|
159
|
+
[field]: value
|
|
160
|
+
}),
|
|
161
|
+
onGrantTypesChange: (grantTypes) => setDraft((previous) => previous && {
|
|
162
|
+
...previous,
|
|
163
|
+
grantTypes
|
|
164
|
+
})
|
|
165
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
166
|
+
className: styles["row"],
|
|
167
|
+
style: { justifyContent: "flex-end" },
|
|
168
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
|
|
169
|
+
type: "button",
|
|
170
|
+
variant: "text",
|
|
171
|
+
disabled: isUpdating,
|
|
172
|
+
onClick: () => setDraft(null),
|
|
173
|
+
children: t("admin.common.actions.cancel")
|
|
174
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
|
|
175
|
+
type: "submit",
|
|
176
|
+
loading: isUpdating,
|
|
177
|
+
disabled: isUpdating || !(0, __thunderid_browser.isApplicationSubmissionValid)(toSubmission(draft)),
|
|
178
|
+
children: t("admin.applications.details.edit.save")
|
|
179
|
+
})]
|
|
180
|
+
})]
|
|
181
|
+
})
|
|
182
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.Panel, {
|
|
183
|
+
title: t("admin.applications.details.overview"),
|
|
184
|
+
actions: onUpdate && isWritable ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.default, {
|
|
185
|
+
variant: "outline",
|
|
186
|
+
size: "small",
|
|
187
|
+
onClick: () => setDraft(toFormValues(application, oauthConfig)),
|
|
188
|
+
children: t("admin.applications.details.edit.action")
|
|
189
|
+
}) : void 0,
|
|
190
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.DetailList, { items: overview })
|
|
191
|
+
}), oauthConfig && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_AdminParts.Panel, {
|
|
192
|
+
title: t("admin.applications.details.oauth"),
|
|
193
|
+
actions: onRegenerateSecret && canRegenerate && !clientSecret ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ConfirmButton, {
|
|
194
|
+
confirmText: t("admin.applications.details.secret.confirm", { name: application.name }),
|
|
195
|
+
isLoading: isRegeneratingSecret,
|
|
196
|
+
onConfirm: onRegenerateSecret,
|
|
197
|
+
children: t("admin.applications.details.secret.action")
|
|
198
|
+
}) : void 0,
|
|
199
|
+
children: [clientSecret && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ClientSecretNotice.default, {
|
|
200
|
+
secret: clientSecret,
|
|
201
|
+
onDismiss: onSecretDismiss,
|
|
202
|
+
preferences
|
|
203
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.DetailList, { items: [
|
|
204
|
+
{
|
|
205
|
+
label: t("admin.applications.fields.grant_types"),
|
|
206
|
+
value: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ChipList, {
|
|
207
|
+
label: t("admin.applications.fields.grant_types"),
|
|
208
|
+
emptyText: t("admin.applications.details.no_grant_types"),
|
|
209
|
+
items: (oauthConfig.grantTypes ?? []).map((grantType) => ({
|
|
210
|
+
id: grantType,
|
|
211
|
+
label: __thunderid_browser.APPLICATION_GRANT_TYPES.includes(grantType) ? t(`admin.applications.grant_types.${grantType}`) : grantType
|
|
212
|
+
}))
|
|
213
|
+
})
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
label: t("admin.applications.fields.redirect_uris"),
|
|
217
|
+
value: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminParts.ChipList, {
|
|
218
|
+
label: t("admin.applications.fields.redirect_uris"),
|
|
219
|
+
emptyText: t("admin.applications.details.no_redirect_uris"),
|
|
220
|
+
items: (oauthConfig.redirectUris ?? []).map((uri) => ({
|
|
221
|
+
id: uri,
|
|
222
|
+
label: uri
|
|
223
|
+
}))
|
|
224
|
+
})
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
label: t("admin.applications.details.public_client"),
|
|
228
|
+
value: oauthConfig.publicClient ? t("admin.applications.details.yes") : t("admin.applications.details.no")
|
|
229
|
+
}
|
|
230
|
+
] })]
|
|
231
|
+
})] })]
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
var BaseApplicationDetails_default = BaseApplicationDetails;
|
|
235
|
+
|
|
236
|
+
//#endregion
|
|
237
|
+
exports.default = BaseApplicationDetails_default;
|
|
238
|
+
//# sourceMappingURL=BaseApplicationDetails.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseApplicationDetails.cjs","names":["BaseApplicationDetails: FC<BaseApplicationDetailsProps>","useTranslation","styles: Record<string, string>","useAdminPartStyles","oauthConfig: OAuth2Config | undefined","isWritable: boolean","canRegenerate: boolean","oauth: Omit<OAuth2Config, 'clientSecret'> | undefined","AdminSection","Spinner","Alert","notSet: string","overview: DetailListItem[]","CopyableText","ConfirmButton","Panel","ApplicationFormFields","Button","DetailList","ClientSecretNotice","ChipList","APPLICATION_GRANT_TYPES"],"sources":["../../../../../src/components/admin/ApplicationDetails/BaseApplicationDetails.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n Application,\n APPLICATION_GRANT_TYPES,\n ApplicationSubmission,\n getApplicationOAuthConfig,\n isApplicationSubmissionValid,\n OAuth2Config,\n parseRedirectUris,\n Preferences,\n} from '@thunderid/browser';\nimport {FC, FormEvent, ReactElement, ReactNode, useState} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport Alert from '../../primitives/Alert/Alert';\nimport Button from '../../primitives/Button/Button';\nimport CopyableText from '../../primitives/CopyableText/CopyableText';\nimport Spinner from '../../primitives/Spinner/Spinner';\nimport {ChipList, ConfirmButton, DetailList, DetailListItem, Panel} from '../shared/AdminParts';\nimport AdminSection from '../shared/AdminSection';\nimport ApplicationFormFields, {ApplicationFormValues, ApplicationTextField} from '../shared/ApplicationFormFields';\nimport ClientSecretNotice from '../shared/ClientSecretNotice';\nimport useAdminPartStyles from '../shared/useAdminPartStyles';\n\n/**\n * The edited fields {@link BaseApplicationDetails} hands `onUpdate`. Whether the client is public does\n * not change.\n */\nexport type ApplicationUpdateSubmission = Omit<ApplicationSubmission, 'publicClient'>;\n\n/**\n * What {@link BaseApplicationDetails} hands its `children` render function, so the application can be\n * shown with any UI.\n */\nexport interface BaseApplicationDetailsRenderProps {\n application?: Application;\n /**\n * The new client secret, to show once. `null` while there is none.\n */\n clientSecret: string | null;\n error: string | null;\n isDeleting: boolean;\n isLoading: boolean;\n isRegeneratingSecret: boolean;\n isUpdating: boolean;\n /**\n * The application's OAuth configuration, without its client secret. Undefined when it has no OAuth client.\n */\n oauth?: Omit<OAuth2Config, 'clientSecret'>;\n /**\n * Deletes the application. Undefined when deletion is not allowed, including for read-only applications.\n */\n onDelete?: () => void;\n /**\n * Gives the application a new client secret. Undefined when not allowed, for read-only applications\n * and for applications without a confidential OAuth client.\n */\n onRegenerateSecret?: () => void;\n /**\n * Hides the new client secret once it has been copied. Undefined while there is no secret.\n */\n onSecretDismiss?: () => void;\n /**\n * Saves edited fields. Undefined when editing is not allowed, including for read-only applications.\n */\n onUpdate?: (application: ApplicationUpdateSubmission) => void;\n}\n\nexport interface BaseApplicationDetailsProps {\n /**\n * Controls rendered next to the application's name.\n */\n actions?: ReactNode;\n application?: Application;\n /**\n * Renders custom UI in place of the default view. Receives the application, its OAuth configuration,\n * the loading and error state, the actions the app allows and the new client secret to show.\n */\n children?: (props: BaseApplicationDetailsRenderProps) => ReactNode;\n className?: string;\n /**\n * A client secret just generated by `onRegenerateSecret`, shown once until `onSecretDismiss` clears it.\n */\n clientSecret?: string | null;\n error?: string | null;\n isDeleting?: boolean;\n isLoading?: boolean;\n isRegeneratingSecret?: boolean;\n isUpdating?: boolean;\n /**\n * Deletes the application. The delete action is hidden when omitted.\n */\n onDelete?: () => void;\n /**\n * Gives the application a new client secret. The regenerate action is hidden when omitted, and for\n * public clients, which have no secret.\n */\n onRegenerateSecret?: () => void;\n /**\n * Called when the user has copied the new client secret.\n */\n onSecretDismiss?: () => void;\n /**\n * Saves the edited general fields, redirect URIs and grant types. Editing is offered only when set.\n */\n onUpdate?: (application: ApplicationUpdateSubmission) => void;\n preferences?: Preferences;\n}\n\nconst toFormValues = (application: Application, oauth?: OAuth2Config): ApplicationFormValues => ({\n description: application.description ?? '',\n grantTypes: oauth?.grantTypes ?? [],\n logoUrl: application.logoUrl ?? '',\n name: application.name,\n publicClient: Boolean(oauth?.publicClient),\n redirectUris: (oauth?.redirectUris ?? []).join(', '),\n url: application.url ?? '',\n});\n\nconst toSubmission = (values: ApplicationFormValues): ApplicationSubmission => ({\n description: values.description.trim() || undefined,\n grantTypes: values.grantTypes,\n logoUrl: values.logoUrl.trim() || undefined,\n name: values.name.trim(),\n publicClient: values.publicClient,\n redirectUris: parseRedirectUris(values.redirectUris),\n url: values.url.trim() || undefined,\n});\n\n/**\n * Shows an application's general fields and OAuth configuration. Holds no data of its own: pass the\n * application and handle editing, deletion and client secret regeneration, each offered only when its\n * handler is set.\n */\nconst BaseApplicationDetails: FC<BaseApplicationDetailsProps> = ({\n actions,\n application,\n children,\n className,\n clientSecret = null,\n error = null,\n isDeleting = false,\n isLoading = false,\n isRegeneratingSecret = false,\n isUpdating = false,\n onDelete,\n onRegenerateSecret,\n onSecretDismiss,\n onUpdate,\n preferences,\n}: BaseApplicationDetailsProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const styles: Record<string, string> = useAdminPartStyles();\n const [draft, setDraft] = useState<ApplicationFormValues | null>(null);\n\n const oauthConfig: OAuth2Config | undefined = getApplicationOAuthConfig(application);\n const isWritable: boolean = Boolean(application) && !application?.isReadOnly;\n const canRegenerate: boolean = isWritable && Boolean(oauthConfig) && !oauthConfig?.publicClient;\n\n if (children) {\n let oauth: Omit<OAuth2Config, 'clientSecret'> | undefined;\n\n if (oauthConfig) {\n const {clientSecret: storedSecret, ...rest}: OAuth2Config = oauthConfig;\n void storedSecret;\n oauth = rest;\n }\n\n return (\n <div className={className}>\n {children({\n application,\n clientSecret,\n error,\n isDeleting,\n isLoading,\n isRegeneratingSecret,\n isUpdating,\n oauth,\n onDelete: isWritable ? onDelete : undefined,\n onRegenerateSecret: canRegenerate ? onRegenerateSecret : undefined,\n onSecretDismiss: clientSecret ? onSecretDismiss : undefined,\n onUpdate: isWritable ? onUpdate : undefined,\n })}\n </div>\n );\n }\n\n if (isLoading && !application) {\n return (\n <AdminSection block=\"application-details\" className={className} preferences={preferences}>\n <span className={styles['muted']} role=\"status\">\n <Spinner size=\"small\" /> {t('admin.common.loading')}\n </span>\n </AdminSection>\n );\n }\n\n if (!application) {\n return (\n <AdminSection block=\"application-details\" className={className} preferences={preferences}>\n <Alert variant=\"error\" role=\"alert\">\n {error ?? t('admin.common.errors.not_found')}\n </Alert>\n </AdminSection>\n );\n }\n\n const notSet: string = t('admin.applications.details.not_set');\n const overview: DetailListItem[] = [\n {\n label: t('admin.applications.list.columns.client_id'),\n value: oauthConfig?.clientId ? <CopyableText value={oauthConfig.clientId} /> : notSet,\n },\n {label: t('admin.applications.details.type'), value: application.type ?? application.template ?? notSet},\n {label: t('admin.common.columns.organization_unit'), value: application.ouId ?? notSet},\n {label: t('admin.applications.fields.url'), value: application.url ?? notSet},\n {label: t('admin.applications.fields.logo_url'), value: application.logoUrl ?? notSet},\n ];\n\n const handleSave = (event: FormEvent<HTMLFormElement>): void => {\n event.preventDefault();\n\n if (!draft) {\n return;\n }\n\n const {publicClient, ...submission}: ApplicationSubmission = toSubmission(draft);\n void publicClient;\n onUpdate?.(submission);\n setDraft(null);\n };\n\n return (\n <AdminSection\n block=\"application-details\"\n className={className}\n title={application.name}\n description={application.description}\n preferences={preferences}\n actions={\n <>\n {actions}\n {onDelete && isWritable && (\n <ConfirmButton\n confirmText={t('admin.applications.details.delete.confirm', {name: application.name})}\n isLoading={isDeleting}\n onConfirm={onDelete}\n >\n {t('admin.applications.details.delete.action')}\n </ConfirmButton>\n )}\n </>\n }\n >\n {error && (\n <Alert variant=\"error\" role=\"alert\">\n {error}\n </Alert>\n )}\n {draft ? (\n <Panel title={t('admin.applications.details.edit.action')}>\n <form\n className={styles['row']}\n style={{alignItems: 'stretch', flexDirection: 'column'}}\n onSubmit={handleSave}\n noValidate\n >\n <ApplicationFormFields\n preferences={preferences}\n values={draft}\n onInputChange={(field: ApplicationTextField, value: string): void =>\n setDraft((previous: ApplicationFormValues | null) => previous && {...previous, [field]: value})\n }\n onGrantTypesChange={(grantTypes: string[]): void =>\n setDraft((previous: ApplicationFormValues | null) => previous && {...previous, grantTypes})\n }\n />\n <div className={styles['row']} style={{justifyContent: 'flex-end'}}>\n <Button type=\"button\" variant=\"text\" disabled={isUpdating} onClick={(): void => setDraft(null)}>\n {t('admin.common.actions.cancel')}\n </Button>\n <Button\n type=\"submit\"\n loading={isUpdating}\n disabled={isUpdating || !isApplicationSubmissionValid(toSubmission(draft))}\n >\n {t('admin.applications.details.edit.save')}\n </Button>\n </div>\n </form>\n </Panel>\n ) : (\n <>\n <Panel\n title={t('admin.applications.details.overview')}\n actions={\n onUpdate && isWritable ? (\n <Button\n variant=\"outline\"\n size=\"small\"\n onClick={(): void => setDraft(toFormValues(application, oauthConfig))}\n >\n {t('admin.applications.details.edit.action')}\n </Button>\n ) : undefined\n }\n >\n <DetailList items={overview} />\n </Panel>\n {oauthConfig && (\n <Panel\n title={t('admin.applications.details.oauth')}\n actions={\n onRegenerateSecret && canRegenerate && !clientSecret ? (\n <ConfirmButton\n confirmText={t('admin.applications.details.secret.confirm', {name: application.name})}\n isLoading={isRegeneratingSecret}\n onConfirm={onRegenerateSecret}\n >\n {t('admin.applications.details.secret.action')}\n </ConfirmButton>\n ) : undefined\n }\n >\n {clientSecret && (\n <ClientSecretNotice secret={clientSecret} onDismiss={onSecretDismiss} preferences={preferences} />\n )}\n <DetailList\n items={[\n {\n label: t('admin.applications.fields.grant_types'),\n value: (\n <ChipList\n label={t('admin.applications.fields.grant_types')}\n emptyText={t('admin.applications.details.no_grant_types')}\n items={(oauthConfig.grantTypes ?? []).map((grantType: string) => ({\n id: grantType,\n label: APPLICATION_GRANT_TYPES.includes(grantType)\n ? t(`admin.applications.grant_types.${grantType}`)\n : grantType,\n }))}\n />\n ),\n },\n {\n label: t('admin.applications.fields.redirect_uris'),\n value: (\n <ChipList\n label={t('admin.applications.fields.redirect_uris')}\n emptyText={t('admin.applications.details.no_redirect_uris')}\n items={(oauthConfig.redirectUris ?? []).map((uri: string) => ({id: uri, label: uri}))}\n />\n ),\n },\n {\n label: t('admin.applications.details.public_client'),\n value: oauthConfig.publicClient\n ? t('admin.applications.details.yes')\n : t('admin.applications.details.no'),\n },\n ]}\n />\n </Panel>\n )}\n </>\n )}\n </AdminSection>\n );\n};\n\nexport default BaseApplicationDetails;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
3
|
+
const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
|
|
4
|
+
const require_useResourceQuery = require('../../../hooks/management/useResourceQuery.cjs');
|
|
5
|
+
const require_BaseApplicationList = require('./BaseApplicationList.cjs');
|
|
6
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
7
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
8
|
+
let react = require("react");
|
|
9
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
10
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
11
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
12
|
+
|
|
13
|
+
//#region src/components/admin/ApplicationList/ApplicationList.tsx
|
|
14
|
+
/**
|
|
15
|
+
* Lists the applications the signed-in user is allowed to see, a page at a time.
|
|
16
|
+
*
|
|
17
|
+
* The server guards applications with the root `system` permission, for reading and for changes alike;
|
|
18
|
+
* it defines no application-specific permission. Gate the view and its actions on it with
|
|
19
|
+
* `useGrantedPermissions().can('system')`.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <ApplicationList onSelect={(application) => setSelectedApplicationId(application.id)} />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
const ApplicationList = ({ limit = 20, preferences,...rest }) => {
|
|
27
|
+
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
28
|
+
const [offset, setOffset] = (0, react.useState)(0);
|
|
29
|
+
const endpoint = require_useManagementEndpoint.default("applications");
|
|
30
|
+
const { data, error, isLoading } = require_useResourceQuery.default([__thunderid_browser.ApplicationQueryKeys.APPLICATIONS, {
|
|
31
|
+
limit,
|
|
32
|
+
offset
|
|
33
|
+
}], (fetcher) => (0, __thunderid_browser.getApplications)({
|
|
34
|
+
...endpoint,
|
|
35
|
+
fetcher,
|
|
36
|
+
limit,
|
|
37
|
+
offset
|
|
38
|
+
}));
|
|
39
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseApplicationList.default, {
|
|
40
|
+
applications: data?.applications ?? [],
|
|
41
|
+
totalResults: data?.totalResults,
|
|
42
|
+
isLoading,
|
|
43
|
+
error: (0, __thunderid_browser.toManagementErrorMessage)(t, error, "admin.applications.list.error"),
|
|
44
|
+
limit,
|
|
45
|
+
offset,
|
|
46
|
+
onPageChange: setOffset,
|
|
47
|
+
preferences,
|
|
48
|
+
...rest
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
var ApplicationList_default = ApplicationList;
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
exports.default = ApplicationList_default;
|
|
55
|
+
//# sourceMappingURL=ApplicationList.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationList.cjs","names":["ApplicationList: FC<ApplicationListProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","ApplicationQueryKeys","BaseApplicationList"],"sources":["../../../../../src/components/admin/ApplicationList/ApplicationList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n ApplicationListResponse,\n ApplicationQueryKeys,\n getApplications,\n toManagementErrorMessage,\n} from '@thunderid/browser';\nimport {FC, ReactElement, useState} from 'react';\nimport BaseApplicationList, {BaseApplicationListProps} from './BaseApplicationList';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type ApplicationListProps = Omit<\n BaseApplicationListProps,\n 'applications' | 'error' | 'isLoading' | 'offset' | 'onPageChange' | 'totalResults'\n>;\n\n/**\n * Lists the applications the signed-in user is allowed to see, a page at a time.\n *\n * The server guards applications with the root `system` permission, for reading and for changes alike;\n * it defines no application-specific permission. Gate the view and its actions on it with\n * `useGrantedPermissions().can('system')`.\n *\n * @example\n * ```tsx\n * <ApplicationList onSelect={(application) => setSelectedApplicationId(application.id)} />\n * ```\n */\nconst ApplicationList: FC<ApplicationListProps> = ({\n limit = 20,\n preferences,\n ...rest\n}: ApplicationListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const [offset, setOffset] = useState<number>(0);\n const endpoint: ManagementEndpoint = useManagementEndpoint('applications');\n const {data, error, isLoading}: ResourceQueryResult<ApplicationListResponse> = useResourceQuery(\n [ApplicationQueryKeys.APPLICATIONS, {limit, offset}],\n (fetcher) => getApplications({...endpoint, fetcher, limit, offset}),\n );\n\n return (\n <BaseApplicationList\n applications={data?.applications ?? []}\n totalResults={data?.totalResults}\n isLoading={isLoading}\n error={toManagementErrorMessage(t, error, 'admin.applications.list.error')}\n limit={limit}\n offset={offset}\n onPageChange={setOffset}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default ApplicationList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,MAAMA,mBAA6C,EACjD,QAAQ,IACR,YACA,GAAG,WACqC;CACxC,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,QAAQ,iCAA8B,EAAE;CAC/C,MAAMC,WAA+BC,sCAAsB,eAAe;CAC1E,MAAM,EAAC,MAAM,OAAO,cAA2DC,iCAC7E,CAACC,yCAAqB,cAAc;EAAC;EAAO;EAAO,CAAC,GACnD,qDAA4B;EAAC,GAAG;EAAU;EAAS;EAAO;EAAO,CAAC,CACpE;AAED,QACE,2CAACC;EACC,cAAc,MAAM,gBAAgB,EAAE;EACtC,cAAc,MAAM;EACT;EACX,yDAAgC,GAAG,OAAO,gCAAgC;EACnE;EACC;EACR,cAAc;EACD;EACb,GAAI;GACJ;;AAIN,8BAAe"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
3
|
+
const require_DataTable = require('../../primitives/DataTable/DataTable.cjs');
|
|
4
|
+
const require_AdminSection = require('../shared/AdminSection.cjs');
|
|
5
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
|
+
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
7
|
+
|
|
8
|
+
//#region src/components/admin/ApplicationList/BaseApplicationList.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The translated access status of an application, or its raw value when the status is one this SDK
|
|
11
|
+
* does not know.
|
|
12
|
+
*/
|
|
13
|
+
const getStatusLabel = (application, t) => {
|
|
14
|
+
const value = application.status?.value;
|
|
15
|
+
switch (value?.toUpperCase()) {
|
|
16
|
+
case "ACTIVE": return t("admin.applications.status.active");
|
|
17
|
+
case "SUSPENDED": return t("admin.applications.status.suspended");
|
|
18
|
+
default: return value ?? "";
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Lists applications with their client identifier, type and, when the server reports it, access status. Holds no data of its own: pass the page
|
|
23
|
+
* of applications and handle selection and pagination.
|
|
24
|
+
*/
|
|
25
|
+
const BaseApplicationList = ({ actions, applications, children, className, description, error = null, isLoading = false, limit = 20, offset = 0, onPageChange, onSelect, preferences, selectedApplicationId, title, totalResults }) => {
|
|
26
|
+
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
27
|
+
const columns = [
|
|
28
|
+
{
|
|
29
|
+
header: t("admin.applications.list.columns.name"),
|
|
30
|
+
id: "name",
|
|
31
|
+
render: (application) => application.name
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
header: t("admin.applications.list.columns.client_id"),
|
|
35
|
+
id: "clientId",
|
|
36
|
+
render: (application) => application.clientId ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: application.clientId }) : null
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
header: t("admin.applications.list.columns.type"),
|
|
40
|
+
id: "type",
|
|
41
|
+
render: (application) => application.type ?? application.template ?? ""
|
|
42
|
+
},
|
|
43
|
+
...applications.some((application) => application.status?.value) ? [{
|
|
44
|
+
header: t("admin.applications.list.columns.status"),
|
|
45
|
+
id: "status",
|
|
46
|
+
render: (application) => getStatusLabel(application, t)
|
|
47
|
+
}] : []
|
|
48
|
+
];
|
|
49
|
+
if (children) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
50
|
+
className,
|
|
51
|
+
children: children({
|
|
52
|
+
applications,
|
|
53
|
+
columns,
|
|
54
|
+
error,
|
|
55
|
+
isLoading,
|
|
56
|
+
limit,
|
|
57
|
+
offset,
|
|
58
|
+
onPageChange,
|
|
59
|
+
onSelect,
|
|
60
|
+
rows: applications,
|
|
61
|
+
selectedRowId: selectedApplicationId,
|
|
62
|
+
totalResults: totalResults ?? applications.length
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_AdminSection.default, {
|
|
66
|
+
block: "application-list",
|
|
67
|
+
className,
|
|
68
|
+
title: title ?? t("admin.applications.list.title"),
|
|
69
|
+
description,
|
|
70
|
+
actions,
|
|
71
|
+
preferences,
|
|
72
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DataTable.default, {
|
|
73
|
+
caption: title?.length ? title : t("admin.applications.list.title"),
|
|
74
|
+
columns,
|
|
75
|
+
rows: applications,
|
|
76
|
+
getRowId: (application) => application.id,
|
|
77
|
+
isLoading,
|
|
78
|
+
error,
|
|
79
|
+
emptyText: t("admin.applications.list.empty"),
|
|
80
|
+
onRowClick: onSelect,
|
|
81
|
+
selectedRowId: selectedApplicationId,
|
|
82
|
+
pagination: onPageChange ? {
|
|
83
|
+
limit,
|
|
84
|
+
offset,
|
|
85
|
+
onChange: onPageChange,
|
|
86
|
+
total: totalResults ?? applications.length
|
|
87
|
+
} : void 0
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
var BaseApplicationList_default = BaseApplicationList;
|
|
92
|
+
|
|
93
|
+
//#endregion
|
|
94
|
+
exports.default = BaseApplicationList_default;
|
|
95
|
+
//# sourceMappingURL=BaseApplicationList.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseApplicationList.cjs","names":["value: string | undefined","BaseApplicationList: FC<BaseApplicationListProps>","useTranslation","columns: DataTableColumn<BasicApplication>[]","AdminSection","DataTable"],"sources":["../../../../../src/components/admin/ApplicationList/BaseApplicationList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {BasicApplication, Preferences} from '@thunderid/browser';\nimport {FC, ReactElement, ReactNode} from 'react';\nimport useTranslation from '../../../hooks/useTranslation';\nimport DataTable, {DataTableColumn} from '../../primitives/DataTable/DataTable';\nimport {AdminListRenderProps} from '../shared/AdminListRenderProps';\nimport AdminSection from '../shared/AdminSection';\n\n/**\n * What {@link BaseApplicationList} hands its `children` render function. `applications` and `rows` are\n * the same array.\n */\nexport type BaseApplicationListRenderProps = AdminListRenderProps<BasicApplication> & {\n applications: BasicApplication[];\n};\n\nexport interface BaseApplicationListProps {\n /**\n * Controls rendered next to the title, such as a button that opens `ApplicationCreate`.\n */\n actions?: ReactNode;\n applications: BasicApplication[];\n /**\n * Renders custom UI in place of the default table, for example a third-party data grid. Receives\n * the applications, the default columns, the loading and error state, and the pagination and\n * selection handlers.\n */\n children?: (props: BaseApplicationListRenderProps) => ReactNode;\n className?: string;\n description?: string;\n error?: string | null;\n isLoading?: boolean;\n /**\n * Page size.\n * @default 20\n */\n limit?: number;\n offset?: number;\n /**\n * Called with the offset of the page to show. Pagination is hidden when omitted.\n */\n onPageChange?: (offset: number) => void;\n /**\n * Called when an application is chosen. Rows are selectable only when set.\n */\n onSelect?: (application: BasicApplication) => void;\n preferences?: Preferences;\n selectedApplicationId?: string;\n /**\n * Heading of the list. Pass an empty string to hide it.\n */\n title?: string;\n totalResults?: number;\n}\n\n/**\n * The translated access status of an application, or its raw value when the status is one this SDK\n * does not know.\n */\nconst getStatusLabel = (application: BasicApplication, t: (key: string) => string): string => {\n const value: string | undefined = application.status?.value;\n\n switch (value?.toUpperCase()) {\n case 'ACTIVE':\n return t('admin.applications.status.active');\n case 'SUSPENDED':\n return t('admin.applications.status.suspended');\n default:\n return value ?? '';\n }\n};\n\n/**\n * Lists applications with their client identifier, type and, when the server reports it, access status. Holds no data of its own: pass the page\n * of applications and handle selection and pagination.\n */\nconst BaseApplicationList: FC<BaseApplicationListProps> = ({\n actions,\n applications,\n children,\n className,\n description,\n error = null,\n isLoading = false,\n limit = 20,\n offset = 0,\n onPageChange,\n onSelect,\n preferences,\n selectedApplicationId,\n title,\n totalResults,\n}: BaseApplicationListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n\n const columns: DataTableColumn<BasicApplication>[] = [\n {\n header: t('admin.applications.list.columns.name'),\n id: 'name',\n render: (application: BasicApplication): ReactNode => application.name,\n },\n {\n header: t('admin.applications.list.columns.client_id'),\n id: 'clientId',\n render: (application: BasicApplication): ReactNode =>\n application.clientId ? <code>{application.clientId}</code> : null,\n },\n {\n header: t('admin.applications.list.columns.type'),\n id: 'type',\n render: (application: BasicApplication): ReactNode => application.type ?? application.template ?? '',\n },\n // A server that does not report the access status gets no empty status column.\n ...(applications.some((application: BasicApplication) => application.status?.value)\n ? [\n {\n header: t('admin.applications.list.columns.status'),\n id: 'status',\n render: (application: BasicApplication): ReactNode => getStatusLabel(application, t),\n },\n ]\n : []),\n ];\n\n if (children) {\n return (\n <div className={className}>\n {children({\n applications,\n columns,\n error,\n isLoading,\n limit,\n offset,\n onPageChange,\n onSelect,\n rows: applications,\n selectedRowId: selectedApplicationId,\n totalResults: totalResults ?? applications.length,\n })}\n </div>\n );\n }\n\n return (\n <AdminSection\n block=\"application-list\"\n className={className}\n title={title ?? t('admin.applications.list.title')}\n description={description}\n actions={actions}\n preferences={preferences}\n >\n <DataTable\n caption={title?.length ? title : t('admin.applications.list.title')}\n columns={columns}\n rows={applications}\n getRowId={(application: BasicApplication): string => application.id}\n isLoading={isLoading}\n error={error}\n emptyText={t('admin.applications.list.empty')}\n onRowClick={onSelect}\n selectedRowId={selectedApplicationId}\n pagination={\n onPageChange ? {limit, offset, onChange: onPageChange, total: totalResults ?? applications.length} : undefined\n }\n />\n </AdminSection>\n );\n};\n\nexport default BaseApplicationList;\n"],"mappings":";;;;;;;;;;;;AA6DA,MAAM,kBAAkB,aAA+B,MAAuC;CAC5F,MAAMA,QAA4B,YAAY,QAAQ;AAEtD,SAAQ,OAAO,aAAa,EAA5B;EACE,KAAK,SACH,QAAO,EAAE,mCAAmC;EAC9C,KAAK,YACH,QAAO,EAAE,sCAAsC;EACjD,QACE,QAAO,SAAS;;;;;;;AAQtB,MAAMC,uBAAqD,EACzD,SACA,cACA,UACA,WACA,aACA,QAAQ,MACR,YAAY,OACZ,QAAQ,IACR,SAAS,GACT,cACA,UACA,aACA,uBACA,OACA,mBAC4C;CAC5C,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAE7C,MAAMC,UAA+C;EACnD;GACE,QAAQ,EAAE,uCAAuC;GACjD,IAAI;GACJ,SAAS,gBAA6C,YAAY;GACnE;EACD;GACE,QAAQ,EAAE,4CAA4C;GACtD,IAAI;GACJ,SAAS,gBACP,YAAY,WAAW,2CAAC,oBAAM,YAAY,WAAgB,GAAG;GAChE;EACD;GACE,QAAQ,EAAE,uCAAuC;GACjD,IAAI;GACJ,SAAS,gBAA6C,YAAY,QAAQ,YAAY,YAAY;GACnG;EAED,GAAI,aAAa,MAAM,gBAAkC,YAAY,QAAQ,MAAM,GAC/E,CACE;GACE,QAAQ,EAAE,yCAAyC;GACnD,IAAI;GACJ,SAAS,gBAA6C,eAAe,aAAa,EAAE;GACrF,CACF,GACD,EAAE;EACP;AAED,KAAI,SACF,QACE,2CAAC;EAAe;YACb,SAAS;GACR;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,MAAM;GACN,eAAe;GACf,cAAc,gBAAgB,aAAa;GAC5C,CAAC;GACE;AAIV,QACE,2CAACC;EACC,OAAM;EACK;EACX,OAAO,SAAS,EAAE,gCAAgC;EACrC;EACJ;EACI;YAEb,2CAACC;GACC,SAAS,OAAO,SAAS,QAAQ,EAAE,gCAAgC;GAC1D;GACT,MAAM;GACN,WAAW,gBAA0C,YAAY;GACtD;GACJ;GACP,WAAW,EAAE,gCAAgC;GAC7C,YAAY;GACZ,eAAe;GACf,YACE,eAAe;IAAC;IAAO;IAAQ,UAAU;IAAc,OAAO,gBAAgB,aAAa;IAAO,GAAG;IAEvG;GACW;;AAInB,kCAAe"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
3
|
-
const
|
|
3
|
+
const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
|
|
4
|
+
const require_useResourceMutation = require('../../../hooks/management/useResourceMutation.cjs');
|
|
4
5
|
const require_useDefaultOuId = require('../shared/useDefaultOuId.cjs');
|
|
5
6
|
const require_BaseGroupCreate = require('./BaseGroupCreate.cjs');
|
|
6
7
|
let __thunderid_browser = require("@thunderid/browser");
|
|
@@ -20,7 +21,12 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
20
21
|
const GroupCreate = ({ onCreated, ouId, preferences,...rest }) => {
|
|
21
22
|
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
22
23
|
const resolvedOuId = require_useDefaultOuId.default(ouId);
|
|
23
|
-
const
|
|
24
|
+
const endpoint = require_useManagementEndpoint.default("groups");
|
|
25
|
+
const { error, isLoading, mutate } = require_useResourceMutation.default((payload, fetcher) => (0, __thunderid_browser.createGroup)({
|
|
26
|
+
...endpoint,
|
|
27
|
+
fetcher,
|
|
28
|
+
payload
|
|
29
|
+
}), () => [[__thunderid_browser.GroupQueryKeys.GROUPS], [__thunderid_browser.GroupQueryKeys.MEMBERSHIPS]], { onSuccess: onCreated });
|
|
24
30
|
const handleSubmit = ({ description, name }) => {
|
|
25
31
|
if (resolvedOuId) mutate({
|
|
26
32
|
description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupCreate.cjs","names":["GroupCreate: FC<GroupCreateProps>","useTranslation","resolvedOuId: string | undefined","useDefaultOuId","
|
|
1
|
+
{"version":3,"file":"GroupCreate.cjs","names":["GroupCreate: FC<GroupCreateProps>","useTranslation","resolvedOuId: string | undefined","useDefaultOuId","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceMutation","GroupQueryKeys","BaseGroupCreate"],"sources":["../../../../../src/components/admin/GroupCreate/GroupCreate.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {CreateGroupRequest, Group, GroupQueryKeys, createGroup, toManagementErrorMessage} from '@thunderid/browser';\nimport {FC, ReactElement} from 'react';\nimport BaseGroupCreate, {BaseGroupCreateProps, GroupCreateSubmission} from './BaseGroupCreate';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationResult} from '../../../hooks/management/useResourceMutation';\nimport useTranslation from '../../../hooks/useTranslation';\nimport useDefaultOuId from '../shared/useDefaultOuId';\n\nexport type GroupCreateProps = Omit<BaseGroupCreateProps, 'error' | 'isSubmitting' | 'onSubmit'> & {\n /**\n * Called with the created group.\n */\n onCreated?: (group: Group) => void;\n /**\n * Organization unit the group is created in. Defaults to the signed-in user's organization unit.\n */\n ouId?: string;\n};\n\n/**\n * Creates a group through the management API.\n *\n * @example\n * ```tsx\n * <GroupCreate onCreated={(group) => navigate(`/groups/${group.id}`)} />\n * ```\n */\nconst GroupCreate: FC<GroupCreateProps> = ({onCreated, ouId, preferences, ...rest}: GroupCreateProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const resolvedOuId: string | undefined = useDefaultOuId(ouId);\n const endpoint: ManagementEndpoint = useManagementEndpoint('groups');\n const {error, isLoading, mutate}: ResourceMutationResult<Group, CreateGroupRequest> = useResourceMutation(\n (payload: CreateGroupRequest, fetcher) => createGroup({...endpoint, fetcher, payload}),\n () => [[GroupQueryKeys.GROUPS], [GroupQueryKeys.MEMBERSHIPS]],\n {onSuccess: onCreated},\n );\n\n const handleSubmit = ({description, name}: GroupCreateSubmission): void => {\n if (resolvedOuId) {\n void mutate({description, name, ouId: resolvedOuId});\n }\n };\n\n return (\n <BaseGroupCreate\n onSubmit={handleSubmit}\n isSubmitting={isLoading}\n error={\n resolvedOuId ? toManagementErrorMessage(t, error, 'admin.groups.create.error') : t('admin.common.errors.no_ou')\n }\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default GroupCreate;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,MAAMA,eAAqC,EAAC,WAAW,MAAM,YAAa,GAAG,WAA0C;CACrH,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAC7C,MAAMC,eAAmCC,+BAAe,KAAK;CAC7D,MAAMC,WAA+BC,sCAAsB,SAAS;CACpE,MAAM,EAAC,OAAO,WAAW,WAA6DC,qCACnF,SAA6B,iDAAwB;EAAC,GAAG;EAAU;EAAS;EAAQ,CAAC,QAChF,CAAC,CAACC,mCAAe,OAAO,EAAE,CAACA,mCAAe,YAAY,CAAC,EAC7D,EAAC,WAAW,WAAU,CACvB;CAED,MAAM,gBAAgB,EAAC,aAAa,WAAuC;AACzE,MAAI,aACF,CAAK,OAAO;GAAC;GAAa;GAAM,MAAM;GAAa,CAAC;;AAIxD,QACE,2CAACC;EACC,UAAU;EACV,cAAc;EACd,OACE,iEAAwC,GAAG,OAAO,4BAA4B,GAAG,EAAE,4BAA4B;EAEpG;EACb,GAAI;GACJ;;AAIN,0BAAe"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
3
|
-
const
|
|
3
|
+
const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
|
|
4
|
+
const require_useResourceQuery = require('../../../hooks/management/useResourceQuery.cjs');
|
|
4
5
|
const require_BaseGroupList = require('./BaseGroupList.cjs');
|
|
5
6
|
let __thunderid_browser = require("@thunderid/browser");
|
|
6
7
|
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
@@ -21,10 +22,16 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
21
22
|
const GroupList = ({ limit = 20, preferences,...rest }) => {
|
|
22
23
|
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
23
24
|
const [offset, setOffset] = (0, react.useState)(0);
|
|
24
|
-
const
|
|
25
|
+
const endpoint = require_useManagementEndpoint.default("groups");
|
|
26
|
+
const { data, error, isLoading } = require_useResourceQuery.default([__thunderid_browser.GroupQueryKeys.GROUPS, {
|
|
25
27
|
limit,
|
|
26
28
|
offset
|
|
27
|
-
})
|
|
29
|
+
}], (fetcher) => (0, __thunderid_browser.getGroups)({
|
|
30
|
+
...endpoint,
|
|
31
|
+
fetcher,
|
|
32
|
+
limit,
|
|
33
|
+
offset
|
|
34
|
+
}));
|
|
28
35
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_BaseGroupList.default, {
|
|
29
36
|
groups: data?.groups ?? [],
|
|
30
37
|
totalResults: data?.totalResults,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupList.cjs","names":["GroupList: FC<GroupListProps>","useTranslation","
|
|
1
|
+
{"version":3,"file":"GroupList.cjs","names":["GroupList: FC<GroupListProps>","useTranslation","endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","GroupQueryKeys","BaseGroupList"],"sources":["../../../../../src/components/admin/GroupList/GroupList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {GroupListResponse, GroupQueryKeys, getGroups, toManagementErrorMessage} from '@thunderid/browser';\nimport {FC, ReactElement, useState} from 'react';\nimport BaseGroupList, {BaseGroupListProps} from './BaseGroupList';\nimport useManagementEndpoint, {ManagementEndpoint} from '../../../hooks/management/useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryResult} from '../../../hooks/management/useResourceQuery';\nimport useTranslation from '../../../hooks/useTranslation';\n\nexport type GroupListProps = Omit<\n BaseGroupListProps,\n 'error' | 'groups' | 'isLoading' | 'offset' | 'onPageChange' | 'totalResults'\n>;\n\n/**\n * Lists the groups the signed-in user is allowed to see, a page at a time.\n *\n * @example\n * ```tsx\n * <GroupList onSelect={(group) => setSelectedGroupId(group.id)} />\n * ```\n */\nconst GroupList: FC<GroupListProps> = ({limit = 20, preferences, ...rest}: GroupListProps): ReactElement => {\n const {t} = useTranslation(preferences?.i18n);\n const [offset, setOffset] = useState<number>(0);\n const endpoint: ManagementEndpoint = useManagementEndpoint('groups');\n const {data, error, isLoading}: ResourceQueryResult<GroupListResponse> = useResourceQuery(\n [GroupQueryKeys.GROUPS, {limit, offset}],\n (fetcher) => getGroups({...endpoint, fetcher, limit, offset}),\n );\n\n return (\n <BaseGroupList\n groups={data?.groups ?? []}\n totalResults={data?.totalResults}\n isLoading={isLoading}\n error={toManagementErrorMessage(t, error, 'admin.groups.list.error')}\n limit={limit}\n offset={offset}\n onPageChange={setOffset}\n preferences={preferences}\n {...rest}\n />\n );\n};\n\nexport default GroupList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuBA,MAAMA,aAAiC,EAAC,QAAQ,IAAI,YAAa,GAAG,WAAwC;CAC1G,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAC7C,MAAM,CAAC,QAAQ,iCAA8B,EAAE;CAC/C,MAAMC,WAA+BC,sCAAsB,SAAS;CACpE,MAAM,EAAC,MAAM,OAAO,cAAqDC,iCACvE,CAACC,mCAAe,QAAQ;EAAC;EAAO;EAAO,CAAC,GACvC,+CAAsB;EAAC,GAAG;EAAU;EAAS;EAAO;EAAO,CAAC,CAC9D;AAED,QACE,2CAACC;EACC,QAAQ,MAAM,UAAU,EAAE;EAC1B,cAAc,MAAM;EACT;EACX,yDAAgC,GAAG,OAAO,0BAA0B;EAC7D;EACC;EACR,cAAc;EACD;EACb,GAAI;GACJ;;AAIN,wBAAe"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_useTranslation = require('../../../hooks/useTranslation.cjs');
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const require_useAddGroupMembers = require('../../../hooks/management/groups/useAddGroupMembers.cjs');
|
|
7
|
-
const require_useRemoveGroupMembers = require('../../../hooks/management/groups/useRemoveGroupMembers.cjs');
|
|
3
|
+
const require_useManagementEndpoint = require('../../../hooks/management/useManagementEndpoint.cjs');
|
|
4
|
+
const require_useResourceQuery = require('../../../hooks/management/useResourceQuery.cjs');
|
|
5
|
+
const require_useResourceMutation = require('../../../hooks/management/useResourceMutation.cjs');
|
|
8
6
|
const require_BaseGroupMembers = require('./BaseGroupMembers.cjs');
|
|
9
7
|
let __thunderid_browser = require("@thunderid/browser");
|
|
10
8
|
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
@@ -15,6 +13,15 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
15
13
|
|
|
16
14
|
//#region src/components/admin/GroupMembers/GroupMembers.tsx
|
|
17
15
|
/**
|
|
16
|
+
* Query keys to refetch after a group's membership changes.
|
|
17
|
+
*/
|
|
18
|
+
const getMembershipInvalidatedKeys = ({ groupId }) => [
|
|
19
|
+
[__thunderid_browser.GroupQueryKeys.GROUP, groupId],
|
|
20
|
+
[__thunderid_browser.GroupQueryKeys.GROUP_MEMBERS, groupId],
|
|
21
|
+
[__thunderid_browser.GroupQueryKeys.MEMBERSHIPS],
|
|
22
|
+
[__thunderid_browser.RoleQueryKeys.ROLE_ASSIGNMENTS]
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
18
25
|
* Lists the users and agents in a group, and lets the signed-in user add and remove them.
|
|
19
26
|
*
|
|
20
27
|
* @example
|
|
@@ -24,11 +31,41 @@ react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
|
|
|
24
31
|
*/
|
|
25
32
|
const GroupMembers = ({ editable = false, groupId, preferences,...rest }) => {
|
|
26
33
|
const { t } = require_useTranslation.default(preferences?.i18n);
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
|
|
34
|
+
const groupsEndpoint = require_useManagementEndpoint.default("groups");
|
|
35
|
+
const usersEndpoint = require_useManagementEndpoint.default("users");
|
|
36
|
+
const agentsEndpoint = require_useManagementEndpoint.default("agents");
|
|
37
|
+
const members = require_useResourceQuery.default([
|
|
38
|
+
__thunderid_browser.GroupQueryKeys.GROUP_MEMBERS,
|
|
39
|
+
groupId,
|
|
40
|
+
{ limit: 100 }
|
|
41
|
+
], (fetcher) => (0, __thunderid_browser.getGroupMembers)({
|
|
42
|
+
...groupsEndpoint,
|
|
43
|
+
fetcher,
|
|
44
|
+
groupId,
|
|
45
|
+
limit: 100
|
|
46
|
+
}), { enabled: Boolean(groupId) });
|
|
47
|
+
const users = require_useResourceQuery.default([__thunderid_browser.UserQueryKeys.USERS, { limit: 100 }], (fetcher) => (0, __thunderid_browser.getUsers)({
|
|
48
|
+
...usersEndpoint,
|
|
49
|
+
fetcher,
|
|
50
|
+
limit: 100
|
|
51
|
+
}), { enabled: editable });
|
|
52
|
+
const agents = require_useResourceQuery.default([__thunderid_browser.AgentQueryKeys.AGENTS, { limit: 100 }], (fetcher) => (0, __thunderid_browser.getAgents)({
|
|
53
|
+
...agentsEndpoint,
|
|
54
|
+
fetcher,
|
|
55
|
+
limit: 100
|
|
56
|
+
}), { enabled: editable });
|
|
57
|
+
const add = require_useResourceMutation.default(({ groupId: id, members: changes }, fetcher) => (0, __thunderid_browser.addGroupMembers)({
|
|
58
|
+
...groupsEndpoint,
|
|
59
|
+
fetcher,
|
|
60
|
+
groupId: id,
|
|
61
|
+
members: changes
|
|
62
|
+
}), getMembershipInvalidatedKeys);
|
|
63
|
+
const remove = require_useResourceMutation.default(({ groupId: id, members: changes }, fetcher) => (0, __thunderid_browser.removeGroupMembers)({
|
|
64
|
+
...groupsEndpoint,
|
|
65
|
+
fetcher,
|
|
66
|
+
groupId: id,
|
|
67
|
+
members: changes
|
|
68
|
+
}), getMembershipInvalidatedKeys);
|
|
32
69
|
const candidates = (0, react.useMemo)(() => ({
|
|
33
70
|
agent: (agents.data?.agents ?? []).map((agent) => ({
|
|
34
71
|
id: agent.id,
|