diff --git a/dashboard/src/components/MailboxDialog.vue b/dashboard/src/components/MailboxDialog.vue index e043b54c9..6a4cd38eb 100644 --- a/dashboard/src/components/MailboxDialog.vue +++ b/dashboard/src/components/MailboxDialog.vue @@ -98,17 +98,28 @@ defineExpose({ enablePop3.value = m ? m.enablePop3 : false; storageQuotaEnabled.value = m && m.storageQuota ? true : false; storageQuota.value = m ? m.storageQuota : 5*1000*1000*1000; - usersAndGroupsAndApps.value = [{ separator: true, label: 'Users' }] - .concat(props.users) - .concat([{ separator: true, label: 'Groups' }]) - .concat(props.groups) - .concat([{ separator: true, label: 'Apps' }]) - .concat(props.apps); + usersAndGroupsAndApps.value = []; + + if (props.users.length) usersAndGroupsAndApps.value.push({ separator: true, label: 'Users' }); + usersAndGroupsAndApps.value = usersAndGroupsAndApps.value.concat(props.users); + + if (props.groups.length) usersAndGroupsAndApps.value.push({ separator: true, label: 'Groups' }); + usersAndGroupsAndApps.value = usersAndGroupsAndApps.value.concat(props.groups); + + if (props.apps.length) usersAndGroupsAndApps.value.push({ separator: true, label: 'Apps' }); + usersAndGroupsAndApps.value = usersAndGroupsAndApps.value.concat(props.apps); // unify on .name for multiselect - usersAndGroupsAndApps.value.forEach(u => { - u.icon = u.name ? 'fa-solid fa-users' : (u.username ? 'fa-solid fa-user' : 'fa-solid fa-cube') ; - u.name = u.name || u.username || u.label || u.fqdn; + usersAndGroupsAndApps.value.forEach(item => { + if (item.appIds) { + item.icon = 'fa-solid fa-users'; + } else if (item.username) { + item.icon = 'fa-solid fa-user'; + item.name = item.username; + } else { + item.icon = 'fa-solid fa-cube'; + item.name = item.label || item.fqdn; + } }); domainList.value = props.domains.map(d => {