feat(vue-flow,components): add mouseover events for minimap nodes
This commit is contained in:
@@ -16,6 +16,8 @@ const {
|
||||
maskColor = 'rgb(240, 242, 243, 0.7)',
|
||||
} = defineProps<MiniMapProps>()
|
||||
|
||||
const emit = defineEmits(['nodeClick', 'nodeDblclick', 'nodeMouseenter', 'nodeMousemove', 'nodeMouseleave'])
|
||||
|
||||
const attrs: Record<string, any> = useAttrs()
|
||||
|
||||
const window = useWindow()
|
||||
@@ -85,23 +87,33 @@ const d = controlledComputed($$(viewBox), () => {
|
||||
})
|
||||
|
||||
const onNodeClick = (event: MouseEvent, node: GraphNode) => {
|
||||
emits.miniMapNodeClick({ event, node })
|
||||
const param = { event, node, connectedEdges: getConnectedEdges([node], edges) }
|
||||
emits.miniMapNodeClick(param)
|
||||
emit('nodeClick', param)
|
||||
}
|
||||
|
||||
const onNodeDblClick = (event: MouseEvent, node: GraphNode) => {
|
||||
emits.miniMapNodeDoubleClick({ event, node })
|
||||
const param = { event, node, connectedEdges: getConnectedEdges([node], edges) }
|
||||
emits.miniMapNodeDoubleClick(param)
|
||||
emit('nodeDblclick', param)
|
||||
}
|
||||
|
||||
const onNodeMouseEnter = (event: MouseEvent, node: GraphNode) => {
|
||||
emits.miniMapNodeDoubleClick({ event, node })
|
||||
const param = { event, node, connectedEdges: getConnectedEdges([node], edges) }
|
||||
emits.miniMapNodeMouseEnter(param)
|
||||
emit('nodeMouseenter', param)
|
||||
}
|
||||
|
||||
const onNodeMouseMove = (event: MouseEvent, node: GraphNode) => {
|
||||
emits.miniMapNodeDoubleClick({ event, node })
|
||||
const param = { event, node, connectedEdges: getConnectedEdges([node], edges) }
|
||||
emits.miniMapNodeMouseMove(param)
|
||||
emit('nodeMousemove', param)
|
||||
}
|
||||
|
||||
const onNodeMouseLeave = (event: MouseEvent, node: GraphNode) => {
|
||||
emits.miniMapNodeDoubleClick({ event, node })
|
||||
const param = { event, node, connectedEdges: getConnectedEdges([node], edges) }
|
||||
emits.miniMapNodeMouseLeave(param)
|
||||
emit('nodeMouseleave', param)
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -131,11 +143,11 @@ export default {
|
||||
:stroke-color="nodeStrokeColorFunc(node)"
|
||||
:stroke-width="nodeStrokeWidth"
|
||||
:shape-rendering="shapeRendering"
|
||||
@click="(e: MouseEvent) => onNodeClick(e, node)"
|
||||
@dblclick="(e: MouseEvent) => onNodeDblClick(e, node)"
|
||||
@mouseenter="(e: MouseEvent) => onNodeMouseEnter(e, node)"
|
||||
@mousemove="(e: MouseEvent) => onNodeMouseMove(e, node)"
|
||||
@mouseleave="(e: MouseEvent) => onNodeMouseLeave(e, node)"
|
||||
@click="onNodeClick($event, node)"
|
||||
@dblclick="onNodeDblClick($event, node)"
|
||||
@mouseenter="onNodeMouseEnter($event, node)"
|
||||
@mousemove="onNodeMouseMove($event, node)"
|
||||
@mouseleave="onNodeMouseLeave($event, node)"
|
||||
>
|
||||
<slot
|
||||
:id="node.id"
|
||||
|
||||
@@ -31,6 +31,9 @@ const MiniMapNode: FunctionalComponent<MiniMapNodeProps> = function (
|
||||
shapeRendering,
|
||||
onClick: (e: MouseEvent) => emit('click', e),
|
||||
onDblClick: (e: MouseEvent) => emit('dblclick', e),
|
||||
onMouseenter: (e: MouseEvent) => emit('mouseenter', e),
|
||||
onMousemove: (e: MouseEvent) => emit('mousemove', e),
|
||||
onMouseleave: (e: MouseEvent) => emit('mouseleave', e),
|
||||
}),
|
||||
slots?.default?.(),
|
||||
]
|
||||
@@ -38,6 +41,6 @@ const MiniMapNode: FunctionalComponent<MiniMapNodeProps> = function (
|
||||
|
||||
MiniMapNode.props = ['position', 'dimensions', 'strokeWidth', 'strokeColor', 'borderRadius', 'color', 'shapeRendering']
|
||||
|
||||
MiniMapNode.emits = ['click', 'dbl-click', 'mouseenter', 'mousemove', 'mouseleave']
|
||||
MiniMapNode.emits = ['click', 'dblclick', 'mouseenter', 'mousemove', 'mouseleave']
|
||||
|
||||
export default MiniMapNode
|
||||
|
||||
@@ -38,9 +38,9 @@ export interface FlowEvents {
|
||||
nodeDragStop: NodeMouseEvent
|
||||
miniMapNodeClick: NodeMouseEvent
|
||||
miniMapNodeDoubleClick: NodeMouseEvent
|
||||
miniMapNodeMouseEnter: { event: MouseEvent; node: GraphNode }
|
||||
miniMapNodeMouseMove: { event: MouseEvent; node: GraphNode }
|
||||
miniMapNodeMouseLeave: { event: MouseEvent; node: GraphNode }
|
||||
miniMapNodeMouseEnter: NodeMouseEvent
|
||||
miniMapNodeMouseMove: NodeMouseEvent
|
||||
miniMapNodeMouseLeave: NodeMouseEvent
|
||||
connect: Connection
|
||||
connectStart: {
|
||||
event: MouseEvent
|
||||
|
||||
Reference in New Issue
Block a user