Skip to content

Commit c0c8e76

Browse files
shawnbusuttildanielmain
authored andcommitted
Merge branch 'develop' into chore/ddw-1069-update-readme-to-include-linking-steps
2 parents 1851838 + 7a97d26 commit c0c8e76

File tree

15 files changed

+131
-42
lines changed

15 files changed

+131
-42
lines changed

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## vNext
44

5+
### Chores
6+
7+
- Added steps on how to link with `react-polymorph` and other external UI libraries ([PR 2948](https://github.com/input-output-hk/daedalus/pull/2948))
8+
9+
## 4.10.0
10+
511
### Features
612

713
- Implemented hover tooltips for menu ([PR 2938](https://github.com/input-output-hk/daedalus/pull/2938))
@@ -13,6 +19,7 @@
1319

1420
### Fixes
1521

22+
- Fixed stake pool list styling ([PR 2920](https://github.com/input-output-hk/daedalus/pull/2920))
1623
- Fixed PopOver overlap ([PR 2954](https://github.com/input-output-hk/daedalus/pull/2954))
1724
- Fixed tooltip being hidden in several places ([PR-2934](https://github.com/input-output-hk/daedalus/pull/2934))
1825
- Adjusted padding for search field in stake pools ([PR 2945](https://github.com/input-output-hk/daedalus/pull/2945))
@@ -29,7 +36,6 @@
2936

3037
### Chores
3138

32-
- Added steps on how to link with `react-polymorph` and other external UI libraries ([PR 2948](https://github.com/input-output-hk/daedalus/pull/2948))
3339
- Introduced new version of the `@cardano-foundation/ledgerjs-hw-app-cardano` package ([PR 2930](https://github.com/input-output-hk/daedalus/pull/2930))
3440
- Added `storybook:build` check to pre-push hook ([PR 2955](https://github.com/input-output-hk/daedalus/pull/2955))
3541
- Using new faker.js ([PR 2855](https://github.com/input-output-hk/daedalus/pull/2855))

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,20 +94,25 @@
9494

9595
.table {
9696
border-style: hidden;
97+
margin-bottom: -10px;
9798
user-select: text;
9899
width: 100%;
99100

100101
.thead {
101102
background: var(--theme-bordered-box-background-color);
102103
border-radius: 4px 4px 0 0;
103-
box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.2);
104104
display: block;
105-
margin: -20px -20px 0;
105+
margin: -10px -20px 0;
106106
padding: 0 20px;
107107
position: sticky;
108108
top: 0;
109+
transition: box-shadow 0.1s ease-in-out;
109110
z-index: $sticky-header-z-index;
110111

112+
&.stickyHeader {
113+
box-shadow: 0 10px 10px -10px rgba(0, 0, 0, 0.2);
114+
}
115+
111116
.tr {
112117
border: 0;
113118
display: flex;
@@ -145,7 +150,7 @@
145150
}
146151
}
147152

148-
.tr {
153+
.tr:not(:last-child) {
149154
border-bottom: 1px solid var(--theme-staking-table-border-color);
150155
}
151156

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,
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { useRef, useState, useCallback } from 'react';
2+
3+
export const useInViewPort = () => {
4+
const [isInViewport, setIsInViewport] = useState(true);
5+
const targetRef = useRef(null);
6+
const observerRef = useRef(
7+
new IntersectionObserver((entries) => {
8+
entries.forEach((entry) => {
9+
setIsInViewport(entry.isIntersecting);
10+
});
11+
})
12+
);
13+
14+
// React will call the ref callback twice. Once when the component mounts and again when it unmounts.
15+
// https://reactjs.org/docs/hooks-faq.html#how-can-i-measure-a-dom-node
16+
const setTargetRef = useCallback((target: HTMLElement) => {
17+
if (targetRef.current) {
18+
observerRef.current.unobserve(targetRef.current);
19+
}
20+
21+
if (target) {
22+
observerRef.current.observe(target);
23+
}
24+
25+
targetRef.current = target;
26+
}, []);
27+
28+
return { isInViewport, setTargetRef };
29+
};

source/renderer/app/themes/daedalus/cardano.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -896,7 +896,7 @@ export const CARDANO_THEME_OUTPUT = {
896896
'--theme-staking-font-color-light': 'rgba(94, 96, 102, 0.7)',
897897
'--theme-staking-font-color-lighter': 'rgba(94, 96, 102, 0.5)',
898898
'--theme-staking-table-head-background-color': 'rgba(32, 34, 37, 0.07)',
899-
'--theme-staking-table-border-color': '#d2d3d3',
899+
'--theme-staking-table-border-color': 'rgba(94, 96, 102, 0.15)',
900900
'--theme-staking-link-color': 'rgba(28, 172, 99, 1)',
901901
'--theme-staking-link-color-light': 'rgba(28, 172, 99, 0.7)',
902902
'--theme-staking-progress-bar-background-color': 'rgba(32, 34, 37, 0.1)',

source/renderer/app/themes/daedalus/dark-blue.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,7 @@ export const DARK_BLUE_THEME_OUTPUT = {
900900
'--theme-staking-font-color-light': 'rgba(233, 244, 254, 0.7)',
901901
'--theme-staking-font-color-lighter': 'rgba(233, 244, 254, 0.5)',
902902
'--theme-staking-table-head-background-color': '#536370',
903-
'--theme-staking-table-border-color': '#c6cdd6',
903+
'--theme-staking-table-border-color': 'rgba(233, 244, 254, 0.15)',
904904
'--theme-staking-link-color': 'rgba(32, 181, 107, 1)',
905905
'--theme-staking-link-color-light': 'rgba(32, 181, 107, 0.7)',
906906
'--theme-staking-progress-bar-background-color': 'rgba(233, 244, 254, 0.1)',

source/renderer/app/themes/daedalus/dark-cardano.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ export const DARK_CARDANO_THEME_OUTPUT = {
885885
'--theme-staking-font-color-light': '#ffffffb3',
886886
'--theme-staking-font-color-lighter': 'rgba(255, 255, 255, 0.5)',
887887
'--theme-staking-table-head-background-color': 'rgba(255, 255, 255, 0.07)',
888-
'--theme-staking-table-border-color': 'rgba(255, 255, 255, 0.2)',
888+
'--theme-staking-table-border-color': 'rgba(255, 255, 255, 0.15)',
889889
'--theme-staking-link-color': '#1fc1c3',
890890
'--theme-staking-link-color-light': 'rgba(31, 193, 195, 0.7)',
891891
'--theme-staking-progress-bar-background-color':

source/renderer/app/themes/daedalus/flight-candidate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -883,7 +883,7 @@ export const FLIGHT_CANDIDATE_THEME_OUTPUT = {
883883
'--theme-staking-font-color-light': '#ffffffb3',
884884
'--theme-staking-font-color-lighter': 'rgba(255, 255, 255, 0.5)',
885885
'--theme-staking-table-head-background-color': 'rgba(255, 255, 255, 0.07)',
886-
'--theme-staking-table-border-color': 'rgba(255, 255, 255, 0.2)',
886+
'--theme-staking-table-border-color': 'rgba(255, 255, 255, 0.15)',
887887
'--theme-staking-link-color': '#ffb923',
888888
'--theme-staking-link-color-light': 'rgba(255, 185, 35, 0.7)',
889889
'--theme-staking-progress-bar-background-color':

0 commit comments

Comments
 (0)