1
0
mirror of https://github.com/flarum/core.git synced 2025-08-06 16:36:47 +02:00

feat: provide an 'actions' dropdown for extensions to add their additional buttons (#4054)

This commit is contained in:
IanM
2024-10-02 10:18:00 +01:00
committed by GitHub
parent ea2fd2cade
commit 1a4c4a0275
2 changed files with 31 additions and 9 deletions

View File

@@ -18,6 +18,7 @@ import extractText from '../../common/utils/extractText';
import AdminPage from './AdminPage'; import AdminPage from './AdminPage';
import { debounce } from '../../common/utils/throttleDebounce'; import { debounce } from '../../common/utils/throttleDebounce';
import CreateUserModal from './CreateUserModal'; import CreateUserModal from './CreateUserModal';
import Dropdown from '../../common/components/Dropdown';
type ColumnData = { type ColumnData = {
/** /**
@@ -425,17 +426,18 @@ export default class UserListPage extends AdminPage {
); );
columns.add( columns.add(
'editUser', 'userActions',
{ {
name: app.translator.trans('core.admin.users.grid.columns.edit_user.title'), name: app.translator.trans('core.admin.users.grid.columns.user_actions.title'),
content: (user: User) => ( content: (user: User) => (
<Button <Dropdown
className="Button UserList-editModalBtn" className="User-controls"
title={app.translator.trans('core.admin.users.grid.columns.edit_user.tooltip', { username: user.username() })} buttonClassName="Button Button--icon Button--flat"
onclick={() => app.modal.show(EditUserModal, { user })} menuClassName="Dropdown-menu--right"
icon="fas fa-ellipsis-h"
> >
{app.translator.trans('core.admin.users.grid.columns.edit_user.button')} {this.userActionItems(user).toArray()}
</Button> </Dropdown>
), ),
}, },
-90 -90
@@ -453,6 +455,24 @@ export default class UserListPage extends AdminPage {
}; };
} }
userActionItems(user: User): ItemList<Mithril.Children> {
const items = new ItemList<Mithril.Children>();
items.add(
'editUser',
<Button
icon="fas fa-pencil-alt"
className="Button UserList-editModalBtn"
title={app.translator.trans('core.admin.users.grid.columns.edit_user.tooltip', { username: user.username() })}
onclick={() => app.modal.show(EditUserModal, { user })}
>
{app.translator.trans('core.admin.users.grid.columns.edit_user.button')}
</Button>
);
return items;
}
/** /**
* Asynchronously fetch the next set of users to be rendered. * Asynchronously fetch the next set of users to be rendered.
* *

View File

@@ -271,7 +271,6 @@ core:
edit_user: edit_user:
button: => core.ref.edit button: => core.ref.edit
title: => core.ref.edit_user
tooltip: Edit {username} tooltip: Edit {username}
email: email:
@@ -286,6 +285,9 @@ core:
join_time: join_time:
title: Joined title: Joined
user_actions:
title: Actions
user_id: user_id:
title: ID title: ID