Skip to content

Commit 8cced18

Browse files
fix(SelectPanel): prioritize message over loading status (#6321)
1 parent bc4031e commit 8cced18

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

.changeset/four-penguins-dance.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@primer/react": patch
3+
---
4+
5+
fix(SelectPanel): prioritize message over loading status

packages/react/src/SelectPanel/SelectPanel.examples.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ export const HeightInitialWithUnderflowingItemsAfterFetch = () => {
149149
placeholder="Select labels" // button text when no items are selected
150150
open={open}
151151
onOpenChange={onOpenChange}
152-
loading={filteredItems.length === 0 && !filter}
152+
loading={fetchedItems.length === 0}
153153
items={filteredItems}
154154
selected={selected}
155155
onSelectedChange={setSelected}

packages/react/src/SelectPanel/SelectPanel.features.stories.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,14 +679,17 @@ export const CustomisedNoResults: StoryObj<typeof SelectPanel> = {
679679
const [open, setOpen] = useState(false)
680680
const filterTimerId = useRef<number | null>(null)
681681
const {safeSetTimeout, safeClearTimeout} = useSafeTimeout()
682+
const [loading, setLoading] = useState(false)
682683
const onFilterChange = (value: string) => {
683684
setFilterValue(value)
684685
if (filterTimerId.current) {
685686
safeClearTimeout(filterTimerId.current)
686687
}
688+
setLoading(true)
687689

688690
filterTimerId.current = safeSetTimeout(() => {
689691
setFilteredItems(items.filter(item => item.text.toLowerCase().startsWith(value.toLowerCase())))
692+
setLoading(false)
690693
}, 2000) as unknown as number
691694
}
692695

@@ -713,6 +716,7 @@ export const CustomisedNoResults: StoryObj<typeof SelectPanel> = {
713716
onFilterChange={onFilterChange}
714717
showItemDividers={true}
715718
initialLoadingType={initialLoadingType}
719+
loading={loading}
716720
height={height}
717721
overlayProps={{maxHeight: height === 'auto' || height === 'initial' ? 'xlarge' : height}}
718722
message={filteredItems.length === 0 ? NoResultsMessage(filterValue) : undefined}

packages/react/src/SelectPanel/SelectPanel.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,7 @@ function Panel({
790790
selectionVariant={isSingleSelectModal ? 'radio' : isMultiSelectVariant(selected) ? 'multiple' : 'single'}
791791
items={itemsToRender}
792792
textInputProps={extendedTextInputProps}
793-
loading={loading || isLoading}
793+
loading={loading || (isLoading && !message)}
794794
loadingType={loadingType()}
795795
// hack because the deprecated ActionList does not support this prop
796796
{...{

0 commit comments

Comments
 (0)