feat(admin): add group filter in chat list

pull/90/head
moonrailgun 2 years ago
parent 0cd4268a65
commit b9b1931868

@ -0,0 +1,12 @@
import React from 'react';
import { ReferenceField, ReferenceFieldProps, TextField } from 'react-admin';
export const GroupField: React.FC<Omit<ReferenceFieldProps, 'reference'>> =
React.memo((props) => {
return (
<ReferenceField link="show" {...props} reference="groups">
<TextField source="name" />
</ReferenceField>
);
});
GroupField.displayName = 'GroupField';

@ -0,0 +1,6 @@
import React from 'react';
import { Box } from '@mui/material';
export const PostListActionToolbar = ({ children, ...props }) => (
<Box sx={{ alignItems: 'center', display: 'flex' }}>{children}</Box>
);

@ -4,12 +4,17 @@ import {
Datagrid, Datagrid,
DateField, DateField,
List, List,
ReferenceField,
TextField, TextField,
SearchInput, SearchInput,
useTranslate, useTranslate,
BulkDeleteButton, BulkDeleteButton,
ShowButton,
EditButton,
ReferenceInput,
SelectInput,
} from 'react-admin'; } from 'react-admin';
import { GroupField } from '../components/GroupField';
import { PostListActionToolbar } from '../components/PostListActionToolbar';
import { UserField } from '../components/UserField'; import { UserField } from '../components/UserField';
export const MessageList: React.FC = () => { export const MessageList: React.FC = () => {
@ -24,6 +29,9 @@ export const MessageList: React.FC = () => {
alwaysOn alwaysOn
placeholder={translate('custom.users.search')} placeholder={translate('custom.users.search')}
/>, />,
<ReferenceInput key="groupID" source="groupId" reference="groups">
<SelectInput optionText="name" />
</ReferenceInput>,
]} ]}
> >
<Datagrid <Datagrid
@ -33,11 +41,14 @@ export const MessageList: React.FC = () => {
<TextField source="id" sortable={true} sortByOrder="DESC" /> <TextField source="id" sortable={true} sortByOrder="DESC" />
<TextField source="content" /> <TextField source="content" />
<UserField source="author" /> <UserField source="author" />
<ReferenceField source="groupId" reference="groups" /> <GroupField source="groupId" />
<TextField source="converseId" /> <TextField source="converseId" />
<BooleanField source="hasRecall" /> <BooleanField source="hasRecall" />
<TextField source="reactions" /> <TextField source="reactions" />
<DateField source="createdAt" /> <DateField source="createdAt" />
<PostListActionToolbar>
<ShowButton />
</PostListActionToolbar>
</Datagrid> </Datagrid>
</List> </List>
); );

@ -21,13 +21,9 @@ import {
Labeled, Labeled,
} from 'react-admin'; } from 'react-admin';
import React from 'react'; import React from 'react';
import { Box } from '@mui/material';
import { DangerButton } from '../components/DangerButton'; import { DangerButton } from '../components/DangerButton';
import { ButtonWithConfirm } from '../components/ButtonWithConfirm'; import { ButtonWithConfirm } from '../components/ButtonWithConfirm';
import { PostListActionToolbar } from '../components/PostListActionToolbar';
const PostListActionToolbar = ({ children, ...props }) => (
<Box sx={{ alignItems: 'center', display: 'flex' }}>{children}</Box>
);
export const UserList: React.FC = () => { export const UserList: React.FC = () => {
const translate = useTranslate(); const translate = useTranslate();

Loading…
Cancel
Save