Skip to content

Commit 99f7743

Browse files
committed
feat(a11y): use the semantic treeitem's title for its aria-label
1 parent b938129 commit 99f7743

File tree

4 files changed

+208
-0
lines changed

4 files changed

+208
-0
lines changed

src/TreeNode.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ const TreeNode: React.FC<Readonly<TreeNodeProps>> = props => {
4747

4848
const [dragNodeHighlight, setDragNodeHighlight] = React.useState<boolean>(false);
4949

50+
const ariaId = React.useId();
51+
5052
// ======= State: Disabled State =======
5153
const isDisabled = !!(context.disabled || props.disabled || unstableContext.nodeDisabled?.(data));
5254

@@ -382,6 +384,7 @@ const TreeNode: React.FC<Readonly<TreeNodeProps>> = props => {
382384
>
383385
{$icon}
384386
<span
387+
id={`${context.prefixCls}-title-${ariaId}`}
385388
className={classNames(`${context.prefixCls}-title`, treeClassNames?.itemTitle)}
386389
style={styles?.itemTitle}
387390
>
@@ -423,6 +426,7 @@ const TreeNode: React.FC<Readonly<TreeNodeProps>> = props => {
423426
ref={domRef}
424427
role="treeitem"
425428
aria-expanded={isLeaf ? undefined : expanded}
429+
aria-labelledby={`${context.prefixCls}-title-${ariaId}`}
426430
className={classNames(className, `${context.prefixCls}-treenode`, treeClassNames?.item, {
427431
[`${context.prefixCls}-treenode-disabled`]: isDisabled,
428432
[`${context.prefixCls}-treenode-switcher-${expanded ? 'open' : 'close'}`]: !isLeaf,

0 commit comments

Comments
 (0)