fix(ui): bump AntD to 5.26.0 to fix Splitter drag menu issue (#35782)

This commit is contained in:
Enzo Martellucci
2025-11-06 07:43:28 +01:00
committed by GitHub
parent 14f20e644e
commit 84a1abd357
25 changed files with 235 additions and 147 deletions

View File

@@ -57,7 +57,6 @@ const ControlPopover: FC<PopoverProps> = ({
...props
}) => {
const triggerElementRef = useRef<HTMLElement>();
const [visible, setVisible] = useState(
visibleProp === undefined ? props.defaultOpen : visibleProp,
);
@@ -65,7 +64,7 @@ const ControlPopover: FC<PopoverProps> = ({
React.useState<TooltipPlacement>(initialPlacement);
const calculatePlacement = useCallback(() => {
if (!triggerElementRef.current) return;
if (!triggerElementRef.current || !visible) return;
const { yRatio, xRatio } = getVisibilityRatio(triggerElementRef.current);
@@ -87,10 +86,10 @@ const ControlPopover: FC<PopoverProps> = ({
if (newPlacement !== placement) {
setPlacement(newPlacement);
}
}, [getVisibilityRatio]);
}, [getVisibilityRatio, visible, placement]);
const changeContainerScrollStatus = useCallback(
visible => {
(visible: boolean | undefined) => {
const element = getSectionContainerElement();
if (element) {
element.style.setProperty(
@@ -106,7 +105,6 @@ const ControlPopover: FC<PopoverProps> = ({
const handleGetPopupContainer = useCallback(
(triggerNode: HTMLElement) => {
triggerElementRef.current = triggerNode;
return getPopupContainer?.(triggerNode) || document.body;
},
[calculatePlacement, getPopupContainer],
@@ -117,7 +115,6 @@ const ControlPopover: FC<PopoverProps> = ({
if (visible === undefined) {
changeContainerScrollStatus(visible);
}
setVisible(!!visible);
props.onOpenChange?.(!!visible);
},
@@ -133,6 +130,14 @@ const ControlPopover: FC<PopoverProps> = ({
},
[props],
);
const handleAfterOpenChange = useCallback(
(open: boolean) => {
if (open) {
calculatePlacement();
}
},
[calculatePlacement],
);
useEffect(() => {
if (visibleProp !== undefined) {
@@ -157,9 +162,34 @@ const ControlPopover: FC<PopoverProps> = ({
}, [handleDocumentKeyDownListener, visible]);
useEffect(() => {
if (visible) {
calculatePlacement();
}
if (!visible || !triggerElementRef.current) return () => {};
const resizeObserver = new ResizeObserver(() => {
requestAnimationFrame(() => {
calculatePlacement();
});
});
const intersectionObserver = new IntersectionObserver(
entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
calculatePlacement();
}
});
},
{ threshold: [0, 0.25, 0.5, 0.75, 1] },
);
resizeObserver.observe(
triggerElementRef.current.parentElement || document.body,
);
intersectionObserver.observe(triggerElementRef.current);
return () => {
resizeObserver.disconnect();
intersectionObserver.disconnect();
};
}, [visible, calculatePlacement]);
return (
@@ -171,6 +201,7 @@ const ControlPopover: FC<PopoverProps> = ({
onOpenChange={handleOnVisibleChange}
getPopupContainer={handleGetPopupContainer}
destroyTooltipOnHide={destroyTooltipOnHide}
afterOpenChange={handleAfterOpenChange}
/>
);
};