diff --git a/management-ui/src/customcompometns/AdminDeviceDropdown.vue b/management-ui/src/customcompometns/AdminDeviceDropdown.vue
index 062c193..9195329 100644
--- a/management-ui/src/customcompometns/AdminDeviceDropdown.vue
+++ b/management-ui/src/customcompometns/AdminDeviceDropdown.vue
@@ -25,8 +25,8 @@ const isTasksOpen = ref(false)
const itCertsOpen = ref(false)
const emit = defineEmits<{
- (e: 'refresh'): void
- (e: 'error', err: unknown): void
+ (e: 'updated', payload: { name: string; userIds: string[] }): void
+ (e: 'deleted'): void
}>()
function onDeleteConfirmed() {
@@ -65,7 +65,7 @@ function onCertsConfirm() {
-
+
diff --git a/management-ui/src/customcompometns/Admincomponent.vue b/management-ui/src/customcompometns/Admincomponent.vue
index adec5d7..3077630 100644
--- a/management-ui/src/customcompometns/Admincomponent.vue
+++ b/management-ui/src/customcompometns/Admincomponent.vue
@@ -210,6 +210,7 @@ onBeforeUnmount(() => {
:dropdownComponent="AdminDeviceDropdown"
:onRowUpdated="handleDeviceUpdated"
:onRowDeleted="handleDeviceDeleted"
+ :dropdownProps="{ allUsers: user_data }"
/>
@@ -220,6 +221,7 @@ onBeforeUnmount(() => {
:dropdownComponent="AdminDeviceDropdown"
:onRowUpdated="handleTrackerUpdated"
:onRowDeleted="handleTrackerDeleted"
+ :dropdownProps="{ allUsers: user_data }"
/>
diff --git a/management-ui/src/customcompometns/AssignDevice.vue b/management-ui/src/customcompometns/AssignDevice.vue
index 0aa6e75..7713f50 100644
--- a/management-ui/src/customcompometns/AssignDevice.vue
+++ b/management-ui/src/customcompometns/AssignDevice.vue
@@ -73,6 +73,16 @@ function onSelect(ev: CustomEvent) {
// When parent switches between external/internal data at runtime, refetch if needed.
watch(() => props.allUsers, () => { if (!usingExternal.value) loadUsers() })
+
+// Debug: whenever modelValue changes (from dialog)
+watch(() => props.modelValue, (v) => {
+ console.log('[AssignDevice:props.modelValue]', v)
+}, { immediate: true })
+
+// Debug: when effective users list is ready
+watch(() => effectiveUsers.value, (v) => {
+ console.log('[AssignDevice:effectiveUsers]', v?.length, 'items')
+})
diff --git a/management-ui/src/customcompometns/DataTableNoCheckbox.vue b/management-ui/src/customcompometns/DataTableNoCheckbox.vue
index 6602884..5d9ef6c 100644
--- a/management-ui/src/customcompometns/DataTableNoCheckbox.vue
+++ b/management-ui/src/customcompometns/DataTableNoCheckbox.vue
@@ -33,13 +33,14 @@ const props = defineProps<{
* :dropdownComponent="MyActionsMenu"
* />
*/
- // dropdownComponent?: DefineComponent<{ row: TData }, any, any>
- dropdownComponent?: DefineComponent<{ row: TData } & {
- onRowUpdated?: (row: TData, payload: any) => void
- onRowDeleted?: (row: TData) => void
- }, any, any>
- onRowUpdated?: (row: TData, payload: any) => void // <-- NEW
- onRowDeleted?: (row: TData) => void // <-- NEW
+ dropdownComponent?: DefineComponent<{ row: TData }, any, any>
+ // dropdownComponent?: DefineComponent<{ row: TData } & {
+ // onRowUpdated?: (row: TData, payload: any) => void
+ // onRowDeleted?: (row: TData) => void
+ // }, any, any>
+ // onRowUpdated?: (row: TData, payload: any) => void // <-- NEW
+ // onRowDeleted?: (row: TData) => void // <-- NEW
+ dropdownProps?: Record // <-- NEW
}>()
// ——— Table setup ———
@@ -48,6 +49,11 @@ const table = useVueTable({
get columns() { return props.columns },
getCoreRowModel: getCoreRowModel(),
})
+
+const emit = defineEmits<{
+ (e: 'row-updated', row: TData, payload: any): void
+ (e: 'row-deleted', row: TData): void
+}>()
@@ -99,12 +105,19 @@ const table = useVueTable({
- -->
+ emit('row-updated', row.original, payload)"
+ @deleted="() => emit('row-deleted', row.original)"
/>
diff --git a/management-ui/src/customcompometns/EditDeviceDialog.vue b/management-ui/src/customcompometns/EditDeviceDialog.vue
index ce70dec..a517cfa 100644
--- a/management-ui/src/customcompometns/EditDeviceDialog.vue
+++ b/management-ui/src/customcompometns/EditDeviceDialog.vue
@@ -1,61 +1,147 @@
-
\ No newline at end of file
+