Skip to content

Commit 0af0933

Browse files
author
Lucas Araujo
committed
[DDW-923] Review changes; Fix merge issues
1 parent 3b40f0a commit 0af0933

File tree

5 files changed

+80
-30
lines changed

5 files changed

+80
-30
lines changed

source/renderer/app/components/staking/stake-pools/StakePoolsTable.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
padding: 0 20px;
106106
position: sticky;
107107
top: 0;
108+
transition: box-shadow 0.1s ease-in-out;
108109
z-index: $sticky-header-z-index;
109110

110111
&.stickyHeader {
@@ -148,7 +149,7 @@
148149
}
149150
}
150151

151-
tr:not(:last-child) {
152+
.tr:not(:last-child) {
152153
border-bottom: 1px solid var(--theme-staking-table-border-color);
153154
}
154155

source/renderer/app/components/staking/stake-pools/StakePoolsTable.tsx

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import styles from './StakePoolsTable.scss';
1212
import StakePool from '../../../domains/StakePool';
1313
import LoadingSpinner from '../../widgets/LoadingSpinner';
1414
import BorderedBox from '../../widgets/BorderedBox';
15-
import { StakePoolsTableHeaderCell } from './StakePoolsTableHeaderCell';
1615
import {
1716
useSortedStakePoolList,
1817
useCreateColumns,
1918
StakePoolsOrder,
2019
StakePoolSortableProps,
2120
} from './hooks';
21+
import { StakePoolsTableHeader } from './StakePoolsTableHeader';
2222

2323
export const defaultTableOrdering: Record<
2424
StakePoolSortableProps,
@@ -191,34 +191,14 @@ function StakePoolsTableComponent({
191191
{sortedStakePoolList.length > 0 && (
192192
<BorderedBox>
193193
<div {...getTableProps()} className={styles.table}>
194-
<div
195-
className={styles.thead}
196-
onMouseEnter={onTableHeaderMouseEnter}
197-
onMouseLeave={onTableHeaderMouseLeave}
198-
>
199-
{headerGroups.map((headerGroup) => (
200-
/* eslint-disable-next-line react/jsx-key */
201-
<div
202-
{...headerGroup.getHeaderGroupProps()}
203-
className={styles.tr}
204-
>
205-
{headerGroup.headers.map((column) => (
206-
<StakePoolsTableHeaderCell
207-
{...column.getHeaderProps({
208-
style: { width: undefined },
209-
})}
210-
stakePoolsSortBy={stakePoolsSortBy}
211-
stakePoolsOrder={stakePoolsOrder}
212-
onHandleSort={handleSort}
213-
name={column.id}
214-
key={column.id}
215-
>
216-
{column.render('Header')}
217-
</StakePoolsTableHeaderCell>
218-
))}
219-
</div>
220-
))}
221-
</div>
194+
<StakePoolsTableHeader
195+
stakePoolsSortBy={stakePoolsSortBy}
196+
stakePoolsOrder={stakePoolsOrder}
197+
headerGroups={headerGroups}
198+
onHandleSort={handleSort}
199+
onTableHeaderMouseEnter={onTableHeaderMouseEnter}
200+
onTableHeaderMouseLeave={onTableHeaderMouseLeave}
201+
/>
222202

223203
<AutoSizer disableHeight>
224204
{({ width }) => (
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import React from 'react';
2+
import { observer } from 'mobx-react';
3+
import classNames from 'classnames';
4+
import { HeaderGroup } from 'react-table';
5+
import { StakePoolsTableHeaderCell } from './StakePoolsTableHeaderCell';
6+
import StakePool from '../../../domains/StakePool';
7+
import {
8+
useInViewPort,
9+
StakePoolsOrder,
10+
StakePoolSortableProps,
11+
} from './hooks';
12+
import styles from './StakePoolsTable.scss';
13+
14+
type Props = {
15+
headerGroups: HeaderGroup<StakePool>[];
16+
stakePoolsOrder: StakePoolsOrder;
17+
stakePoolsSortBy: StakePoolSortableProps;
18+
onHandleSort: (name: string) => void;
19+
onTableHeaderMouseEnter: () => void;
20+
onTableHeaderMouseLeave: () => void;
21+
};
22+
23+
export const Component = ({
24+
stakePoolsSortBy,
25+
stakePoolsOrder,
26+
headerGroups,
27+
onHandleSort,
28+
onTableHeaderMouseEnter,
29+
onTableHeaderMouseLeave,
30+
}: Props) => {
31+
const { setTargetRef, isInViewport } = useInViewPort();
32+
33+
return (
34+
<>
35+
<div ref={setTargetRef} />
36+
<div
37+
className={classNames(
38+
styles.thead,
39+
!isInViewport && styles.stickyHeader
40+
)}
41+
onMouseEnter={onTableHeaderMouseEnter}
42+
onMouseLeave={onTableHeaderMouseLeave}
43+
>
44+
{headerGroups.map((headerGroup) => (
45+
/* eslint-disable-next-line react/jsx-key */
46+
<div {...headerGroup.getHeaderGroupProps()} className={styles.tr}>
47+
{headerGroup.headers.map((column) => (
48+
<StakePoolsTableHeaderCell
49+
{...column.getHeaderProps({
50+
style: { width: undefined },
51+
})}
52+
stakePoolsSortBy={stakePoolsSortBy}
53+
stakePoolsOrder={stakePoolsOrder}
54+
onHandleSort={onHandleSort}
55+
name={column.id}
56+
key={column.id}
57+
>
58+
{column.render('Header')}
59+
</StakePoolsTableHeaderCell>
60+
))}
61+
</div>
62+
))}
63+
</div>
64+
</>
65+
);
66+
};
67+
68+
export const StakePoolsTableHeader = observer(Component);

source/renderer/app/components/staking/stake-pools/hooks/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export { useCreateColumns } from './useCreateColumns';
2+
export { useInViewPort } from './useInViewPort';
23
export {
34
useSortedStakePoolList,
45
StakePoolsOrder,

0 commit comments

Comments
 (0)