refactor(edge-text): allow html attributes as props

This commit is contained in:
moklick
2021-03-01 15:42:17 +01:00
parent 1745320101
commit 254003919c
2 changed files with 50 additions and 50 deletions
+7 -7
View File
@@ -1,9 +1,8 @@
import React, { memo, useRef, useState, useEffect } from 'react'; import React, { memo, useRef, useState, useEffect, FC } from 'react';
import { EdgeTextProps, Rect } from '../../types'; import { EdgeTextProps, Rect } from '../../types';
export default memo( const EdgeText: FC<EdgeTextProps> = ({
({
x, x,
y, y,
label, label,
@@ -12,7 +11,8 @@ export default memo(
labelBgStyle = {}, labelBgStyle = {},
labelBgPadding = [2, 4], labelBgPadding = [2, 4],
labelBgBorderRadius = 2, labelBgBorderRadius = 2,
}: EdgeTextProps) => { ...rest
}) => {
const edgeRef = useRef<SVGTextElement>(null); const edgeRef = useRef<SVGTextElement>(null);
const [edgeTextBbox, setEdgeTextBbox] = useState<Rect>({ x: 0, y: 0, width: 0, height: 0 }); const [edgeTextBbox, setEdgeTextBbox] = useState<Rect>({ x: 0, y: 0, width: 0, height: 0 });
@@ -34,7 +34,7 @@ export default memo(
} }
return ( return (
<g transform={`translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`}> <g transform={`translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`} {...rest}>
{labelShowBg && ( {labelShowBg && (
<rect <rect
width={edgeTextBbox.width + 2 * labelBgPadding[0]} width={edgeTextBbox.width + 2 * labelBgPadding[0]}
@@ -52,5 +52,5 @@ export default memo(
</text> </text>
</g> </g>
); );
} };
); export default memo(EdgeText);
+2 -2
View File
@@ -1,4 +1,4 @@
import { CSSProperties, MouseEvent as ReactMouseEvent } from 'react'; import { CSSProperties, MouseEvent as ReactMouseEvent, HTMLAttributes } from 'react';
import { Selection as D3Selection, ZoomBehavior } from 'd3'; import { Selection as D3Selection, ZoomBehavior } from 'd3';
export type ElementId = string; export type ElementId = string;
@@ -157,7 +157,7 @@ export interface EdgeSmoothStepProps<T = any> extends EdgeProps<T> {
borderRadius?: number; borderRadius?: number;
} }
export interface EdgeTextProps { export interface EdgeTextProps extends HTMLAttributes<SVGElement> {
x: number; x: number;
y: number; y: number;
label?: string; label?: string;