@@ -745,9 +745,13 @@ type LookupDropdownProps = {
745745 loading ?: boolean ;
746746 listboxId : string ;
747747 dropdownRef : Ref < HTMLDivElement > ;
748- listHeader ?: JSX . Element ;
748+ listHeaderRenderer ?: (
749+ rendererProps : React . HTMLAttributes < HTMLDivElement >
750+ ) => JSX . Element ;
749751 listHeaderIdSeed : string ;
750- listFooter ?: JSX . Element ;
752+ listFooterRenderer ?: (
753+ rendererProps : React . HTMLAttributes < HTMLDivElement >
754+ ) => JSX . Element ;
751755 listFooterIdSeed : string ;
752756 filteredData : LookupEntry [ ] ;
753757 focusedValue ?: string ;
@@ -767,9 +771,9 @@ const LookupDropdown: FC<LookupDropdownProps> = ({
767771 loading,
768772 listboxId,
769773 dropdownRef,
770- listHeader ,
774+ listHeaderRenderer ,
771775 listHeaderIdSeed,
772- listFooter ,
776+ listFooterRenderer ,
773777 listFooterIdSeed,
774778 filteredData,
775779 focusedValue,
@@ -794,24 +798,22 @@ const LookupDropdown: FC<LookupDropdownProps> = ({
794798 dropdownRef = { dropdownRef }
795799 { ...injectedProps }
796800 >
797- { listHeader ? (
801+ { listHeaderRenderer ? (
798802 < ul
799803 className = 'slds-listbox slds-listbox_vertical'
800804 role = 'presentation'
801805 onKeyDown = { onKeyDown }
802806 onBlur = { onBlur }
803807 >
804808 < li role = 'presentation' className = 'slds-listbox__item' >
805- < div
806- id = { getOptionId ( listHeaderIdSeed ) }
807- className = 'slds-media slds-media_center slds-listbox__option slds-listbox__option_entity slds-listbox__option_term'
808- role = 'option'
809- aria-selected = 'true'
810- tabIndex = { 0 }
811- onFocus = { ( ) => onOptionFocus ( listHeaderIdSeed ) }
812- >
813- { listHeader }
814- </ div >
809+ { listHeaderRenderer ( {
810+ id : getOptionId ( listHeaderIdSeed ) ,
811+ className : 'slds-listbox__option' ,
812+ role : 'option' ,
813+ 'aria-selected' : 'true' ,
814+ tabIndex : 0 ,
815+ onFocus : ( ) => onOptionFocus ( listHeaderIdSeed ) ,
816+ } ) }
815817 </ li >
816818 </ ul >
817819 ) : null }
@@ -839,23 +841,21 @@ const LookupDropdown: FC<LookupDropdownProps> = ({
839841 </ li >
840842 ) : null }
841843 </ ul >
842- { listFooter ? (
844+ { listFooterRenderer ? (
843845 < ul
844846 className = 'slds-listbox slds-listbox_vertical'
845847 role = 'presentation'
846848 onKeyDown = { onKeyDown }
847849 onBlur = { onBlur }
848850 >
849851 < li role = 'presentation' className = 'slds-listbox__item' >
850- < div
851- id = { getOptionId ( listFooterIdSeed ) }
852- className = 'slds-media slds-media_center slds-listbox__option slds-listbox__option_entity slds-listbox__option_term'
853- role = 'option'
854- tabIndex = { 0 }
855- onFocus = { ( ) => onOptionFocus ( listFooterIdSeed ) }
856- >
857- { listFooter }
858- </ div >
852+ { listFooterRenderer ( {
853+ id : getOptionId ( listFooterIdSeed ) ,
854+ className : 'slds-listbox__option' ,
855+ role : 'option' ,
856+ tabIndex : 0 ,
857+ onFocus : ( ) => onOptionFocus ( listFooterIdSeed ) ,
858+ } ) }
859859 </ li >
860860 </ ul >
861861 ) : null }
@@ -935,8 +935,12 @@ export type LookupProps = {
935935 lookupFilter ?: Bivariant <
936936 ( entry : LookupEntry , searchText ?: string , scope ?: string ) => boolean
937937 > ;
938- listHeader ?: JSX . Element ;
939- listFooter ?: JSX . Element ;
938+ listHeaderRenderer ?: (
939+ rendererProps : React . HTMLAttributes < HTMLDivElement >
940+ ) => JSX . Element ;
941+ listFooterRenderer ?: (
942+ rendererProps : React . HTMLAttributes < HTMLDivElement >
943+ ) => JSX . Element ;
940944 tooltip ?: ReactNode ;
941945 tooltipIcon ?: string ;
942946
@@ -987,8 +991,8 @@ export const Lookup = createFC<LookupProps, { isFormElement: boolean }>(
987991 disabled,
988992 loading,
989993 lookupFilter,
990- listHeader ,
991- listFooter ,
994+ listHeaderRenderer ,
995+ listFooterRenderer ,
992996 data = [ ] ,
993997 tooltip,
994998 tooltipIcon,
@@ -1064,18 +1068,18 @@ export const Lookup = createFC<LookupProps, { isFormElement: boolean }>(
10641068 ? data . filter ( ( entry ) => lookupFilter ( entry , searchText , targetScope ) )
10651069 : data ;
10661070 return [
1067- listHeader ? listHeaderIdSeed : undefined ,
1071+ listHeaderRenderer ? listHeaderIdSeed : undefined ,
10681072 ...filteredData . map ( ( entry ) => entry . value ) ,
1069- listFooter ? listFooterIdSeed : undefined ,
1073+ listFooterRenderer ? listFooterIdSeed : undefined ,
10701074 ] . filter ( ( value ) => value !== undefined ) ;
10711075 } , [
10721076 data ,
10731077 lookupFilter ,
10741078 searchText ,
10751079 targetScope ,
1076- listHeader ,
1080+ listHeaderRenderer ,
10771081 listHeaderIdSeed ,
1078- listFooter ,
1082+ listFooterRenderer ,
10791083 listFooterIdSeed ,
10801084 ] ) ;
10811085
@@ -1421,9 +1425,9 @@ export const Lookup = createFC<LookupProps, { isFormElement: boolean }>(
14211425 loading = { loading }
14221426 listboxId = { listboxId }
14231427 dropdownRef = { dropdownRef }
1424- listHeader = { listHeader }
1428+ listHeaderRenderer = { listHeaderRenderer }
14251429 listHeaderIdSeed = { listHeaderIdSeed }
1426- listFooter = { listFooter }
1430+ listFooterRenderer = { listFooterRenderer }
14271431 listFooterIdSeed = { listFooterIdSeed }
14281432 filteredData = { filteredData }
14291433 focusedValue = { focusedValue }
@@ -1469,9 +1473,9 @@ export const Lookup = createFC<LookupProps, { isFormElement: boolean }>(
14691473 loading = { loading }
14701474 listboxId = { listboxId }
14711475 dropdownRef = { dropdownRef }
1472- listHeader = { listHeader }
1476+ listHeaderRenderer = { listHeaderRenderer }
14731477 listHeaderIdSeed = { listHeaderIdSeed }
1474- listFooter = { listFooter }
1478+ listFooterRenderer = { listFooterRenderer }
14751479 listFooterIdSeed = { listFooterIdSeed }
14761480 filteredData = { filteredData }
14771481 focusedValue = { focusedValue }
0 commit comments