bugfix: controls not having correct zoom helper functions
* Check if prop event cbs are functions before calling
This commit is contained in:
@@ -31,7 +31,7 @@ export const ControlButton = defineComponent({
|
|||||||
},
|
},
|
||||||
setup(props, { slots }) {
|
setup(props, { slots }) {
|
||||||
return () => (
|
return () => (
|
||||||
<button class={['react-flow__controls-button']} onClick={props.onClick} disabled={props.disabled}>
|
<button class={['react-flow__controls-button']} {...props}>
|
||||||
{slots.default ? slots.default() : ''}
|
{slots.default ? slots.default() : ''}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
@@ -85,23 +85,27 @@ const Controls = defineComponent({
|
|||||||
setup(props, { slots }) {
|
setup(props, { slots }) {
|
||||||
const pinia = store();
|
const pinia = store();
|
||||||
const isVisible = ref<boolean>(false);
|
const isVisible = ref<boolean>(false);
|
||||||
const { zoomIn, zoomOut, fitView } = useZoomPanHelper();
|
const zoomHelper = ref(useZoomPanHelper());
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
zoomHelper.value = useZoomPanHelper();
|
||||||
|
});
|
||||||
|
|
||||||
const isInteractive = pinia.nodesDraggable && pinia.nodesConnectable && pinia.elementsSelectable;
|
const isInteractive = pinia.nodesDraggable && pinia.nodesConnectable && pinia.elementsSelectable;
|
||||||
const mapClasses = ['react-flow__controls'];
|
const mapClasses = ['react-flow__controls'];
|
||||||
|
|
||||||
const onZoomInHandler = () => {
|
const onZoomInHandler = () => {
|
||||||
zoomIn?.();
|
zoomHelper.value.zoomIn?.();
|
||||||
props.onZoomIn?.();
|
props.onZoomIn?.();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onZoomOutHandler = () => {
|
const onZoomOutHandler = () => {
|
||||||
zoomOut?.();
|
zoomHelper.value.zoomOut?.();
|
||||||
props.onZoomOut?.();
|
props.onZoomOut?.();
|
||||||
};
|
};
|
||||||
|
|
||||||
const onFitViewHandler = () => {
|
const onFitViewHandler = () => {
|
||||||
fitView?.(props.fitViewParams);
|
zoomHelper.value.fitView?.(props.fitViewParams);
|
||||||
props.onFitView?.();
|
props.onFitView?.();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ export default (EdgeComponent: any): Component<EdgeProps> => {
|
|||||||
const pinia = store();
|
const pinia = store();
|
||||||
const updating = ref<boolean>(false);
|
const updating = ref<boolean>(false);
|
||||||
const inactive = !props.elementsSelectable && !props.onClick;
|
const inactive = !props.elementsSelectable && !props.onClick;
|
||||||
const edgeClasses = [
|
const edgeClasses = computed(() => [
|
||||||
'react-flow__edge',
|
'react-flow__edge',
|
||||||
`react-flow__edge-${props.type}`,
|
`react-flow__edge-${props.type}`,
|
||||||
{ selected: props.selected, animated: props.animated, inactive, updating: updating.value }
|
{ selected: props.selected, animated: props.animated, inactive, updating: updating.value }
|
||||||
];
|
]);
|
||||||
|
|
||||||
const edgeElement = computed<Edge>(() => {
|
const edgeElement = computed<Edge>(() => {
|
||||||
const el: Edge = {
|
const el: Edge = {
|
||||||
@@ -52,19 +52,19 @@ export default (EdgeComponent: any): Component<EdgeProps> => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onEdgeContextMenu = (event: MouseEvent) => {
|
const onEdgeContextMenu = (event: MouseEvent) => {
|
||||||
if (props.onContextMenu) props.onContextMenu?.(event, edgeElement.value);
|
if (typeof props.onContextMenu === 'function') props.onContextMenu?.(event, edgeElement.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onEdgeMouseEnter = (event: MouseEvent) => {
|
const onEdgeMouseEnter = (event: MouseEvent) => {
|
||||||
if (props.onMouseEnter) props.onMouseEnter?.(event, edgeElement.value);
|
if (typeof props.onMouseEnter === 'function') props.onMouseEnter?.(event, edgeElement.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onEdgeMouseMove = (event: MouseEvent) => {
|
const onEdgeMouseMove = (event: MouseEvent) => {
|
||||||
if (props.onMouseMove) props.onMouseMove?.(event, edgeElement.value);
|
if (typeof props.onMouseMove === 'function') props.onMouseMove?.(event, edgeElement.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onEdgeMouseLeave = (event: MouseEvent) => {
|
const onEdgeMouseLeave = (event: MouseEvent) => {
|
||||||
if (props.onMouseLeave) props.onMouseLeave?.(event, edgeElement.value);
|
if (typeof props.onMouseLeave === 'function') props.onMouseLeave?.(event, edgeElement.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleEdgeUpdater = (event: MouseEvent, isSourceHandle: boolean) => {
|
const handleEdgeUpdater = (event: MouseEvent, isSourceHandle: boolean) => {
|
||||||
@@ -113,7 +113,7 @@ export default (EdgeComponent: any): Component<EdgeProps> => {
|
|||||||
|
|
||||||
return () => (
|
return () => (
|
||||||
<g
|
<g
|
||||||
class={edgeClasses}
|
class={edgeClasses.value}
|
||||||
onClick={onEdgeClick}
|
onClick={onEdgeClick}
|
||||||
onContextmenu={onEdgeContextMenu}
|
onContextmenu={onEdgeContextMenu}
|
||||||
onMouseenter={onEdgeMouseEnter}
|
onMouseenter={onEdgeMouseEnter}
|
||||||
|
|||||||
Reference in New Issue
Block a user