chore(a11y): pass labelConfig state through store updater

This commit is contained in:
Abbey Yacoe
2025-05-21 12:21:59 +02:00
parent ee8709b5fb
commit 54fc3c0717
7 changed files with 6 additions and 32 deletions
+1 -19
View File
@@ -1,4 +1,4 @@
import { MouseEvent, useMemo, useEffect } from 'react'; import { MouseEvent } from 'react';
import { import {
ReactFlow, ReactFlow,
MiniMap, MiniMap,
@@ -9,8 +9,6 @@ import {
Node, Node,
Edge, Edge,
OnNodeDrag, OnNodeDrag,
FitViewOptions,
useStore,
} from '@xyflow/react'; } from '@xyflow/react';
const onNodeDrag: OnNodeDrag = (_, node: Node, nodes: Node[]) => console.log('drag', node, nodes); const onNodeDrag: OnNodeDrag = (_, node: Node, nodes: Node[]) => console.log('drag', node, nodes);
@@ -46,22 +44,6 @@ const initialEdges: Edge[] = [
]; ];
const A11y = () => { const A11y = () => {
const labelConfig = useStore((state) => state.labelConfig);
const updateLabelConfig = useStore((state) => state.updateLabelConfig);
useEffect(() => {
console.log('Label Config:', labelConfig);
}, [labelConfig]);
useEffect(() => {
console.log('Updating labelConfig...');
updateLabelConfig({
'a11yDescription.node.default': 'Updated Node Desc.',
'a11yDescription.node.keyboardDisabled': 'Updated Keyboard Desc.',
'a11yDescription.edge.default': 'Updated Edge Desc.',
});
}, [updateLabelConfig]);
return ( return (
<ReactFlow <ReactFlow
defaultNodes={initialNodes} defaultNodes={initialNodes}
@@ -68,6 +68,7 @@ const reactFlowFieldsToTrack = [
'debug', 'debug',
'autoPanSpeed', 'autoPanSpeed',
'paneClickDistance', 'paneClickDistance',
'labelConfig',
] as const; ] as const;
type ReactFlowFieldsToTrack = (typeof reactFlowFieldsToTrack)[number]; type ReactFlowFieldsToTrack = (typeof reactFlowFieldsToTrack)[number];
@@ -306,6 +306,7 @@ function ReactFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(
onBeforeDelete={onBeforeDelete} onBeforeDelete={onBeforeDelete}
paneClickDistance={paneClickDistance} paneClickDistance={paneClickDistance}
debug={debug} debug={debug}
labelConfig={labelConfig}
/> />
<SelectionListener<NodeType, EdgeType> onSelectionChange={onSelectionChange} /> <SelectionListener<NodeType, EdgeType> onSelectionChange={onSelectionChange} />
{children} {children}
-5
View File
@@ -371,11 +371,6 @@ const createStore = ({
}, },
reset: () => set({ ...getInitialState() }), reset: () => set({ ...getInitialState() }),
updateLabelConfig: (newLabelConfig: Partial<LabelConfig>) => {
set((state) => ({
labelConfig: { ...state.labelConfig, ...newLabelConfig },
}));
},
}; };
}, Object.is); }, Object.is);
+1 -2
View File
@@ -148,7 +148,7 @@ export type ReactFlowStore<NodeType extends Node = Node, EdgeType extends Edge =
lib: string; lib: string;
debug: boolean; debug: boolean;
labelConfig: Required<LabelConfig>; labelConfig: LabelConfig;
}; };
export type ReactFlowActions<NodeType extends Node, EdgeType extends Edge> = { export type ReactFlowActions<NodeType extends Node, EdgeType extends Edge> = {
@@ -172,7 +172,6 @@ export type ReactFlowActions<NodeType extends Node, EdgeType extends Edge> = {
triggerEdgeChanges: (changes: EdgeChange<EdgeType>[]) => void; triggerEdgeChanges: (changes: EdgeChange<EdgeType>[]) => void;
panBy: PanBy; panBy: PanBy;
setPaneClickDistance: (distance: number) => void; setPaneClickDistance: (distance: number) => void;
updateLabelConfig: (newLabelConfig: Partial<LabelConfig>) => void;
}; };
export type ReactFlowState<NodeType extends Node = Node, EdgeType extends Edge = Edge> = ReactFlowStore< export type ReactFlowState<NodeType extends Node = Node, EdgeType extends Edge = Edge> = ReactFlowStore<
+2
View File
@@ -45,3 +45,5 @@ export const defaultLabelConfig = {
'a11yDescription.edge.default': 'a11yDescription.edge.default':
'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.', 'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.',
}; };
export type LabelConfig = Partial<typeof defaultLabelConfig>;
-6
View File
@@ -313,9 +313,3 @@ export type OnBeforeDeleteBase<NodeType extends NodeBase = NodeBase, EdgeType ex
nodes: NodeType[]; nodes: NodeType[];
edges: EdgeType[]; edges: EdgeType[];
}) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>; }) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>;
export type LabelConfig = {
'a11yDescription.node.default'?: string;
'a11yDescription.node.keyboardDisabled'?: string;
'a11yDescription.edge.default'?: string;
};