@@ -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 ;
@@ -83,7 +84,7 @@ const TreeNodeItem: FC<TreeNodeProps & { icon?: string }> = (props) => {
8384 ) }
8485 { ! leaf ? (
8586 < Button
86- className = 'slds-m-right_small '
87+ className = 'slds-m-right_x-small '
8788 aria-controls = ''
8889 type = 'icon-bare'
8990 icon = { icon }
@@ -93,14 +94,15 @@ const TreeNodeItem: FC<TreeNodeProps & { icon?: string }> = (props) => {
9394 style = { loading ? { opacity : 0 , pointerEvents : 'none' } : undefined }
9495 />
9596 ) : null }
96- < a
97- className = 'slds-truncate'
98- tabIndex = { - 1 }
99- role = 'presentation'
100- onClick = { onLabelClick }
101- >
102- { ItemRender ? < ItemRender { ...props } /> : label }
103- </ a >
97+ < span className = 'slds-has-flexi-truncate' >
98+ < a
99+ className = 'slds-tree__item-label slds-truncate'
100+ onClick = { onLabelClick }
101+ title = { typeof label === 'string' ? label : undefined }
102+ >
103+ { ItemRender ? < ItemRender { ...props } /> : label }
104+ </ a >
105+ </ span >
104106 { leaf ? children : null }
105107 </ div >
106108 ) ;
@@ -114,6 +116,8 @@ export const TreeNode: FC<TreeNodeProps> = (props) => {
114116 defaultOpened,
115117 opened : opened_ ,
116118 leaf,
119+ selected,
120+ disabled,
117121 children,
118122 onClick : onClick_ ,
119123 onToggle : onToggle_ ,
@@ -153,15 +157,31 @@ export const TreeNode: FC<TreeNodeProps> = (props) => {
153157 'slds-show' : opened ,
154158 'slds-hide' : ! opened ,
155159 } ) ;
160+ const labelText =
161+ typeof rprops . label === 'string' ? rprops . label : 'Tree Branch' ;
162+ const ariaLabel = ! leaf ? labelText : undefined ;
156163 return (
157164 < li
158165 role = 'treeitem'
159166 aria-level = { level }
160- { ...( leaf ? { } : { 'aria-expanded' : opened } ) }
167+ aria-expanded = { ! leaf ? opened : undefined }
168+ aria-label = { ariaLabel }
169+ aria-selected = { selected || undefined }
170+ aria-disabled = { disabled || undefined }
161171 >
162172 < TreeNodeItem
163173 { ...rprops }
164- { ...{ leaf, opened, level, children, onClick, onLabelClick, onToggle } }
174+ { ...{
175+ leaf,
176+ opened,
177+ level,
178+ selected,
179+ disabled,
180+ children,
181+ onClick,
182+ onLabelClick,
183+ onToggle,
184+ } }
165185 />
166186 { ! leaf ? (
167187 < ul className = { grpClassNames } role = 'group' >
0 commit comments