chore(a11y): rename props, fix linting error
This commit is contained in:
@@ -235,7 +235,7 @@ const OverviewFlow = () => {
|
|||||||
onBeforeDelete={onBeforeDelete}
|
onBeforeDelete={onBeforeDelete}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
onPaneMouseMove={onPaneMouseMove}
|
onPaneMouseMove={onPaneMouseMove}
|
||||||
a11yMessages={{
|
descriptions={{
|
||||||
'a11yDescription.node.default': 'Custom Node Desc.',
|
'a11yDescription.node.default': 'Custom Node Desc.',
|
||||||
'a11yDescription.node.keyboardDisabled': 'Custom Keyboard Desc.',
|
'a11yDescription.node.keyboardDisabled': 'Custom Keyboard Desc.',
|
||||||
'a11yDescription.edge.default': 'Custom Edge Desc.',
|
'a11yDescription.edge.default': 'Custom Edge Desc.',
|
||||||
|
|||||||
@@ -220,7 +220,7 @@
|
|||||||
console.log('on selection changed via prop', { nodes, edges });
|
console.log('on selection changed via prop', { nodes, edges });
|
||||||
}}
|
}}
|
||||||
selectNodesOnDrag
|
selectNodesOnDrag
|
||||||
a11yMessages={{
|
descriptions={{
|
||||||
'a11yDescription.node.default': 'Svelte Custom Node Description.',
|
'a11yDescription.node.default': 'Svelte Custom Node Description.',
|
||||||
'a11yDescription.node.keyboardDisabled': 'Svelte Custom Keyboard Description',
|
'a11yDescription.node.keyboardDisabled': 'Svelte Custom Keyboard Description',
|
||||||
'a11yDescription.edge.default': 'Svelte Custom Edge Desc.',
|
'a11yDescription.edge.default': 'Svelte Custom Edge Desc.',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { CSSProperties } from 'react';
|
|||||||
|
|
||||||
import { useStore } from '../../hooks/useStore';
|
import { useStore } from '../../hooks/useStore';
|
||||||
import type { ReactFlowState } from '../../types';
|
import type { ReactFlowState } from '../../types';
|
||||||
import type { a11yMessages } from '@xyflow/system';
|
import type { descriptions } from '@xyflow/system';
|
||||||
|
|
||||||
const style: CSSProperties = { display: 'none' };
|
const style: CSSProperties = { display: 'none' };
|
||||||
const ariaLiveStyle: CSSProperties = {
|
const ariaLiveStyle: CSSProperties = {
|
||||||
@@ -21,7 +21,7 @@ export const ARIA_NODE_DESC_KEY = 'react-flow__node-desc';
|
|||||||
export const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';
|
export const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';
|
||||||
export const ARIA_LIVE_MESSAGE = 'react-flow__aria-live';
|
export const ARIA_LIVE_MESSAGE = 'react-flow__aria-live';
|
||||||
|
|
||||||
const defaultA11yMessages: Required<a11yMessages> = {
|
const defaultDescriptions: Required<descriptions> = {
|
||||||
'a11yDescription.node.default':
|
'a11yDescription.node.default':
|
||||||
'Press enter or space to select a node. Press delete to remove it and escape to cancel.',
|
'Press enter or space to select a node. Press delete to remove it and escape to cancel.',
|
||||||
'a11yDescription.node.keyboardDisabled':
|
'a11yDescription.node.keyboardDisabled':
|
||||||
@@ -45,17 +45,17 @@ function AriaLiveMessage({ rfId }: { rfId: string }) {
|
|||||||
export function A11yDescriptions({
|
export function A11yDescriptions({
|
||||||
rfId,
|
rfId,
|
||||||
disableKeyboardA11y,
|
disableKeyboardA11y,
|
||||||
a11yMessages = {},
|
descriptions = {},
|
||||||
}: {
|
}: {
|
||||||
rfId: string;
|
rfId: string;
|
||||||
disableKeyboardA11y: boolean;
|
disableKeyboardA11y: boolean;
|
||||||
a11yMessages?: a11yMessages;
|
descriptions?: descriptions;
|
||||||
}) {
|
}) {
|
||||||
const nodeDesc = disableKeyboardA11y
|
const nodeDesc = disableKeyboardA11y
|
||||||
? a11yMessages['a11yDescription.node.default'] || defaultA11yMessages['a11yDescription.node.default']
|
? descriptions['a11yDescription.node.default'] || defaultDescriptions['a11yDescription.node.default']
|
||||||
: a11yMessages['a11yDescription.node.keyboardDisabled'] ||
|
: descriptions['a11yDescription.node.keyboardDisabled'] ||
|
||||||
defaultA11yMessages['a11yDescription.node.keyboardDisabled'];
|
defaultDescriptions['a11yDescription.node.keyboardDisabled'];
|
||||||
const edgeDesc = a11yMessages['a11yDescription.edge.default'] || defaultA11yMessages['a11yDescription.edge.default'];
|
const edgeDesc = descriptions['a11yDescription.edge.default'] || defaultDescriptions['a11yDescription.edge.default'];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ function ReactFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(
|
|||||||
colorMode = 'light',
|
colorMode = 'light',
|
||||||
debug,
|
debug,
|
||||||
onScroll,
|
onScroll,
|
||||||
a11yMessages,
|
descriptions,
|
||||||
...rest
|
...rest
|
||||||
}: ReactFlowProps<NodeType, EdgeType>,
|
}: ReactFlowProps<NodeType, EdgeType>,
|
||||||
ref: ForwardedRef<HTMLDivElement>
|
ref: ForwardedRef<HTMLDivElement>
|
||||||
@@ -310,7 +310,7 @@ function ReactFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(
|
|||||||
<SelectionListener<NodeType, EdgeType> onSelectionChange={onSelectionChange} />
|
<SelectionListener<NodeType, EdgeType> onSelectionChange={onSelectionChange} />
|
||||||
{children}
|
{children}
|
||||||
<Attribution proOptions={proOptions} position={attributionPosition} />
|
<Attribution proOptions={proOptions} position={attributionPosition} />
|
||||||
<A11yDescriptions rfId={rfId} disableKeyboardA11y={disableKeyboardA11y} a11yMessages={a11yMessages} />
|
<A11yDescriptions rfId={rfId} disableKeyboardA11y={disableKeyboardA11y} descriptions={descriptions} />
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import type {
|
|||||||
ColorMode,
|
ColorMode,
|
||||||
SnapGrid,
|
SnapGrid,
|
||||||
OnReconnect,
|
OnReconnect,
|
||||||
a11yMessages,
|
descriptions,
|
||||||
} from '@xyflow/system';
|
} from '@xyflow/system';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
@@ -671,5 +671,5 @@ export interface ReactFlowProps<NodeType extends Node = Node, EdgeType extends E
|
|||||||
* Custom accessibility messages for screen readers and a11y features.
|
* Custom accessibility messages for screen readers and a11y features.
|
||||||
* Allows localization and customization of ARIA descriptions.
|
* Allows localization and customization of ARIA descriptions.
|
||||||
*/
|
*/
|
||||||
a11yMessages?: a11yMessages;
|
descriptions?: descriptions;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<script lang="ts" generics="NodeType extends Node = Node, EdgeType extends Edge = Edge">
|
<script lang="ts" generics="NodeType extends Node = Node, EdgeType extends Edge = Edge">
|
||||||
import type { SvelteFlowStore } from '$lib/store/types';
|
import type { SvelteFlowStore } from '$lib/store/types';
|
||||||
import type { a11yMessages } from '@xyflow/system';
|
import type { descriptions as DescriptionsType } from '@xyflow/system'; // Rename the imported type
|
||||||
import type { Node, Edge } from '$lib/types';
|
import type { Node, Edge } from '$lib/types';
|
||||||
import { ARIA_EDGE_DESC_KEY, ARIA_LIVE_MESSAGE, ARIA_NODE_DESC_KEY } from '.';
|
import { ARIA_EDGE_DESC_KEY, ARIA_LIVE_MESSAGE, ARIA_NODE_DESC_KEY } from '.';
|
||||||
|
|
||||||
const { store, a11yMessages = {} }: {
|
const { store, descriptions = {} }: {
|
||||||
store: SvelteFlowStore<NodeType, EdgeType>;
|
store: SvelteFlowStore<NodeType, EdgeType>;
|
||||||
a11yMessages?: Partial<a11yMessages>;
|
descriptions?: Partial<DescriptionsType>;
|
||||||
} = $props();
|
} = $props();
|
||||||
|
|
||||||
|
|
||||||
const defaultA11yMessages = {
|
const defaultDescriptions = {
|
||||||
'a11yDescription.node.default':
|
'a11yDescription.node.default':
|
||||||
'Press enter or space to select a node. Press delete to remove it and escape to cancel.',
|
'Press enter or space to select a node. Press delete to remove it and escape to cancel.',
|
||||||
'a11yDescription.node.keyboardDisabled':
|
'a11yDescription.node.keyboardDisabled':
|
||||||
@@ -22,11 +22,11 @@ const defaultA11yMessages = {
|
|||||||
|
|
||||||
<div id={`${ARIA_NODE_DESC_KEY}-${store.flowId}`} style="display: none;">
|
<div id={`${ARIA_NODE_DESC_KEY}-${store.flowId}`} style="display: none;">
|
||||||
{store.disableKeyboardA11y
|
{store.disableKeyboardA11y
|
||||||
? a11yMessages['a11yDescription.node.default'] || defaultA11yMessages['a11yDescription.node.default']
|
? descriptions['a11yDescription.node.default'] || defaultDescriptions['a11yDescription.node.default']
|
||||||
: a11yMessages['a11yDescription.node.keyboardDisabled'] || defaultA11yMessages['a11yDescription.node.keyboardDisabled']}
|
: descriptions['a11yDescription.node.keyboardDisabled'] || defaultDescriptions['a11yDescription.node.keyboardDisabled']}
|
||||||
</div>
|
</div>
|
||||||
<div id={`${ARIA_EDGE_DESC_KEY}-${store.flowId}`} style="display: none;">
|
<div id={`${ARIA_EDGE_DESC_KEY}-${store.flowId}`} style="display: none;">
|
||||||
{a11yMessages['a11yDescription.edge.default'] || defaultA11yMessages['a11yDescription.edge.default']}
|
{descriptions['a11yDescription.edge.default'] || defaultDescriptions['a11yDescription.edge.default']}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if !store.disableKeyboardA11y}
|
{#if !store.disableKeyboardA11y}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
nodes = $bindable([]),
|
nodes = $bindable([]),
|
||||||
edges = $bindable([]),
|
edges = $bindable([]),
|
||||||
viewport = $bindable(undefined),
|
viewport = $bindable(undefined),
|
||||||
a11yMessages,
|
descriptions,
|
||||||
...props
|
...props
|
||||||
}: SvelteFlowProps<NodeType, EdgeType> &
|
}: SvelteFlowProps<NodeType, EdgeType> &
|
||||||
Omit<HTMLAttributes<HTMLDivElement>, 'onselectionchange'> = $props();
|
Omit<HTMLAttributes<HTMLDivElement>, 'onselectionchange'> = $props();
|
||||||
@@ -218,6 +218,6 @@
|
|||||||
</Pane>
|
</Pane>
|
||||||
</Zoom>
|
</Zoom>
|
||||||
<Attribution {proOptions} position={attributionPosition} />
|
<Attribution {proOptions} position={attributionPosition} />
|
||||||
<A11yDescriptions {store} a11yMessages={a11yMessages} />
|
<A11yDescriptions {store} descriptions={descriptions} />
|
||||||
{@render children?.()}
|
{@render children?.()}
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
|
|||||||
@@ -92,6 +92,7 @@
|
|||||||
noDragClass,
|
noDragClass,
|
||||||
noPanClass,
|
noPanClass,
|
||||||
noWheelClass,
|
noWheelClass,
|
||||||
|
descriptions,
|
||||||
...divAttributes
|
...divAttributes
|
||||||
} = $derived(rest);
|
} = $derived(rest);
|
||||||
/* eslint-enable @typescript-eslint/no-unused-vars */
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import type {
|
|||||||
OnReconnect,
|
OnReconnect,
|
||||||
OnReconnectStart,
|
OnReconnectStart,
|
||||||
OnReconnectEnd,
|
OnReconnectEnd,
|
||||||
a11yMessages
|
descriptions
|
||||||
} from '@xyflow/system';
|
} from '@xyflow/system';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
@@ -476,5 +476,5 @@ export type SvelteFlowProps<
|
|||||||
* Custom accessibility messages for screen readers and a11y features.
|
* Custom accessibility messages for screen readers and a11y features.
|
||||||
* Allows localization and customization of ARIA descriptions.
|
* Allows localization and customization of ARIA descriptions.
|
||||||
*/
|
*/
|
||||||
a11yMessages?: a11yMessages;
|
descriptions?: descriptions;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ export type OnBeforeDeleteBase<NodeType extends NodeBase = NodeBase, EdgeType ex
|
|||||||
edges: EdgeType[];
|
edges: EdgeType[];
|
||||||
}) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>;
|
}) => Promise<boolean | { nodes: NodeType[]; edges: EdgeType[] }>;
|
||||||
|
|
||||||
export type a11yMessages = {
|
export type descriptions = {
|
||||||
'a11yDescription.node.default'?: string;
|
'a11yDescription.node.default'?: string;
|
||||||
'a11yDescription.node.keyboardDisabled'?: string;
|
'a11yDescription.node.keyboardDisabled'?: string;
|
||||||
'a11yDescription.edge.default'?: string;
|
'a11yDescription.edge.default'?: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user