Add some quick actions in users listing
This commit is contained in:
@@ -8,6 +8,7 @@ import { ref, onMounted, computed, useTemplateRef, inject } from 'vue';
|
|||||||
import { Button, Menu, TextInput, SingleSelect, TableView, InputDialog } from '@cloudron/pankow';
|
import { Button, Menu, TextInput, SingleSelect, TableView, InputDialog } from '@cloudron/pankow';
|
||||||
import { ROLES } from '../constants.js';
|
import { ROLES } from '../constants.js';
|
||||||
import Section from '../components/Section.vue';
|
import Section from '../components/Section.vue';
|
||||||
|
import ActionBar from '../components/ActionBar.vue';
|
||||||
import UserDialog from '../components/UserDialog.vue';
|
import UserDialog from '../components/UserDialog.vue';
|
||||||
import ImpersonateDialog from '../components/ImpersonateDialog.vue';
|
import ImpersonateDialog from '../components/ImpersonateDialog.vue';
|
||||||
import InvitationDialog from '../components/InvitationDialog.vue';
|
import InvitationDialog from '../components/InvitationDialog.vue';
|
||||||
@@ -41,18 +42,15 @@ const usersColumns = {
|
|||||||
nowrap: true,
|
nowrap: true,
|
||||||
width: '400px',
|
width: '400px',
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {}
|
||||||
width: '55px',
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const actionMenuModel = ref([]);
|
function createUserActionMenu(user) {
|
||||||
const actionMenuElement = useTemplateRef('actionMenuElement');
|
return [{
|
||||||
function onUserActionMenu(user, event) {
|
|
||||||
actionMenuModel.value = [{
|
|
||||||
icon: 'fa fa-pencil-alt',
|
icon: 'fa fa-pencil-alt',
|
||||||
label: t('main.action.edit'),
|
label: t('main.action.edit'),
|
||||||
disabled: !canEdit(user),
|
disabled: !canEdit(user),
|
||||||
|
quickAction: true,
|
||||||
action: onEditOrAddUser.bind(null, user),
|
action: onEditOrAddUser.bind(null, user),
|
||||||
}, {
|
}, {
|
||||||
separator: true,
|
separator: true,
|
||||||
@@ -61,6 +59,7 @@ function onUserActionMenu(user, event) {
|
|||||||
label: t('users.users.invitationTooltip'),
|
label: t('users.users.invitationTooltip'),
|
||||||
visible: !user.inviteAccepted && !isMe(user) && !user.source,
|
visible: !user.inviteAccepted && !isMe(user) && !user.source,
|
||||||
disabled: !canEdit(user),
|
disabled: !canEdit(user),
|
||||||
|
quickAction: true,
|
||||||
action: onInvitation.bind(null, user),
|
action: onInvitation.bind(null, user),
|
||||||
}, {
|
}, {
|
||||||
icon: 'fa-solid fa-qrcode',
|
icon: 'fa-solid fa-qrcode',
|
||||||
@@ -87,8 +86,6 @@ function onUserActionMenu(user, event) {
|
|||||||
disabled: !canEdit(user) || isMe(user),
|
disabled: !canEdit(user) || isMe(user),
|
||||||
action: onRemoveUser.bind(null, user),
|
action: onRemoveUser.bind(null, user),
|
||||||
}];
|
}];
|
||||||
|
|
||||||
actionMenuElement.value.open(event, event.currentTarget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const external2FA = ref(false);
|
const external2FA = ref(false);
|
||||||
@@ -259,7 +256,6 @@ onMounted(async () => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<Menu ref="actionMenuElement" :model="actionMenuModel" />
|
|
||||||
<InputDialog ref="inputDialog" />
|
<InputDialog ref="inputDialog" />
|
||||||
<UserDialog ref="userDialog" @success="refreshUsers()"/>
|
<UserDialog ref="userDialog" @success="refreshUsers()"/>
|
||||||
<ImpersonateDialog ref="impersonateDialog" />
|
<ImpersonateDialog ref="impersonateDialog" />
|
||||||
@@ -299,10 +295,11 @@ onMounted(async () => {
|
|||||||
{{ user.groupIds.map(gid => groupsById[gid] ? groupsById[gid].name : gid).join(' ') }}
|
{{ user.groupIds.map(gid => groupsById[gid] ? groupsById[gid].name : gid).join(' ') }}
|
||||||
</template>
|
</template>
|
||||||
<template #actions="user">
|
<template #actions="user">
|
||||||
<div class="table-actions">
|
<ActionBar :actions="createUserActionMenu(user)" />
|
||||||
|
<!-- <div class="table-actions"> -->
|
||||||
<!-- <Button tool plain secondary :disabled="!canEdit(user)" @click.capture="onEditOrAddUser(user)" :tooltip="$t('main.action.edit')" icon="fa-solid fa-pencil-alt" /> -->
|
<!-- <Button tool plain secondary :disabled="!canEdit(user)" @click.capture="onEditOrAddUser(user)" :tooltip="$t('main.action.edit')" icon="fa-solid fa-pencil-alt" /> -->
|
||||||
<Button tool plain secondary @click.capture="onUserActionMenu(user, $event)" icon="fa-solid fa-ellipsis" />
|
<!-- <Button tool plain secondary @click.capture="onUserActionMenu(user, $event)" icon="fa-solid fa-ellipsis" /> -->
|
||||||
</div>
|
<!-- </div> -->
|
||||||
</template>
|
</template>
|
||||||
</TableView>
|
</TableView>
|
||||||
</Section>
|
</Section>
|
||||||
|
|||||||
Reference in New Issue
Block a user