1
1
import React from 'react' ;
2
2
import dayjs from 'dayjs' ;
3
- import { useHistory , Link } from 'umi' ;
4
- import { Space , Avatar , Tag } from 'antd' ;
5
- import { ListToolBarProps } from '@ant-design/pro-table' ;
6
- import ProList , { ProListMetas } from '@ant-design/pro-list' ;
3
+ import { Link } from 'umi' ;
4
+ import { Space , Avatar , Tag , List } from 'antd' ;
7
5
8
6
import { MESSAGE_TYPE_MAP , MessageType } from '@/constants' ;
9
7
10
8
import * as styles from './index.less' ;
11
9
12
- const MessageList : React . FC < Props > = ( {
13
- dataSource,
14
- loading,
15
- toolbar,
16
- onClick,
17
- } ) => {
18
- const metas : ProListMetas = {
19
- avatar : {
20
- dataIndex : 'author.avatar_url' ,
21
- render : ( _ , entity : MessageModel ) => {
22
- const { type : _type , author } = entity ;
23
- const type = MESSAGE_TYPE_MAP [ _type as MessageType ] ;
24
- const { loginname, avatar_url } = author ;
25
-
26
- return (
27
- < Space size = { 16 } >
28
- < div
29
- style = { {
30
- width : '200px' ,
31
- } }
32
- >
33
- < Link to = { `/user/${ loginname } ` } className = { styles . link } >
34
- < Space size = { 8 } >
35
- < Avatar size = "small" src = { avatar_url } />
36
- < span > { loginname } </ span >
37
- </ Space >
38
- </ Link >
39
- </ div >
40
-
41
- < Tag color = { type . color } > { type . name } </ Tag >
42
- </ Space >
43
- ) ;
44
- } ,
45
- } ,
46
- title : {
47
- dataIndex : 'title' ,
48
- valueType : 'text' ,
49
- render : ( _ , entity : MessageModel ) => {
10
+ const MessageList : React . FC < Props > = ( { dataSource, loading, onClick } ) => {
11
+ return (
12
+ < List
13
+ loading = { loading }
14
+ dataSource = { dataSource }
15
+ renderItem = { ( item ) => {
50
16
const {
51
17
id : messageId ,
18
+ type : _type ,
19
+ create_at,
52
20
topic : { id, title } ,
53
- } = entity ;
21
+ author : { loginname, avatar_url } ,
22
+ } = item ;
23
+
24
+ const type = MESSAGE_TYPE_MAP [ _type as MessageType ] ;
25
+
54
26
return (
55
- < Link
56
- to = { `/topic/${ id } ` }
57
- className = { styles . link }
58
- onClick = { ( ) => {
59
- onClick && onClick ( messageId ) ;
60
- } }
61
- >
62
- { title }
63
- </ Link >
64
- ) ;
65
- } ,
66
- } ,
67
- actions : {
68
- render : ( _ , entity : MessageModel ) => {
69
- return dayjs ( entity . create_at ) . fromNow ( ) ;
70
- } ,
71
- } ,
72
- } ;
27
+ < List . Item >
28
+ < List . Item . Meta
29
+ avatar = {
30
+ < Space size = { 16 } >
31
+ < div
32
+ style = { {
33
+ width : '200px' ,
34
+ } }
35
+ >
36
+ < Link to = { `/user/${ loginname } ` } className = { styles . link } >
37
+ < Space size = { 8 } >
38
+ < Avatar size = "small" src = { avatar_url } />
39
+ < span > { loginname } </ span >
40
+ </ Space >
41
+ </ Link >
42
+ </ div >
73
43
74
- return (
75
- < ProList
76
- rowKey = "id"
77
- showActions = "always"
78
- dataSource = { dataSource }
79
- loading = { loading }
80
- metas = { metas }
81
- className = { styles . list }
82
- toolbar = { toolbar }
44
+ < Tag color = { type . color } > { type . name } </ Tag >
45
+ </ Space >
46
+ }
47
+ title = {
48
+ < Link
49
+ to = { `/topic/${ id } ` }
50
+ className = { styles . link }
51
+ onClick = { ( ) => {
52
+ onClick && onClick ( messageId ) ;
53
+ } }
54
+ >
55
+ { title }
56
+ </ Link >
57
+ }
58
+ />
59
+ < div > { dayjs ( create_at ) . fromNow ( ) } </ div >
60
+ </ List . Item >
61
+ ) ;
62
+ } }
83
63
/>
84
64
) ;
85
65
} ;
@@ -89,6 +69,5 @@ export default MessageList;
89
69
interface Props {
90
70
dataSource ?: MessageModel [ ] ;
91
71
loading ?: boolean ;
92
- toolbar ?: ListToolBarProps ;
93
72
onClick ?: ( id : string ) => void ;
94
73
}
0 commit comments