Skip to content

Commit 038b3bb

Browse files
Revert "Revert "(TreeNode): improve a11y""
This reverts commit 7637fb0.
1 parent 1ac4e09 commit 038b3bb

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

src/scripts/TreeNode.tsx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export type TreeNodeProps = {
2828
leaf?: boolean;
2929
loading?: boolean;
3030
level?: number;
31+
disabled?: boolean;
3132
children?: ReactNode;
3233
onClick?: (e: React.MouseEvent) => void;
3334
onLabelClick?: (e: React.MouseEvent) => void;
@@ -85,18 +86,20 @@ const TreeNodeItem: FC<TreeNodeProps & { icon?: string }> = (props) => {
8586
<Button
8687
className='slds-m-right_small'
8788
aria-controls=''
89+
aria-hidden='true'
90+
tabIndex={-1}
8891
type='icon-bare'
8992
icon={icon}
9093
iconSize='small'
9194
onClick={onToggle}
95+
title={typeof label === 'string' ? `Expand ${label}` : undefined}
9296
// Prevent focus loss during loading by keeping the toggle button in the DOM with opacity set to 0.
9397
style={loading ? { opacity: 0, pointerEvents: 'none' } : undefined}
9498
/>
9599
) : null}
96100
<a
97101
className='slds-truncate'
98102
tabIndex={-1}
99-
role='presentation'
100103
onClick={onLabelClick}
101104
>
102105
{ItemRender ? <ItemRender {...props} /> : label}
@@ -114,6 +117,8 @@ export const TreeNode: FC<TreeNodeProps> = (props) => {
114117
defaultOpened,
115118
opened: opened_,
116119
leaf,
120+
selected,
121+
disabled,
117122
children,
118123
onClick: onClick_,
119124
onToggle: onToggle_,
@@ -153,15 +158,31 @@ export const TreeNode: FC<TreeNodeProps> = (props) => {
153158
'slds-show': opened,
154159
'slds-hide': !opened,
155160
});
161+
const labelText =
162+
typeof rprops.label === 'string' ? rprops.label : 'Tree Branch';
163+
const ariaLabel = !leaf ? labelText : undefined;
156164
return (
157165
<li
158166
role='treeitem'
159167
aria-level={level}
160-
{...(leaf ? {} : { 'aria-expanded': opened })}
168+
aria-expanded={!leaf ? opened : undefined}
169+
aria-label={ariaLabel}
170+
aria-selected={selected || undefined}
171+
aria-disabled={disabled || undefined}
161172
>
162173
<TreeNodeItem
163174
{...rprops}
164-
{...{ leaf, opened, level, children, onClick, onLabelClick, onToggle }}
175+
{...{
176+
leaf,
177+
opened,
178+
level,
179+
selected,
180+
disabled,
181+
children,
182+
onClick,
183+
onLabelClick,
184+
onToggle,
185+
}}
165186
/>
166187
{!leaf ? (
167188
<ul className={grpClassNames} role='group'>

0 commit comments

Comments
 (0)