chore(a11y): pass labelConfig state through store updater
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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<
|
||||||
|
|||||||
@@ -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>;
|
||||||
|
|||||||
@@ -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;
|
|
||||||
};
|
|
||||||
|
|||||||
Reference in New Issue
Block a user