mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-02 05:26:45 +00:00
* Added first UI components for user managment Ref #4962 * Add user roles to table and serializer * added key to AddItem actions * added ordering to group * style text * do not show unnecessary options * fix admi / superuser usage * switched to use BooleanColumn * Added active column * added user role change action * added user active change action * Added api change log * fixed logical error * added admin center to navigation * added groups to user serializer * added groups to the uI * Added user drawer * fixed active state * remove actions as they are not usable after refactor * move functions to drawer * added drawer lock state * added edit toggle * merge fix * renamed values * remove empty roles section * fix settings header * make title shorter to reducelayout shift when switching to server settings
103 lines
2.5 KiB
TypeScript
103 lines
2.5 KiB
TypeScript
import { t } from '@lingui/macro';
|
|
import { Text } from '@mantine/core';
|
|
import { useCallback, useMemo } from 'react';
|
|
|
|
import { ApiPaths } from '../../../enums/ApiEndpoints';
|
|
import {
|
|
openCreateApiForm,
|
|
openDeleteApiForm,
|
|
openEditApiForm
|
|
} from '../../../functions/forms';
|
|
import { useTableRefresh } from '../../../hooks/TableRefresh';
|
|
import { apiUrl } from '../../../states/ApiState';
|
|
import { AddItemButton } from '../../buttons/AddItemButton';
|
|
import { TableColumn } from '../Column';
|
|
import { InvenTreeTable } from '../InvenTreeTable';
|
|
import { RowAction, RowDeleteAction, RowEditAction } from '../RowActions';
|
|
|
|
/**
|
|
* Table for displaying list of groups
|
|
*/
|
|
export function GroupTable() {
|
|
const { tableKey, refreshTable } = useTableRefresh('groups');
|
|
|
|
const columns: TableColumn[] = useMemo(() => {
|
|
return [
|
|
{
|
|
accessor: 'name',
|
|
sortable: true,
|
|
title: t`Name`
|
|
}
|
|
];
|
|
}, []);
|
|
|
|
const rowActions = useCallback((record: any): RowAction[] => {
|
|
return [
|
|
RowEditAction({
|
|
onClick: () => {
|
|
openEditApiForm({
|
|
url: ApiPaths.group_list,
|
|
pk: record.pk,
|
|
title: t`Edit group`,
|
|
fields: {
|
|
name: {}
|
|
},
|
|
onFormSuccess: refreshTable,
|
|
successMessage: t`Group updated`
|
|
});
|
|
}
|
|
}),
|
|
RowDeleteAction({
|
|
onClick: () => {
|
|
openDeleteApiForm({
|
|
url: ApiPaths.group_list,
|
|
pk: record.pk,
|
|
title: t`Delete group`,
|
|
successMessage: t`Group deleted`,
|
|
onFormSuccess: refreshTable,
|
|
preFormContent: (
|
|
<Text>{t`Are you sure you want to delete this group?`}</Text>
|
|
)
|
|
});
|
|
}
|
|
})
|
|
];
|
|
}, []);
|
|
|
|
const addGroup = useCallback(() => {
|
|
openCreateApiForm({
|
|
url: ApiPaths.group_list,
|
|
title: t`Add group`,
|
|
fields: { name: {} },
|
|
onFormSuccess: refreshTable,
|
|
successMessage: t`Added group`
|
|
});
|
|
}, []);
|
|
|
|
const tableActions = useMemo(() => {
|
|
let actions = [];
|
|
|
|
actions.push(
|
|
<AddItemButton
|
|
key={'add-group'}
|
|
onClick={addGroup}
|
|
tooltip={t`Add group`}
|
|
/>
|
|
);
|
|
|
|
return actions;
|
|
}, []);
|
|
|
|
return (
|
|
<InvenTreeTable
|
|
url={apiUrl(ApiPaths.group_list)}
|
|
tableKey={tableKey}
|
|
columns={columns}
|
|
props={{
|
|
rowActions: rowActions,
|
|
customActionGroups: tableActions
|
|
}}
|
|
/>
|
|
);
|
|
}
|