Skip to content

Commit 3b77a60

Browse files
fix(Disks): fix vdisk popup hiding (#2946)
1 parent b960d4d commit 3b77a60

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

src/containers/Storage/Disks/Disks.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {cn} from '../../../utils/cn';
88
import type {PreparedVDisk} from '../../../utils/disks/types';
99
import {isNumeric} from '../../../utils/utils';
1010
import {PDisk} from '../PDisk';
11+
import {DISKS_POPUP_DEBOUNCE_TIMEOUT} from '../shared';
1112
import type {StorageViewContext} from '../types';
1213
import {isVdiskActive, useVDisksWithDCMargins} from '../utils';
1314

@@ -101,6 +102,8 @@ function VDiskItem({
101102
compact
102103
inactive={inactive}
103104
showPopup={highlightedVDisk === vDiskId}
105+
delayOpen={DISKS_POPUP_DEBOUNCE_TIMEOUT}
106+
delayClose={DISKS_POPUP_DEBOUNCE_TIMEOUT}
104107
onShowPopup={() => setHighlightedVDisk(vDiskId)}
105108
onHidePopup={() => setHighlightedVDisk(undefined)}
106109
progressBarClassName={b('vdisk-progress-bar')}
@@ -122,6 +125,8 @@ function PDiskItem({vDisk, highlightedVDisk, setHighlightedVDisk, withDCMargin}:
122125
progressBarClassName={b('pdisk-progress-bar')}
123126
data={vDisk.PDisk}
124127
showPopup={highlightedVDisk === vDiskId}
128+
delayOpen={DISKS_POPUP_DEBOUNCE_TIMEOUT}
129+
delayClose={DISKS_POPUP_DEBOUNCE_TIMEOUT}
125130
onShowPopup={() => setHighlightedVDisk(vDiskId)}
126131
onHidePopup={() => setHighlightedVDisk(undefined)}
127132
/>

src/containers/Storage/PDisk/PDisk.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {getPDiskPagePath} from '../../../routes';
99
import {valueIsDefined} from '../../../utils';
1010
import {cn} from '../../../utils/cn';
1111
import type {PreparedPDisk, PreparedVDisk} from '../../../utils/disks/types';
12+
import {DISKS_POPUP_DEBOUNCE_TIMEOUT} from '../shared';
1213
import type {StorageViewContext} from '../types';
1314
import {isVdiskActive} from '../utils';
1415

@@ -26,6 +27,8 @@ interface PDiskProps {
2627
progressBarClassName?: string;
2728
viewContext?: StorageViewContext;
2829
width?: number;
30+
delayOpen?: number;
31+
delayClose?: number;
2932
}
3033

3134
export const PDisk = ({
@@ -38,6 +41,8 @@ export const PDisk = ({
3841
progressBarClassName,
3942
viewContext,
4043
width,
44+
delayOpen = DISKS_POPUP_DEBOUNCE_TIMEOUT,
45+
delayClose = DISKS_POPUP_DEBOUNCE_TIMEOUT,
4146
}: PDiskProps) => {
4247
const {NodeId, PDiskId} = data;
4348
const pDiskIdsDefined = valueIsDefined(NodeId) && valueIsDefined(PDiskId);
@@ -65,8 +70,8 @@ export const PDisk = ({
6570
data={vdisk}
6671
inactive={!isVdiskActive(vdisk, viewContext)}
6772
compact
68-
delayClose={200}
69-
delayOpen={200}
73+
delayOpen={delayOpen}
74+
delayClose={delayClose}
7075
/>
7176
</div>
7277
))}
@@ -90,7 +95,8 @@ export const PDisk = ({
9095
onShowPopup={onShowPopup}
9196
onHidePopup={onHidePopup}
9297
renderPopupContent={() => <PDiskPopup data={data} />}
93-
delayClose={200}
98+
delayOpen={delayOpen}
99+
delayClose={delayClose}
94100
>
95101
<InternalLink to={pDiskPath} className={b('content')}>
96102
<DiskStateProgressBar

src/containers/Storage/VDisks/VDisks.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {VDiskWithDonorsStack} from '../../../components/VDisk/VDiskWithDonorsSta
22
import type {Erasure} from '../../../types/api/storage';
33
import {cn} from '../../../utils/cn';
44
import type {PreparedVDisk} from '../../../utils/disks/types';
5+
import {DISKS_POPUP_DEBOUNCE_TIMEOUT} from '../shared';
56
import type {StorageViewContext} from '../types';
67
import {isVdiskActive, useVDisksWithDCMargins} from '../utils';
78

@@ -25,6 +26,8 @@ export function VDisks({vDisks, viewContext, erasure}: VDisksProps) {
2526
key={vDisk.StringifiedId}
2627
data={vDisk}
2728
inactive={!isVdiskActive(vDisk, viewContext)}
29+
delayOpen={DISKS_POPUP_DEBOUNCE_TIMEOUT}
30+
delayClose={DISKS_POPUP_DEBOUNCE_TIMEOUT}
2831
className={b('item', {
2932
'with-dc-margin': vDisksWithDCMargins.includes(index),
3033
})}

src/containers/Storage/shared.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
import {cn} from '../../utils/cn';
22

33
export const b = cn('global-storage');
4+
5+
export const DISKS_POPUP_DEBOUNCE_TIMEOUT = 200;

0 commit comments

Comments
 (0)