File tree Expand file tree Collapse file tree 4 files changed +11
-2
lines changed
packages/react/src/SelectPanel Expand file tree Collapse file tree 4 files changed +11
-2
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ " @primer/react " : patch
3
+ ---
4
+
5
+ fix(SelectPanel): prioritize message over loading status
Original file line number Diff line number Diff line change @@ -149,7 +149,7 @@ export const HeightInitialWithUnderflowingItemsAfterFetch = () => {
149
149
placeholder = "Select labels" // button text when no items are selected
150
150
open = { open }
151
151
onOpenChange = { onOpenChange }
152
- loading = { filteredItems . length === 0 && ! filter }
152
+ loading = { fetchedItems . length === 0 }
153
153
items = { filteredItems }
154
154
selected = { selected }
155
155
onSelectedChange = { setSelected }
Original file line number Diff line number Diff line change @@ -679,14 +679,17 @@ export const CustomisedNoResults: StoryObj<typeof SelectPanel> = {
679
679
const [ open , setOpen ] = useState ( false )
680
680
const filterTimerId = useRef < number | null > ( null )
681
681
const { safeSetTimeout, safeClearTimeout} = useSafeTimeout ( )
682
+ const [ loading , setLoading ] = useState ( false )
682
683
const onFilterChange = ( value : string ) => {
683
684
setFilterValue ( value )
684
685
if ( filterTimerId . current ) {
685
686
safeClearTimeout ( filterTimerId . current )
686
687
}
688
+ setLoading ( true )
687
689
688
690
filterTimerId . current = safeSetTimeout ( ( ) => {
689
691
setFilteredItems ( items . filter ( item => item . text . toLowerCase ( ) . startsWith ( value . toLowerCase ( ) ) ) )
692
+ setLoading ( false )
690
693
} , 2000 ) as unknown as number
691
694
}
692
695
@@ -713,6 +716,7 @@ export const CustomisedNoResults: StoryObj<typeof SelectPanel> = {
713
716
onFilterChange = { onFilterChange }
714
717
showItemDividers = { true }
715
718
initialLoadingType = { initialLoadingType }
719
+ loading = { loading }
716
720
height = { height }
717
721
overlayProps = { { maxHeight : height === 'auto' || height === 'initial' ? 'xlarge' : height } }
718
722
message = { filteredItems . length === 0 ? NoResultsMessage ( filterValue ) : undefined }
Original file line number Diff line number Diff line change @@ -790,7 +790,7 @@ function Panel({
790
790
selectionVariant = { isSingleSelectModal ? 'radio' : isMultiSelectVariant ( selected ) ? 'multiple' : 'single' }
791
791
items = { itemsToRender }
792
792
textInputProps = { extendedTextInputProps }
793
- loading = { loading || isLoading }
793
+ loading = { loading || ( isLoading && ! message ) }
794
794
loadingType = { loadingType ( ) }
795
795
// hack because the deprecated ActionList does not support this prop
796
796
{ ...{
You can’t perform that action at this time.
0 commit comments