1- import React , { useState , useRef } from 'react'
1+ import React , { useState , useRef , useEffect } from 'react'
22import type { Meta , StoryObj } from '@storybook/react-vite'
33import Box from '../Box'
44import { Button } from '../Button'
@@ -557,6 +557,7 @@ export const AsyncFetch: StoryObj<SelectPanelProps> = {
557557 const [ open , setOpen ] = useState ( false )
558558 const filterTimerId = useRef < number | null > ( null )
559559 const { safeSetTimeout, safeClearTimeout} = useSafeTimeout ( )
560+ const [ loading , setLoading ] = useState ( true )
560561 const [ query , setQuery ] = useState ( '' )
561562
562563 const fetchItems = ( query : string ) => {
@@ -565,11 +566,21 @@ export const AsyncFetch: StoryObj<SelectPanelProps> = {
565566 setQuery ( query )
566567 }
567568
569+ setLoading ( true )
568570 filterTimerId . current = safeSetTimeout ( ( ) => {
569571 setFilteredItems ( items . filter ( item => item . text . toLowerCase ( ) . startsWith ( query . toLowerCase ( ) ) ) )
572+ setLoading ( false )
570573 } , 2000 ) as unknown as number
571574 }
572575
576+ useEffect ( ( ) => {
577+ filterTimerId . current = safeSetTimeout ( ( ) => {
578+ setFilteredItems ( items . filter ( item => item . text . toLowerCase ( ) . startsWith ( query . toLowerCase ( ) ) ) )
579+ setLoading ( false )
580+ } , 2000 ) as unknown as number
581+ // eslint-disable-next-line react-hooks/exhaustive-deps
582+ } , [ ] )
583+
573584 const onOpenChange = ( value : boolean ) => {
574585 setOpen ( value )
575586 fetchItems ( '' )
@@ -600,6 +611,7 @@ export const AsyncFetch: StoryObj<SelectPanelProps> = {
600611 height = { height }
601612 initialLoadingType = { initialLoadingType }
602613 width = "medium"
614+ loading = { loading }
603615 message = { filteredItems . length === 0 ? NoResultsMessage ( query ) : undefined }
604616 />
605617 )
@@ -679,20 +691,28 @@ export const CustomisedNoResults: StoryObj<typeof SelectPanel> = {
679691 const [ open , setOpen ] = useState ( false )
680692 const filterTimerId = useRef < number | null > ( null )
681693 const { safeSetTimeout, safeClearTimeout} = useSafeTimeout ( )
682- const [ loading , setLoading ] = useState ( false )
694+ const [ loading , setLoading ] = useState ( true )
683695 const onFilterChange = ( value : string ) => {
684696 setFilterValue ( value )
685697 if ( filterTimerId . current ) {
686698 safeClearTimeout ( filterTimerId . current )
687699 }
688- setLoading ( true )
689700
701+ setLoading ( true )
690702 filterTimerId . current = safeSetTimeout ( ( ) => {
691703 setFilteredItems ( items . filter ( item => item . text . toLowerCase ( ) . startsWith ( value . toLowerCase ( ) ) ) )
692704 setLoading ( false )
693705 } , 2000 ) as unknown as number
694706 }
695707
708+ useEffect ( ( ) => {
709+ filterTimerId . current = safeSetTimeout ( ( ) => {
710+ setFilteredItems ( items . filter ( item => item . text . toLowerCase ( ) . startsWith ( filterValue . toLowerCase ( ) ) ) )
711+ setLoading ( false )
712+ } , 2000 ) as unknown as number
713+ // eslint-disable-next-line react-hooks/exhaustive-deps
714+ } , [ ] )
715+
696716 return (
697717 < SelectPanel
698718 title = "Select labels"
0 commit comments