From bb2f35b0a70ba771d2ab854809d386e5c74c8db8 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Thu, 19 Feb 2026 00:37:44 +0000 Subject: [PATCH] Cleaned Org Admin styling. --- frontend/auth/admin/AdminApp.vue | 25 ++----- frontend/package.json | 3 +- frontend/src/admin/AdminOrgDetail.vue | 79 ++++++++++++++--------- frontend/src/assets/style.css | 3 - frontend/src/components/UserBasicInfo.vue | 2 +- 5 files changed, 55 insertions(+), 57 deletions(-) diff --git a/frontend/auth/admin/AdminApp.vue b/frontend/auth/admin/AdminApp.vue index c66770f..bc933d0 100644 --- a/frontend/auth/admin/AdminApp.vue +++ b/frontend/auth/admin/AdminApp.vue @@ -339,24 +339,9 @@ async function moveUserToRole(userUuid, user, targetRoleUuid) { } } -function onUserDragStart(e, userUuid, org) { - e.dataTransfer.effectAllowed = 'move' - e.dataTransfer.setData('text/plain', JSON.stringify({ user_uuid: userUuid, org })) -} - -function onRoleDragOver(e) { - e.preventDefault() - e.dataTransfer.dropEffect = 'move' -} - -function onRoleDrop(e, org, role) { - e.preventDefault() - try { - const data = JSON.parse(e.dataTransfer.getData('text/plain')) - if (data.org !== org.uuid) return // only within same org - const user = org.users[data.user_uuid] - if (user) moveUserToRole(data.user_uuid, user, role.uuid) - } catch (_) { /* ignore */ } +function moveUserToRoleFromDrag(userUuid, newRoleUuid) { + const user = selectedOrg.value?.users?.[userUuid] + if (user) moveUserToRole(userUuid, user, newRoleUuid) } // Role actions @@ -1001,10 +986,8 @@ async function submitDialog() { @create-user-in-role="createUserInRole" @open-user="openUser" @toggle-role-permission="toggleRolePermission" - @on-role-drag-over="onRoleDragOver" + @move-user-to-role="moveUserToRoleFromDrag" @navigate-out="handlePanelNavigateOut" - @on-role-drop="onRoleDrop" - @on-user-drag-start="onUserDragStart" /> import { computed, ref } from 'vue' +import draggable from 'vuedraggable' import { getDirection, navigateButtonRow, focusPreferred } from '@/utils/keynav' const props = defineProps({ @@ -8,7 +9,7 @@ const props = defineProps({ navigationDisabled: { type: Boolean, default: false } }) -const emit = defineEmits(['updateOrg', 'createRole', 'updateRole', 'deleteRole', 'createUserInRole', 'openUser', 'toggleRolePermission', 'onRoleDragOver', 'onRoleDrop', 'onUserDragStart', 'navigateOut']) +const emit = defineEmits(['updateOrg', 'createRole', 'updateRole', 'deleteRole', 'createUserInRole', 'openUser', 'toggleRolePermission', 'moveUserToRole', 'navigateOut']) // Template refs for navigation const orgTitleRef = ref(null) @@ -50,6 +51,14 @@ function roleUserCount(roleUuid) { return Object.values(props.selectedOrg.users).filter(u => u.role === roleUuid).length } +function onUserChange(evt, targetRoleUuid) { + // Only handle 'added' events (when a user is dropped into this role) + if (evt.added) { + const userUuid = evt.added.element.uuid + emit('moveUserToRole', userUuid, targetRoleUuid) + } +} + function permissionDisplayName(scope) { return props.permissions.find(p => p.scope === scope)?.display_name || scope } @@ -350,8 +359,6 @@ defineExpose({ focusFirstElement }) v-for="(r, roleIndex) in sortedRoles" :key="r.uuid" class="role-column" - @dragover="$emit('onRoleDragOver', $event)" - @drop="e => $emit('onRoleDrop', e, selectedOrg, r)" >
@@ -363,26 +370,32 @@ defineExpose({ focusFirstElement })
- -
-

No members

+
+ + + +
+

No members

+
@@ -391,23 +404,27 @@ defineExpose({ focusFirstElement })