diff --git a/components/admin_roles.templ b/components/admin_roles.templ index cddd4dc..a39213c 100644 --- a/components/admin_roles.templ +++ b/components/admin_roles.templ @@ -19,6 +19,9 @@ type RolesData struct { templ AdminRoles(ctx context.Context, data RolesData) { @LayoutWithContext("Role Management", ctx) { + +
+

@@ -52,6 +55,18 @@ templ AdminRoles(ctx context.Context, data RolesData) { } else { for _, role := range data.Roles { + + @RoleDialog( + fmt.Sprintf("delete-role-dialog-%d", role.ID), + "Delete Role", + fmt.Sprintf("Are you sure you want to delete role \"%s\"? This action cannot be undone.", role.Name), + "bg-red-600 hover:bg-red-700 dark:bg-red-600 dark:hover:bg-red-700", + "Delete Role", + "delete", + role.ID, + role.Name, + ) + { role.Name } { role.Description } @@ -72,8 +87,7 @@ templ AdminRoles(ctx context.Context, data RolesData) { @@ -87,51 +101,134 @@ templ AdminRoles(ctx context.Context, data RolesData) {

- - - + + + if data.Error != "" { + + } } +} + +// RoleDialog for confirmation actions +templ RoleDialog(id string, title string, message string, confirmClass string, confirmText string, action string, roleID uint, roleName string) { + +} + +script hideRoleDialog(id string) { + document.getElementById(id).classList.add("hidden"); + document.getElementById(id).classList.remove("flex"); +} + +script showRoleDialog(id string) { + document.getElementById(id).classList.remove("hidden"); + document.getElementById(id).classList.add("flex"); +} + +script triggerRoleDelete(dialogId string, roleID uint, roleName string) { + // Hide the dialog + document.getElementById(dialogId).classList.add("hidden"); + document.getElementById(dialogId).classList.remove("flex"); + + // Store data in a way that's accessible to event handlers + window.lastDeletedRole = { + id: roleID, + name: roleName + }; + + // Add custom marker to track this deletion + window.isRoleDeletingRequest = true; } \ No newline at end of file diff --git a/components/configs.templ b/components/configs.templ index 7006fd5..5703089 100644 --- a/components/configs.templ +++ b/components/configs.templ @@ -12,7 +12,11 @@ templ ConfigDialog(id string, title string, message string, confirmClass string,
- + if action == "delete" { + + } else { + + }

{ message }

-
@@ -37,6 +41,7 @@ templ ConfigDialog(id string, title string, message string, confirmClass string, script hideConfigDialog(id string) { document.getElementById(id).classList.add("hidden"); + document.getElementById(id).classList.remove("flex"); } script showConfigDialog(id string) { @@ -68,38 +73,82 @@ type ConfigsData struct { templ Configs(ctx context.Context, data ConfigsData) { @LayoutWithContext("Transfer Configurations", ctx) { + +
+ +
@@ -450,6 +606,165 @@ templ FileMetadataList(ctx context.Context, data FileMetadataListData) { // FileMetadataDetails renders detailed information about a file templ FileMetadataDetails(ctx context.Context, data FileMetadataDetailsData) { @LayoutWithContext("File Details", ctx) { + +
+ + +
@@ -690,6 +1005,165 @@ templ FileMetadataDetails(ctx context.Context, data FileMetadataDetailsData) { // FileMetadataSearch renders an advanced search form for file metadata templ FileMetadataSearch(ctx context.Context, data FileMetadataSearchData) { @LayoutWithContext("Search Files", ctx) { + +
+ + +
diff --git a/components/jobs.templ b/components/jobs.templ index 472aee8..88c6305 100644 --- a/components/jobs.templ +++ b/components/jobs.templ @@ -8,40 +8,31 @@ import ( // Dialog component for confirmation dialogs using Flowbite modal templ JobDialog(id string, title string, message string, confirmClass string, confirmText string, action string, jobID uint, jobName string) { -