@@ -671,56 +671,6 @@ const Autocomplete = React.forwardRef(function Autocomplete(inProps, ref) {
671
671
const clearIndicatorSlotProps = externalForwardedProps . slotProps . clearIndicator ;
672
672
const popupIndicatorSlotProps = externalForwardedProps . slotProps . popupIndicator ;
673
673
674
- const renderAutocompletePopperChildren = ( children ) => (
675
- < AutocompletePopper as = { PopperSlot } { ...popperProps } >
676
- < AutocompletePaper as = { PaperSlot } { ...paperProps } >
677
- { children }
678
- </ AutocompletePaper >
679
- </ AutocompletePopper >
680
- ) ;
681
-
682
- let autocompletePopper = null ;
683
- if ( groupedOptions . length > 0 ) {
684
- autocompletePopper = renderAutocompletePopperChildren (
685
- // TODO v7: remove `as` prop and move ListboxComponentProp to externalForwardedProps or remove ListboxComponentProp entirely
686
- // https://github.com/mui/material-ui/pull/43994#issuecomment-2401945800
687
- < ListboxSlot as = { ListboxComponentProp } { ...listboxProps } >
688
- { groupedOptions . map ( ( option , index ) => {
689
- if ( groupBy ) {
690
- return renderGroup ( {
691
- key : option . key ,
692
- group : option . group ,
693
- children : option . options . map ( ( option2 , index2 ) =>
694
- renderListOption ( option2 , option . index + index2 ) ,
695
- ) ,
696
- } ) ;
697
- }
698
- return renderListOption ( option , index ) ;
699
- } ) }
700
- </ ListboxSlot > ,
701
- ) ;
702
- } else if ( loading && groupedOptions . length === 0 ) {
703
- autocompletePopper = renderAutocompletePopperChildren (
704
- < AutocompleteLoading className = { classes . loading } ownerState = { ownerState } >
705
- { loadingText }
706
- </ AutocompleteLoading > ,
707
- ) ;
708
- } else if ( groupedOptions . length === 0 && ! freeSolo && ! loading ) {
709
- autocompletePopper = renderAutocompletePopperChildren (
710
- < AutocompleteNoOptions
711
- className = { classes . noOptions }
712
- ownerState = { ownerState }
713
- role = "presentation"
714
- onMouseDown = { ( event ) => {
715
- // Prevent input blur when interacting with the "no options" content
716
- event . preventDefault ( ) ;
717
- } }
718
- >
719
- { noOptionsText }
720
- </ AutocompleteNoOptions > ,
721
- ) ;
722
- }
723
-
724
674
return (
725
675
< React . Fragment >
726
676
< AutocompleteRoot
@@ -785,7 +735,46 @@ const Autocomplete = React.forwardRef(function Autocomplete(inProps, ref) {
785
735
} ,
786
736
} ) }
787
737
</ AutocompleteRoot >
788
- { anchorEl ? autocompletePopper : null }
738
+ { anchorEl ? (
739
+ < AutocompletePopper as = { PopperSlot } { ...popperProps } >
740
+ < AutocompletePaper as = { PaperSlot } { ...paperProps } >
741
+ { loading && groupedOptions . length === 0 ? (
742
+ < AutocompleteLoading className = { classes . loading } ownerState = { ownerState } >
743
+ { loadingText }
744
+ </ AutocompleteLoading >
745
+ ) : null }
746
+ { groupedOptions . length === 0 && ! freeSolo && ! loading ? (
747
+ < AutocompleteNoOptions
748
+ className = { classes . noOptions }
749
+ ownerState = { ownerState }
750
+ role = "presentation"
751
+ onMouseDown = { ( event ) => {
752
+ // Prevent input blur when interacting with the "no options" content
753
+ event . preventDefault ( ) ;
754
+ } }
755
+ >
756
+ { noOptionsText }
757
+ </ AutocompleteNoOptions >
758
+ ) : null }
759
+ { groupedOptions . length > 0 ? (
760
+ < ListboxSlot as = { ListboxComponentProp } { ...listboxProps } >
761
+ { groupedOptions . map ( ( option , index ) => {
762
+ if ( groupBy ) {
763
+ return renderGroup ( {
764
+ key : option . key ,
765
+ group : option . group ,
766
+ children : option . options . map ( ( option2 , index2 ) =>
767
+ renderListOption ( option2 , option . index + index2 ) ,
768
+ ) ,
769
+ } ) ;
770
+ }
771
+ return renderListOption ( option , index ) ;
772
+ } ) }
773
+ </ ListboxSlot >
774
+ ) : null }
775
+ </ AutocompletePaper >
776
+ </ AutocompletePopper >
777
+ ) : null }
789
778
</ React . Fragment >
790
779
) ;
791
780
} ) ;
0 commit comments