Merge pull request #4826 from xyflow/fix/panel-ref
fix(panel): forward ref to inner panel div
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'@xyflow/react': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Forward ref of the div inside Panel components.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { HTMLAttributes, ReactNode } from 'react';
|
import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';
|
||||||
import cc from 'classcat';
|
import cc from 'classcat';
|
||||||
import type { PanelPosition } from '@xyflow/system';
|
import type { PanelPosition } from '@xyflow/system';
|
||||||
|
|
||||||
@@ -15,17 +15,20 @@ export type PanelProps = HTMLAttributes<HTMLDivElement> & {
|
|||||||
|
|
||||||
const selector = (s: ReactFlowState) => (s.userSelectionActive ? 'none' : 'all');
|
const selector = (s: ReactFlowState) => (s.userSelectionActive ? 'none' : 'all');
|
||||||
|
|
||||||
export function Panel({ position = 'top-left', children, className, style, ...rest }: PanelProps) {
|
export const Panel = forwardRef<HTMLDivElement, PanelProps>(
|
||||||
const pointerEvents = useStore(selector);
|
({ position = 'top-left', children, className, style, ...rest }, ref) => {
|
||||||
const positionClasses = `${position}`.split('-');
|
const pointerEvents = useStore(selector);
|
||||||
|
const positionClasses = `${position}`.split('-');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={cc(['react-flow__panel', className, ...positionClasses])}
|
className={cc(['react-flow__panel', className, ...positionClasses])}
|
||||||
style={{ ...style, pointerEvents }}
|
style={{ ...style, pointerEvents }}
|
||||||
{...rest}
|
ref={ref}
|
||||||
>
|
{...rest}
|
||||||
{children}
|
>
|
||||||
</div>
|
{children}
|
||||||
);
|
</div>
|
||||||
}
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user