@@ -7,6 +7,7 @@ import {SelectPanel} from './SelectPanel'
77import type { OverlayProps } from '../Overlay'
88import { TriangleDownIcon } from '@primer/octicons-react'
99import { ActionList } from '../deprecated/ActionList'
10+ import { Stack } from '../Stack'
1011
1112const meta = {
1213 title : 'Components/SelectPanel/Examples' ,
@@ -345,3 +346,37 @@ export const ItemsInScope = () => {
345346 </ >
346347 )
347348}
349+
350+ export const RepositionAfterLoading = ( ) => {
351+ const [ selected , setSelected ] = React . useState < ItemInput [ ] > ( [ items [ 0 ] , items [ 1 ] ] )
352+ const [ open , setOpen ] = useState ( false )
353+ const [ filter , setFilter ] = React . useState ( '' )
354+ const filteredItems = items . filter ( item => item . text . toLowerCase ( ) . startsWith ( filter . toLowerCase ( ) ) )
355+ const [ loading , setLoading ] = useState ( true )
356+
357+ React . useEffect ( ( ) => {
358+ if ( ! open ) setLoading ( true )
359+ window . setTimeout ( ( ) => {
360+ if ( open ) setLoading ( false )
361+ } , 2000 )
362+ } , [ open ] )
363+
364+ return (
365+ < >
366+ < Stack direction = "vertical" justify = "space-between" style = { { height : 'calc(100vh - 300px)' , width : 'fit-content' } } >
367+ < h1 > Items in component scope</ h1 >
368+ < SelectPanel
369+ loading = { loading }
370+ title = "Select labels"
371+ placeholderText = "Filter Labels"
372+ open = { open }
373+ onOpenChange = { setOpen }
374+ items = { filteredItems }
375+ selected = { selected }
376+ onSelectedChange = { setSelected }
377+ onFilterChange = { setFilter }
378+ />
379+ </ Stack >
380+ </ >
381+ )
382+ }
0 commit comments