@@ -249,20 +249,6 @@ const Panel: React.FC<SelectPanelProps> = ({
249
249
maxHeightValue = '100vh'
250
250
}
251
251
252
- const [ isVisible , setIsVisible ] = useState ( internalOpen )
253
-
254
- useEffect ( ( ) => {
255
- if ( internalOpen ) {
256
- // give the browser time to render the panel and for useAnchoredPosition
257
- // to calculate its actual size
258
- window . requestAnimationFrame ( ( ) => {
259
- setIsVisible ( true )
260
- } )
261
- } else {
262
- setIsVisible ( false )
263
- }
264
- } , [ internalOpen , setIsVisible ] )
265
-
266
252
return (
267
253
< >
268
254
{ Anchor }
@@ -276,24 +262,15 @@ const Panel: React.FC<SelectPanelProps> = ({
276
262
height = "fit-content"
277
263
maxHeight = { maxHeight }
278
264
data-variant = { currentVariant }
279
- data-visibility = { isVisible ? 'visible' : 'hidden' }
280
265
sx = {
281
266
enabled
282
267
? undefined
283
268
: {
284
- '&[data-visibility="visible"]' : {
285
- visibility : 'visible' ,
286
- } ,
287
- '&[data-visibility="hidden"]' : {
288
- visibility : 'hidden' ,
289
- } ,
290
-
291
269
'--max-height' : heightMap [ maxHeight ] ,
292
270
// reset dialog default styles
293
271
border : 'none' ,
294
272
padding : 0 ,
295
273
color : 'fg.default' ,
296
- '&[open]' : { display : 'flex' } , // to fit children
297
274
298
275
'&[data-variant="anchored"], &[data-variant="full-screen"]' : {
299
276
margin : 0 ,
@@ -335,8 +312,13 @@ const Panel: React.FC<SelectPanelProps> = ({
335
312
'--max-height' : maxHeightValue ,
336
313
'--position-top' : `${ position ?. top ?? 0 } px` ,
337
314
'--position-left' : `${ position ?. left ?? 0 } px` ,
315
+ visibility : internalOpen ? 'visible' : 'hidden' ,
316
+ display : 'flex' ,
338
317
} as React . CSSProperties )
339
- : undefined
318
+ : {
319
+ visibility : internalOpen ? 'visible' : 'hidden' ,
320
+ display : 'flex' ,
321
+ }
340
322
}
341
323
className = { enabled ? classes . Overlay : undefined }
342
324
{ ...props }
@@ -345,64 +327,62 @@ const Panel: React.FC<SelectPanelProps> = ({
345
327
} }
346
328
>
347
329
{ internalOpen && (
348
- < >
349
- < SelectPanelContext . Provider
350
- value = { {
351
- panelId,
352
- title,
353
- description,
354
- onCancel : onInternalCancel ,
355
- onClearSelection : propsOnClearSelection ? onInternalClearSelection : undefined ,
356
- searchQuery,
357
- setSearchQuery,
358
- selectionVariant,
359
- moveFocusToList,
360
- } }
330
+ < SelectPanelContext . Provider
331
+ value = { {
332
+ panelId,
333
+ title,
334
+ description,
335
+ onCancel : onInternalCancel ,
336
+ onClearSelection : propsOnClearSelection ? onInternalClearSelection : undefined ,
337
+ searchQuery,
338
+ setSearchQuery,
339
+ selectionVariant,
340
+ moveFocusToList,
341
+ } }
342
+ >
343
+ < Box
344
+ as = "form"
345
+ method = "dialog"
346
+ onSubmit = { onInternalSubmit }
347
+ sx = { enabled ? undefined : { display : 'flex' , flexDirection : 'column' , width : '100%' } }
348
+ className = { enabled ? classes . Form : undefined }
361
349
>
350
+ { slots . header ?? /* render default header as fallback */ < SelectPanelHeader /> }
351
+
362
352
< Box
363
- as = "form"
364
- method = "dialog"
365
- onSubmit = { onInternalSubmit }
366
- sx = { enabled ? undefined : { display : 'flex' , flexDirection : 'column' , width : '100%' } }
367
- className = { enabled ? classes . Form : undefined }
353
+ as = "div"
354
+ sx = {
355
+ enabled
356
+ ? undefined
357
+ : {
358
+ flexShrink : 1 ,
359
+ flexGrow : 1 ,
360
+ overflow : 'hidden' ,
361
+ display : 'flex' ,
362
+ flexDirection : 'column' ,
363
+ justifyContent : 'space-between' ,
364
+ ul : { overflowY : 'auto' , flexGrow : 1 } ,
365
+ }
366
+ }
367
+ className = { enabled ? classes . Container : undefined }
368
368
>
369
- { slots . header ?? /* render default header as fallback */ < SelectPanelHeader /> }
370
-
371
- < Box
372
- as = "div"
373
- sx = {
374
- enabled
375
- ? undefined
376
- : {
377
- flexShrink : 1 ,
378
- flexGrow : 1 ,
379
- overflow : 'hidden' ,
380
- display : 'flex' ,
381
- flexDirection : 'column' ,
382
- justifyContent : 'space-between' ,
383
- ul : { overflowY : 'auto' , flexGrow : 1 } ,
384
- }
385
- }
386
- className = { enabled ? classes . Container : undefined }
369
+ < ActionListContainerContext . Provider
370
+ value = { {
371
+ container : 'SelectPanel' ,
372
+ listRole : 'listbox' ,
373
+ selectionAttribute : 'aria-selected' ,
374
+ selectionVariant : selectionVariant === 'instant' ? 'single' : selectionVariant ,
375
+ afterSelect : internalAfterSelect ,
376
+ listLabelledBy : `${ panelId } --title` ,
377
+ enableFocusZone : true , // Arrow keys navigation for list items
378
+ } }
387
379
>
388
- < ActionListContainerContext . Provider
389
- value = { {
390
- container : 'SelectPanel' ,
391
- listRole : 'listbox' ,
392
- selectionAttribute : 'aria-selected' ,
393
- selectionVariant : selectionVariant === 'instant' ? 'single' : selectionVariant ,
394
- afterSelect : internalAfterSelect ,
395
- listLabelledBy : `${ panelId } --title` ,
396
- enableFocusZone : true , // Arrow keys navigation for list items
397
- } }
398
- >
399
- { childrenInBody }
400
- </ ActionListContainerContext . Provider >
401
- </ Box >
402
- { slots . footer }
380
+ { childrenInBody }
381
+ </ ActionListContainerContext . Provider >
403
382
</ Box >
404
- </ SelectPanelContext . Provider >
405
- </ >
383
+ { slots . footer }
384
+ </ Box >
385
+ </ SelectPanelContext . Provider >
406
386
) }
407
387
</ BaseOverlay >
408
388
</ >
0 commit comments