feat(admin): add user edit page

pull/90/head
moonrailgun 2 years ago
parent c257d46418
commit 0f902d4766

@ -1,7 +1,7 @@
import { Admin, Resource, ShowGuesser, CustomRoutes } from 'react-admin'; import { Admin, Resource, ShowGuesser, CustomRoutes } from 'react-admin';
import jsonServerProvider from 'ra-data-json-server'; import jsonServerProvider from 'ra-data-json-server';
import { authProvider } from './authProvider'; import { authProvider } from './authProvider';
import { UserList, UserShow } from './resources/user'; import { UserEdit, UserList, UserShow } from './resources/user';
import React from 'react'; import React from 'react';
import { GroupList, GroupShow } from './resources/group'; import { GroupList, GroupShow } from './resources/group';
import { MessageList } from './resources/chat'; import { MessageList } from './resources/chat';
@ -37,7 +37,13 @@ export const App = () => (
i18nProvider={i18nProvider} i18nProvider={i18nProvider}
requireAuth={true} requireAuth={true}
> >
<Resource icon={PersonIcon} name="users" list={UserList} show={UserShow} /> <Resource
icon={PersonIcon}
name="users"
list={UserList}
show={UserShow}
edit={UserEdit}
/>
<Resource <Resource
icon={MessageIcon} icon={MessageIcon}
name="messages" name="messages"

@ -11,7 +11,7 @@ import { FilesizeField } from '../components/FilesizeField';
export const FileList: React.FC = () => ( export const FileList: React.FC = () => (
<List> <List>
<Datagrid> <Datagrid bulkActionButtons={false}>
<TextField source="objectName" /> <TextField source="objectName" />
<UrlField source="url" target="__blank" /> <UrlField source="url" target="__blank" />
<FilesizeField source="size" noWrap={true} /> <FilesizeField source="size" noWrap={true} />

@ -14,6 +14,11 @@ import {
useUpdate, useUpdate,
useShowContext, useShowContext,
useTranslate, useTranslate,
EditButton,
Edit,
SimpleForm,
TextInput,
Labeled,
} from 'react-admin'; } from 'react-admin';
import React from 'react'; import React from 'react';
import { Box } from '@mui/material'; import { Box } from '@mui/material';
@ -38,7 +43,7 @@ export const UserList: React.FC = () => {
/>, />,
]} ]}
> >
<Datagrid> <Datagrid bulkActionButtons={false}>
<TextField source="id" sortByOrder="DESC" /> <TextField source="id" sortByOrder="DESC" />
<EmailField source="email" /> <EmailField source="email" />
<TextField source="nickname" /> <TextField source="nickname" />
@ -52,6 +57,7 @@ export const UserList: React.FC = () => {
<TextField source="settings" /> <TextField source="settings" />
<DateField source="createdAt" /> <DateField source="createdAt" />
<PostListActionToolbar> <PostListActionToolbar>
<EditButton />
<ShowButton /> <ShowButton />
</PostListActionToolbar> </PostListActionToolbar>
</Datagrid> </Datagrid>
@ -67,7 +73,7 @@ const UserShowActions: React.FC = () => {
return ( return (
<TopToolbar> <TopToolbar>
{/* <EditButton /> */} <EditButton />
<ButtonWithConfirm <ButtonWithConfirm
component={DangerButton} component={DangerButton}
@ -93,7 +99,6 @@ export const UserShow: React.FC = () => (
<Show actions={<UserShowActions />}> <Show actions={<UserShowActions />}>
<SimpleShowLayout> <SimpleShowLayout>
<TextField source="id" /> <TextField source="id" />
<DateField source="createdAt" />
<EmailField source="email" /> <EmailField source="email" />
<TextField source="password" /> <TextField source="password" />
<TextField source="nickname" /> <TextField source="nickname" />
@ -106,3 +111,27 @@ export const UserShow: React.FC = () => (
</Show> </Show>
); );
UserShow.displayName = 'UserShow'; UserShow.displayName = 'UserShow';
export const UserEdit: React.FC = () => {
const translate = useTranslate();
return (
<Edit mutationMode="optimistic">
<SimpleForm>
<Labeled label={translate('resources.users.fields.id')}>
<TextField source="id" fullWidth={true} />
</Labeled>
<TextInput source="email" />
<TextInput source="nickname" />
<Labeled label={translate('resources.users.fields.temporary')}>
<BooleanField source="temporary" />
</Labeled>
<TextInput source="avatar" />
<Labeled label={translate('resources.users.fields.type')}>
<TextField source="type" />
</Labeled>
</SimpleForm>
</Edit>
);
};
UserEdit.displayName = 'UserEdit';

Loading…
Cancel
Save