1+ import { Flex , chakra } from '@chakra-ui/react' ;
12import React from 'react' ;
23
3- import type { ZetaChainCCTX } from 'types/api/zetaChain' ;
4+ import type { ZetaChainCCTX , ZetaChainCCTXFilterParams } from 'types/api/zetaChain' ;
45
56import { AddressHighlightProvider } from 'lib/contexts/addressHighlight' ;
67import useInitialList from 'lib/hooks/useInitialList' ;
78import useLazyRenderedList from 'lib/hooks/useLazyRenderedList' ;
89import { TableBody , TableColumnHeader , TableHeaderSticky , TableRoot , TableRow } from 'toolkit/chakra/table' ;
910import TimeFormatToggle from 'ui/shared/time/TimeFormatToggle' ;
1011
12+ import ZetaChainFilterByColumn from './filters/ZetaChainFilterByColumn' ;
1113import ZetaChainCCTxsTableItem from './ZetaChainCCTxsTableItem' ;
1214
1315type Props = {
1416 txs : Array < ZetaChainCCTX > ;
1517 top : number ;
1618 enableTimeIncrement ?: boolean ;
1719 isLoading ?: boolean ;
20+ filters ?: ZetaChainCCTXFilterParams ;
21+ onFilterChange : < T extends keyof ZetaChainCCTXFilterParams > ( field : T , val : ZetaChainCCTXFilterParams [ T ] ) => void ;
22+ isPlaceholderData ?: boolean ;
23+ showStatusFilter ?: boolean ;
1824} ;
1925
20- const TxsTable = ( {
26+ const ZetaChainCCTxsTable = ( {
2127 txs,
2228 top,
2329 enableTimeIncrement,
2430 isLoading,
31+ filters = { } ,
32+ onFilterChange,
33+ isPlaceholderData,
34+ showStatusFilter = true ,
2535} : Props ) => {
2636 const { cutRef, renderedItemsNum } = useLazyRenderedList ( txs , ! isLoading ) ;
2737 const initialList = useInitialList ( {
@@ -36,15 +46,70 @@ const TxsTable = ({
3646 < TableHeaderSticky top = { top } >
3747 < TableRow >
3848 < TableColumnHeader width = "300px" >
39- CCTx hash
40- < TimeFormatToggle />
49+ < Flex alignItems = "center" >
50+ < chakra . span lineHeight = "24px" verticalAlign = "middle" >
51+ CCTx hash
52+ </ chakra . span >
53+ < TimeFormatToggle mr = { 2 } />
54+ < ZetaChainFilterByColumn
55+ column = "age"
56+ columnName = "Age"
57+ filters = { filters }
58+ handleFilterChange = { onFilterChange }
59+ isLoading = { isPlaceholderData }
60+ />
61+ </ Flex >
4162 </ TableColumnHeader >
4263 < TableColumnHeader width = "105px" >
43- Status
64+ < chakra . span mr = { 2 } lineHeight = "24px" verticalAlign = "middle" >
65+ Status
66+ </ chakra . span >
67+ { showStatusFilter && (
68+ < ZetaChainFilterByColumn
69+ column = "status"
70+ columnName = "Status"
71+ filters = { filters }
72+ handleFilterChange = { onFilterChange }
73+ isLoading = { isPlaceholderData }
74+ />
75+ ) }
76+ </ TableColumnHeader >
77+ < TableColumnHeader width = "200px" >
78+ < chakra . span mr = { 2 } lineHeight = "24px" verticalAlign = "middle" >
79+ Sender
80+ </ chakra . span >
81+ < ZetaChainFilterByColumn
82+ column = "sender"
83+ columnName = "Sender"
84+ filters = { filters }
85+ handleFilterChange = { onFilterChange }
86+ isLoading = { isPlaceholderData }
87+ />
88+ </ TableColumnHeader >
89+ < TableColumnHeader width = "165px" >
90+ < chakra . span mr = { 2 } lineHeight = "24px" verticalAlign = "middle" >
91+ Receiver
92+ </ chakra . span >
93+ < ZetaChainFilterByColumn
94+ column = "receiver"
95+ columnName = "Receiver"
96+ filters = { filters }
97+ handleFilterChange = { onFilterChange }
98+ isLoading = { isPlaceholderData }
99+ />
100+ </ TableColumnHeader >
101+ < TableColumnHeader width = "100%" isNumeric >
102+ < chakra . span mr = { 2 } lineHeight = "24px" verticalAlign = "middle" >
103+ Value
104+ </ chakra . span >
105+ < ZetaChainFilterByColumn
106+ column = "asset"
107+ columnName = "Asset"
108+ filters = { filters }
109+ handleFilterChange = { onFilterChange }
110+ isLoading = { isPlaceholderData }
111+ />
44112 </ TableColumnHeader >
45- < TableColumnHeader width = "200px" > Sender</ TableColumnHeader >
46- < TableColumnHeader width = "165px" > Receiver</ TableColumnHeader >
47- < TableColumnHeader width = "100%" isNumeric > Value</ TableColumnHeader >
48113 </ TableRow >
49114 </ TableHeaderSticky >
50115 < TableBody >
@@ -64,4 +129,4 @@ const TxsTable = ({
64129 ) ;
65130} ;
66131
67- export default React . memo ( TxsTable ) ;
132+ export default React . memo ( ZetaChainCCTxsTable ) ;
0 commit comments