Merge pull request #3934 from xyflow/escape-fix
disableKeyboardA11y now correctly prevents escape key presses
This commit is contained in:
@@ -34,6 +34,7 @@ export function EdgeWrapper<EdgeType extends Edge = Edge>({
|
|||||||
edgeTypes,
|
edgeTypes,
|
||||||
noPanClassName,
|
noPanClassName,
|
||||||
onError,
|
onError,
|
||||||
|
disableKeyboardA11y,
|
||||||
}: EdgeWrapperProps<EdgeType>): JSX.Element | null {
|
}: EdgeWrapperProps<EdgeType>): JSX.Element | null {
|
||||||
let edge = useStore((s) => s.edgeLookup.get(id)!) as EdgeType;
|
let edge = useStore((s) => s.edgeLookup.get(id)!) as EdgeType;
|
||||||
const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);
|
const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);
|
||||||
@@ -160,7 +161,7 @@ export function EdgeWrapper<EdgeType extends Edge = Edge>({
|
|||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const onKeyDown = (event: KeyboardEvent) => {
|
const onKeyDown = (event: KeyboardEvent) => {
|
||||||
if (elementSelectionKeys.includes(event.key) && isSelectable) {
|
if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && isSelectable) {
|
||||||
const { unselectNodesAndEdges, addSelectedEdges } = store.getState();
|
const { unselectNodesAndEdges, addSelectedEdges } = store.getState();
|
||||||
const unselect = event.key === 'Escape';
|
const unselect = event.key === 'Escape';
|
||||||
|
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ export function NodeWrapper<NodeType extends Node>({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onKeyDown = (event: KeyboardEvent) => {
|
const onKeyDown = (event: KeyboardEvent) => {
|
||||||
if (isInputDOMNode(event.nativeEvent)) {
|
if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,12 +187,7 @@ export function NodeWrapper<NodeType extends Node>({
|
|||||||
unselect,
|
unselect,
|
||||||
nodeRef,
|
nodeRef,
|
||||||
});
|
});
|
||||||
} else if (
|
} else if (isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {
|
||||||
!disableKeyboardA11y &&
|
|
||||||
isDraggable &&
|
|
||||||
node.selected &&
|
|
||||||
Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)
|
|
||||||
) {
|
|
||||||
store.setState({
|
store.setState({
|
||||||
ariaLiveMessage: `Moved selected node ${event.key
|
ariaLiveMessage: `Moved selected node ${event.key
|
||||||
.replace('Arrow', '')
|
.replace('Arrow', '')
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ function EdgeRendererComponent<EdgeType extends Edge = Edge>({
|
|||||||
onEdgeDoubleClick,
|
onEdgeDoubleClick,
|
||||||
onEdgeUpdateStart,
|
onEdgeUpdateStart,
|
||||||
onEdgeUpdateEnd,
|
onEdgeUpdateEnd,
|
||||||
|
disableKeyboardA11y,
|
||||||
}: EdgeRendererProps<EdgeType>) {
|
}: EdgeRendererProps<EdgeType>) {
|
||||||
const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } = useStore(selector, shallow);
|
const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } = useStore(selector, shallow);
|
||||||
const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
|
const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
|
||||||
@@ -86,6 +87,7 @@ function EdgeRendererComponent<EdgeType extends Edge = Edge>({
|
|||||||
rfId={rfId}
|
rfId={rfId}
|
||||||
onError={onError}
|
onError={onError}
|
||||||
edgeTypes={edgeTypes}
|
edgeTypes={edgeTypes}
|
||||||
|
disableKeyboardA11y={disableKeyboardA11y}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ export type EdgeWrapperProps<EdgeType extends Edge = Edge> = {
|
|||||||
rfId?: string;
|
rfId?: string;
|
||||||
edgeTypes?: EdgeTypes;
|
edgeTypes?: EdgeTypes;
|
||||||
onError?: OnError;
|
onError?: OnError;
|
||||||
|
disableKeyboardA11y?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type DefaultEdgeOptions = DefaultEdgeOptionsBase<Edge>;
|
export type DefaultEdgeOptions = DefaultEdgeOptionsBase<Edge>;
|
||||||
|
|||||||
Reference in New Issue
Block a user