exposed selectable, deletable, draggable to custom nodes & edges
This commit is contained in:
@@ -215,6 +215,8 @@ export function EdgeWrapper<EdgeType extends Edge = Edge>({
|
|||||||
type={edge.type}
|
type={edge.type}
|
||||||
selected={edge.selected}
|
selected={edge.selected}
|
||||||
animated={edge.animated}
|
animated={edge.animated}
|
||||||
|
selectable={isSelectable}
|
||||||
|
deletable={edge.deletable ?? true}
|
||||||
label={edge.label}
|
label={edge.label}
|
||||||
labelStyle={edge.labelStyle}
|
labelStyle={edge.labelStyle}
|
||||||
labelShowBg={edge.labelShowBg}
|
labelShowBg={edge.labelShowBg}
|
||||||
|
|||||||
@@ -209,6 +209,9 @@ export function NodeWrapper<NodeType extends Node>({
|
|||||||
positionAbsoluteX={clampedPosition.x}
|
positionAbsoluteX={clampedPosition.x}
|
||||||
positionAbsoluteY={clampedPosition.y}
|
positionAbsoluteY={clampedPosition.y}
|
||||||
selected={node.selected}
|
selected={node.selected}
|
||||||
|
selectable={isSelectable}
|
||||||
|
draggable={isDraggable}
|
||||||
|
deletable={node.deletable ?? true}
|
||||||
isConnectable={isConnectable}
|
isConnectable={isConnectable}
|
||||||
sourcePosition={node.sourcePosition}
|
sourcePosition={node.sourcePosition}
|
||||||
targetPosition={node.targetPosition}
|
targetPosition={node.targetPosition}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ export type EdgeTextProps = HTMLAttributes<SVGElement> &
|
|||||||
*/
|
*/
|
||||||
export type EdgeProps<EdgeType extends Edge = Edge> = Pick<
|
export type EdgeProps<EdgeType extends Edge = Edge> = Pick<
|
||||||
EdgeType,
|
EdgeType,
|
||||||
'id' | 'animated' | 'data' | 'style' | 'selected' | 'source' | 'target'
|
'id' | 'animated' | 'data' | 'style' | 'selected' | 'source' | 'target' | 'selectable' | 'deletable'
|
||||||
> &
|
> &
|
||||||
EdgePosition &
|
EdgePosition &
|
||||||
EdgeLabelOptions & {
|
EdgeLabelOptions & {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
export let animated: $$Props['animated'] = false;
|
export let animated: $$Props['animated'] = false;
|
||||||
export let selected: $$Props['selected'] = false;
|
export let selected: $$Props['selected'] = false;
|
||||||
export let selectable: $$Props['selectable'] = undefined;
|
export let selectable: $$Props['selectable'] = undefined;
|
||||||
|
export let deletable: $$Props['deletable'] = undefined;
|
||||||
export let hidden: $$Props['hidden'] = false;
|
export let hidden: $$Props['hidden'] = false;
|
||||||
export let label: $$Props['label'] = undefined;
|
export let label: $$Props['label'] = undefined;
|
||||||
export let labelStyle: $$Props['labelStyle'] = undefined;
|
export let labelStyle: $$Props['labelStyle'] = undefined;
|
||||||
@@ -55,7 +56,7 @@
|
|||||||
$: edgeComponent = $edgeTypes[edgeType] || BezierEdgeInternal;
|
$: edgeComponent = $edgeTypes[edgeType] || BezierEdgeInternal;
|
||||||
$: markerStartUrl = markerStart ? `url('#${getMarkerId(markerStart, $flowId)}')` : undefined;
|
$: markerStartUrl = markerStart ? `url('#${getMarkerId(markerStart, $flowId)}')` : undefined;
|
||||||
$: markerEndUrl = markerEnd ? `url('#${getMarkerId(markerEnd, $flowId)}')` : undefined;
|
$: markerEndUrl = markerEnd ? `url('#${getMarkerId(markerEnd, $flowId)}')` : undefined;
|
||||||
$: isSelectable = selectable || ($elementsSelectable && typeof selectable === 'undefined');
|
$: isSelectable = selectable ?? $elementsSelectable;
|
||||||
|
|
||||||
const handleEdgeSelect = useHandleEdgeSelect();
|
const handleEdgeSelect = useHandleEdgeSelect();
|
||||||
|
|
||||||
@@ -114,6 +115,8 @@
|
|||||||
{data}
|
{data}
|
||||||
{style}
|
{style}
|
||||||
{interactionWidth}
|
{interactionWidth}
|
||||||
|
selectable={isSelectable}
|
||||||
|
deletable={deletable ?? true}
|
||||||
type={edgeType}
|
type={edgeType}
|
||||||
sourceHandleId={sourceHandle}
|
sourceHandleId={sourceHandle}
|
||||||
targetHandleId={targetHandle}
|
targetHandleId={targetHandle}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
export let draggable: $$Props['draggable'] = undefined;
|
export let draggable: $$Props['draggable'] = undefined;
|
||||||
export let selectable: $$Props['selectable'] = undefined;
|
export let selectable: $$Props['selectable'] = undefined;
|
||||||
export let connectable: $$Props['connectable'] = true;
|
export let connectable: $$Props['connectable'] = true;
|
||||||
|
export let deletable: $$Props['deletable'] = true;
|
||||||
export let hidden: $$Props['hidden'] = false;
|
export let hidden: $$Props['hidden'] = false;
|
||||||
export let dragging: boolean = false;
|
export let dragging: boolean = false;
|
||||||
export let resizeObserver: $$Props['resizeObserver'] = null;
|
export let resizeObserver: $$Props['resizeObserver'] = null;
|
||||||
@@ -192,10 +193,13 @@
|
|||||||
{data}
|
{data}
|
||||||
{id}
|
{id}
|
||||||
{selected}
|
{selected}
|
||||||
|
{selectable}
|
||||||
|
{deletable}
|
||||||
{sourcePosition}
|
{sourcePosition}
|
||||||
{targetPosition}
|
{targetPosition}
|
||||||
{zIndex}
|
{zIndex}
|
||||||
{dragging}
|
{dragging}
|
||||||
|
{draggable}
|
||||||
{dragHandle}
|
{dragHandle}
|
||||||
type={nodeType}
|
type={nodeType}
|
||||||
isConnectable={$connectableStore}
|
isConnectable={$connectableStore}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ export type NodeWrapperProps = Pick<
|
|||||||
| 'dragging'
|
| 'dragging'
|
||||||
| 'selected'
|
| 'selected'
|
||||||
| 'selectable'
|
| 'selectable'
|
||||||
|
| 'deletable'
|
||||||
| 'style'
|
| 'style'
|
||||||
| 'type'
|
| 'type'
|
||||||
| 'sourcePosition'
|
| 'sourcePosition'
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
const {
|
const {
|
||||||
visibleEdges,
|
visibleEdges,
|
||||||
edgesInitialized,
|
edgesInitialized,
|
||||||
edges: { setDefaultOptions }
|
edges: { setDefaultOptions },
|
||||||
|
elementsSelectable,
|
||||||
} = useStore();
|
} = useStore();
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
@@ -33,7 +34,8 @@
|
|||||||
style={edge.style}
|
style={edge.style}
|
||||||
animated={edge.animated}
|
animated={edge.animated}
|
||||||
selected={edge.selected}
|
selected={edge.selected}
|
||||||
selectable={edge.selectable}
|
selectable={edge.selectable ?? $elementsSelectable}
|
||||||
|
deletable={edge.deletable}
|
||||||
hidden={edge.hidden}
|
hidden={edge.hidden}
|
||||||
label={edge.label}
|
label={edge.label}
|
||||||
labelStyle={edge.labelStyle}
|
labelStyle={edge.labelStyle}
|
||||||
|
|||||||
@@ -62,6 +62,7 @@
|
|||||||
node.connectable ||
|
node.connectable ||
|
||||||
($nodesConnectable && typeof node.connectable === 'undefined')
|
($nodesConnectable && typeof node.connectable === 'undefined')
|
||||||
)}
|
)}
|
||||||
|
deletable={node.deletable ?? true}
|
||||||
positionX={node.internals.positionAbsolute.x}
|
positionX={node.internals.positionAbsolute.x}
|
||||||
positionY={node.internals.positionAbsolute.y}
|
positionY={node.internals.positionAbsolute.y}
|
||||||
positionOriginX={posOrigin.x ?? 0}
|
positionOriginX={posOrigin.x ?? 0}
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ export type EdgeLayouted = Pick<
|
|||||||
| 'animated'
|
| 'animated'
|
||||||
| 'selected'
|
| 'selected'
|
||||||
| 'selectable'
|
| 'selectable'
|
||||||
|
| 'deletable'
|
||||||
| 'label'
|
| 'label'
|
||||||
| 'labelStyle'
|
| 'labelStyle'
|
||||||
| 'interactionWidth'
|
| 'interactionWidth'
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ export type InternalNodeBase<NodeType extends NodeBase = NodeBase> = NodeType &
|
|||||||
*/
|
*/
|
||||||
export type NodeProps<NodeType extends NodeBase> = Pick<
|
export type NodeProps<NodeType extends NodeBase> = Pick<
|
||||||
NodeType,
|
NodeType,
|
||||||
'id' | 'data' | 'width' | 'height' | 'sourcePosition' | 'targetPosition' | 'selected' | 'dragHandle'
|
'id' | 'data' | 'width' | 'height' | 'sourcePosition' | 'targetPosition' | 'selected' | 'dragHandle' | 'selectable' | 'deletable' | 'draggable'
|
||||||
> &
|
> &
|
||||||
Required<Pick<NodeType, 'type' | 'dragging' | 'zIndex'>> & {
|
Required<Pick<NodeType, 'type' | 'dragging' | 'zIndex'>> & {
|
||||||
/** whether a node is connectable or not */
|
/** whether a node is connectable or not */
|
||||||
|
|||||||
Reference in New Issue
Block a user