fix: disable live data fetching when a dialog is open
This commit is contained in:
parent
bf02015dc7
commit
3771890f98
@ -1,4 +1,4 @@
|
|||||||
import React, { cloneElement, useRef } from 'react';
|
import React, { cloneElement, useEffect, useRef } from 'react';
|
||||||
import {
|
import {
|
||||||
type AriaDialogProps,
|
type AriaDialogProps,
|
||||||
type AriaModalOverlayProps,
|
type AriaModalOverlayProps,
|
||||||
@ -19,6 +19,7 @@ import IconButton, { IconButtonProps } from '~/components/IconButton';
|
|||||||
import Text from '~/components/Text';
|
import Text from '~/components/Text';
|
||||||
import Title from '~/components/Title';
|
import Title from '~/components/Title';
|
||||||
import cn from '~/utils/cn';
|
import cn from '~/utils/cn';
|
||||||
|
import { useLiveData } from '~/utils/live-data';
|
||||||
|
|
||||||
export interface DialogProps extends OverlayTriggerProps {
|
export interface DialogProps extends OverlayTriggerProps {
|
||||||
children:
|
children:
|
||||||
@ -30,6 +31,7 @@ export interface DialogProps extends OverlayTriggerProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Dialog(props: DialogProps) {
|
function Dialog(props: DialogProps) {
|
||||||
|
const { pause, resume } = useLiveData();
|
||||||
const state = useOverlayTriggerState(props);
|
const state = useOverlayTriggerState(props);
|
||||||
const { triggerProps, overlayProps } = useOverlayTrigger(
|
const { triggerProps, overlayProps } = useOverlayTrigger(
|
||||||
{
|
{
|
||||||
@ -38,6 +40,14 @@ function Dialog(props: DialogProps) {
|
|||||||
state,
|
state,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (state.isOpen) {
|
||||||
|
pause();
|
||||||
|
} else {
|
||||||
|
resume();
|
||||||
|
}
|
||||||
|
}, [state.isOpen]);
|
||||||
|
|
||||||
if (Array.isArray(props.children)) {
|
if (Array.isArray(props.children)) {
|
||||||
const [button, panel] = props.children;
|
const [button, panel] = props.children;
|
||||||
return (
|
return (
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user