Merge pull request #3934 from xyflow/escape-fix

disableKeyboardA11y now correctly prevents escape key presses
This commit is contained in:
Moritz Klack
2024-02-26 14:22:44 +01:00
committed by GitHub
4 changed files with 7 additions and 8 deletions

View File

@@ -34,6 +34,7 @@ export function EdgeWrapper<EdgeType extends Edge = Edge>({
edgeTypes,
noPanClassName,
onError,
disableKeyboardA11y,
}: EdgeWrapperProps<EdgeType>): JSX.Element | null {
let edge = useStore((s) => s.edgeLookup.get(id)!) as EdgeType;
const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions);
@@ -160,7 +161,7 @@ export function EdgeWrapper<EdgeType extends Edge = Edge>({
: undefined;
const onKeyDown = (event: KeyboardEvent) => {
if (elementSelectionKeys.includes(event.key) && isSelectable) {
if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && isSelectable) {
const { unselectNodesAndEdges, addSelectedEdges } = store.getState();
const unselect = event.key === 'Escape';

View File

@@ -174,7 +174,7 @@ export function NodeWrapper<NodeType extends Node>({
};
const onKeyDown = (event: KeyboardEvent) => {
if (isInputDOMNode(event.nativeEvent)) {
if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) {
return;
}
@@ -187,12 +187,7 @@ export function NodeWrapper<NodeType extends Node>({
unselect,
nodeRef,
});
} else if (
!disableKeyboardA11y &&
isDraggable &&
node.selected &&
Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)
) {
} else if (isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {
store.setState({
ariaLiveMessage: `Moved selected node ${event.key
.replace('Arrow', '')

View File

@@ -56,6 +56,7 @@ function EdgeRendererComponent<EdgeType extends Edge = Edge>({
onEdgeDoubleClick,
onEdgeUpdateStart,
onEdgeUpdateEnd,
disableKeyboardA11y,
}: EdgeRendererProps<EdgeType>) {
const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } = useStore(selector, shallow);
const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
@@ -86,6 +87,7 @@ function EdgeRendererComponent<EdgeType extends Edge = Edge>({
rfId={rfId}
onError={onError}
edgeTypes={edgeTypes}
disableKeyboardA11y={disableKeyboardA11y}
/>
);
})}

View File

@@ -83,6 +83,7 @@ export type EdgeWrapperProps<EdgeType extends Edge = Edge> = {
rfId?: string;
edgeTypes?: EdgeTypes;
onError?: OnError;
disableKeyboardA11y?: boolean;
};
export type DefaultEdgeOptions = DefaultEdgeOptionsBase<Edge>;