@@ -14,8 +14,7 @@ import { getClassName } from '../../utils';
1414import { DCheckbox } from '../checkbox' ;
1515import { DVirtualScroll } from '../virtual-scroll' ;
1616
17- export interface DListProps < V extends DId , T extends DCascaderItem < V > > {
18- dListId ?: string ;
17+ export interface DListProps < V extends DId , T extends DCascaderItem < V > > extends Omit < React . HTMLAttributes < HTMLElement > , 'children' > {
1918 dGetItemId : ( value : V ) => string ;
2019 dList : AbstractTreeNode < V , T > [ ] ;
2120 dFocusItem : AbstractTreeNode < V , T > | undefined ;
@@ -29,8 +28,20 @@ export interface DListProps<V extends DId, T extends DCascaderItem<V>> {
2928}
3029
3130export function DList < V extends DId , T extends DCascaderItem < V > > ( props : DListProps < V , T > ) : JSX . Element | null {
32- const { dListId, dGetItemId, dList, dFocusItem, dCustomItem, dMultiple, dFocusVisible, dRoot, onClickItem, onFocusChange, onKeyDown$ } =
33- props ;
31+ const {
32+ dGetItemId,
33+ dList,
34+ dFocusItem,
35+ dCustomItem,
36+ dMultiple,
37+ dFocusVisible,
38+ dRoot,
39+ onClickItem,
40+ onFocusChange,
41+ onKeyDown$,
42+
43+ ...restProps
44+ } = props ;
3445
3546 //#region Context
3647 const dPrefix = usePrefixConfig ( ) ;
@@ -187,15 +198,21 @@ export function DList<V extends DId, T extends DCascaderItem<V>>(props: DListPro
187198 dPadding = { 4 }
188199 >
189200 { ( { vsScrollRef, vsRender, vsOnScroll } ) => (
201+ // eslint-disable-next-line jsx-a11y/aria-activedescendant-has-tabindex
190202 < ul
191203 ref = { vsScrollRef }
192- id = { dListId }
193- className = { `${ dPrefix } cascader__list` }
194- tabIndex = { - 1 }
195- role = "listbox"
196- aria-multiselectable = { dMultiple }
197- aria-activedescendant = { dRoot && ! isUndefined ( dFocusItem ) ? dGetItemId ( dFocusItem . id ) : undefined }
198- onScroll = { vsOnScroll }
204+ { ...restProps }
205+ className = { getClassName ( restProps . className , `${ dPrefix } cascader__list` ) }
206+ tabIndex = { restProps . tabIndex ?? - 1 }
207+ role = { restProps . role ?? 'listbox' }
208+ aria-multiselectable = { restProps [ 'aria-multiselectable' ] ?? dMultiple }
209+ aria-activedescendant = {
210+ restProps [ 'aria-activedescendant' ] ?? ( dRoot && ! isUndefined ( dFocusItem ) ? dGetItemId ( dFocusItem . id ) : undefined )
211+ }
212+ onScroll = { ( e ) => {
213+ restProps . onScroll ?.( e ) ;
214+ vsOnScroll ( e ) ;
215+ } }
199216 >
200217 { dList . length === 0 ? (
201218 < li className = { `${ dPrefix } cascader__empty` } >
@@ -208,7 +225,7 @@ export function DList<V extends DId, T extends DCascaderItem<V>>(props: DListPro
208225 ) }
209226 </ DVirtualScroll >
210227 { inFocusNode && ! inFocusNode . origin . loading && inFocusNode . children && (
211- < DList { ...props } dListId = { undefined } dList = { inFocusNode . children } dRoot = { false } > </ DList >
228+ < DList { ...props } id = { undefined } dList = { inFocusNode . children } dRoot = { false } > </ DList >
212229 ) }
213230 </ >
214231 ) ;
0 commit comments