Merge branch 'namack-always-allow-onElementClick'
This commit is contained in:
@@ -20,6 +20,20 @@ describe('Interaction Flow Rendering', () => {
|
|||||||
expect(pointerEvents).to.equal('none');
|
expect(pointerEvents).to.equal('none');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('toggles on capture element click', () => {
|
||||||
|
cy.get('.react-flow__captureelementclick').click();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('allows node clicks when enabled', () => {
|
||||||
|
const pointerEvents = Cypress.$('.react-flow__node:first').css('pointer-events');
|
||||||
|
expect(pointerEvents).to.equal('all');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('allows edge clicks when enabled', () => {
|
||||||
|
const pointerEvents = Cypress.$('.react-flow__edge:first').css('pointer-events');
|
||||||
|
expect(pointerEvents).to.equal('all');
|
||||||
|
});
|
||||||
|
|
||||||
it('tries to do a selection', () => {
|
it('tries to do a selection', () => {
|
||||||
cy.get('body').type('{shift}', { release: false }).get('.react-flow__selectionpane').should('not.exist');
|
cy.get('body').type('{shift}', { release: false }).get('.react-flow__selectionpane').should('not.exist');
|
||||||
cy.get('body').type('{shift}', { release: true });
|
cy.get('body').type('{shift}', { release: true });
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ const InteractionFlow = () => {
|
|||||||
const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false);
|
const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false);
|
||||||
const [paneMoveable, setPaneMoveable] = useState(true);
|
const [paneMoveable, setPaneMoveable] = useState(true);
|
||||||
const [captureZoomClick, setCaptureZoomClick] = useState(false);
|
const [captureZoomClick, setCaptureZoomClick] = useState(false);
|
||||||
|
const [captureElementClick, setCaptureElementClick] = useState(false);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ReactFlow
|
<ReactFlow
|
||||||
@@ -38,7 +39,7 @@ const InteractionFlow = () => {
|
|||||||
zoomOnScroll={zoomOnScroll}
|
zoomOnScroll={zoomOnScroll}
|
||||||
zoomOnDoubleClick={zoomOnDoubleClick}
|
zoomOnDoubleClick={zoomOnDoubleClick}
|
||||||
onConnect={onConnect}
|
onConnect={onConnect}
|
||||||
onElementClick={onElementClick}
|
onElementClick={captureElementClick ? onElementClick : undefined}
|
||||||
onNodeDragStart={onNodeDragStart}
|
onNodeDragStart={onNodeDragStart}
|
||||||
onNodeDragStop={onNodeDragStop}
|
onNodeDragStop={onNodeDragStop}
|
||||||
paneMoveable={paneMoveable}
|
paneMoveable={paneMoveable}
|
||||||
@@ -133,6 +134,18 @@ const InteractionFlow = () => {
|
|||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<label htmlFor="captureelementclick">
|
||||||
|
capture element click
|
||||||
|
<input
|
||||||
|
id="captureelementclick"
|
||||||
|
type="checkbox"
|
||||||
|
checked={captureElementClick}
|
||||||
|
onChange={(event) => setCaptureElementClick(event.target.checked)}
|
||||||
|
className="react-flow__captureelementclick"
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ReactFlow>
|
</ReactFlow>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -53,15 +53,13 @@ export default (EdgeComponent: ComponentType<EdgeCompProps>) => {
|
|||||||
|
|
||||||
const edgeClasses = cc(['react-flow__edge', `react-flow__edge-${type}`, className, { selected, animated }]);
|
const edgeClasses = cc(['react-flow__edge', `react-flow__edge-${type}`, className, { selected, animated }]);
|
||||||
const edgeGroupStyle: CSSProperties = {
|
const edgeGroupStyle: CSSProperties = {
|
||||||
pointerEvents: elementsSelectable ? 'all' : 'none',
|
pointerEvents: elementsSelectable || onClick ? 'all' : 'none',
|
||||||
};
|
};
|
||||||
const onEdgeClick = (event: React.MouseEvent<SVGGElement, MouseEvent>): void => {
|
const onEdgeClick = (event: React.MouseEvent<SVGGElement, MouseEvent>): void => {
|
||||||
if (!elementsSelectable) {
|
if (elementsSelectable) {
|
||||||
return;
|
setSelectedElements({ id, source, target });
|
||||||
}
|
}
|
||||||
|
|
||||||
setSelectedElements({ id, source, target });
|
|
||||||
|
|
||||||
if (onClick) {
|
if (onClick) {
|
||||||
const edgeElement: Edge = { id, source, target, type };
|
const edgeElement: Edge = { id, source, target, type };
|
||||||
|
|
||||||
|
|||||||
@@ -241,10 +241,10 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
|||||||
(event: MouseEvent) => {
|
(event: MouseEvent) => {
|
||||||
if (!isDraggable && isSelectable) {
|
if (!isDraggable && isSelectable) {
|
||||||
setSelectedElements({ id: node.id, type: node.type } as Node);
|
setSelectedElements({ id: node.id, type: node.type } as Node);
|
||||||
|
}
|
||||||
|
|
||||||
if (onClick) {
|
if (onClick) {
|
||||||
onClick(event, node);
|
onClick(event, node);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[isSelectable, isDraggable, node]
|
[isSelectable, isDraggable, node]
|
||||||
@@ -279,7 +279,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
|||||||
const nodeStyle: CSSProperties = {
|
const nodeStyle: CSSProperties = {
|
||||||
zIndex: selected ? 10 : 3,
|
zIndex: selected ? 10 : 3,
|
||||||
transform: `translate(${xPos}px,${yPos}px)`,
|
transform: `translate(${xPos}px,${yPos}px)`,
|
||||||
pointerEvents: isSelectable || isDraggable ? 'all' : 'none',
|
pointerEvents: isSelectable || isDraggable || onClick ? 'all' : 'none',
|
||||||
...style,
|
...style,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user