1- import React , { useState , useEffect , ReactNode , ReactElement } from "react" ;
2- import PanelToolbar from "./PanelLeftToolbar.js" ; // Import to identify toolbar
1+ import React , {
2+ useState ,
3+ useEffect ,
4+ ReactNode ,
5+ ReactElement ,
6+ isValidElement ,
7+ } from "react" ;
8+ import PanelToolbar from "./PanelLeftToolbar.js" ;
9+ import PanelFooter from "./PanelFooter" ; // 👈 new
310import {
411 Avatar ,
512 Body1 ,
@@ -43,24 +50,27 @@ const PanelLeft: React.FC<PanelLeftProps> = ({
4350 const onMouseUp = ( ) => {
4451 document . removeEventListener ( "mousemove" , onMouseMove ) ;
4552 document . removeEventListener ( "mouseup" , onMouseUp ) ;
46-
47- // Re-enable text selection
4853 document . body . style . userSelect = "" ;
4954 } ;
5055
5156 document . addEventListener ( "mousemove" , onMouseMove ) ;
5257 document . addEventListener ( "mouseup" , onMouseUp ) ;
53-
54- // Disable text selection
5558 document . body . style . userSelect = "none" ;
5659 } ;
5760
5861 const childrenArray = React . Children . toArray ( children ) as ReactElement [ ] ;
5962 const toolbar = childrenArray . find (
60- ( child ) => React . isValidElement ( child ) && child . type === PanelToolbar
63+ ( child ) => isValidElement ( child ) && child . type === PanelToolbar
64+ ) ;
65+ const footer = childrenArray . find (
66+ ( child ) => isValidElement ( child ) && child . type === PanelFooter
6167 ) ;
6268 const content = childrenArray . filter (
63- ( child ) => ! ( React . isValidElement ( child ) && child . type === PanelToolbar )
69+ ( child ) =>
70+ ! (
71+ isValidElement ( child ) &&
72+ ( child . type === PanelToolbar || child . type === PanelFooter )
73+ )
6474 ) ;
6575
6676 return (
@@ -90,12 +100,13 @@ const PanelLeft: React.FC<PanelLeftProps> = ({
90100 overflowY : "auto" ,
91101 overflowX : "hidden" ,
92102 boxSizing : "border-box" ,
93- // padding: "16px",
94103 } }
95104 >
96105 { content }
97106 </ div >
98107
108+ { footer && < div > { footer } </ div > }
109+
99110 { panelResize && (
100111 < div
101112 className = "resizeHandle"
@@ -116,28 +127,6 @@ const PanelLeft: React.FC<PanelLeftProps> = ({
116127 } }
117128 />
118129 ) }
119-
120- < div
121- style = { {
122- display : "flex" ,
123- padding : "24px 16px" ,
124- gap : "12px" ,
125- alignItems : "center" ,
126- } }
127- >
128- < Avatar
129- name = "Pepper Hayuki"
130- image = { {
131- src : Human ,
132- } }
133- />
134- < div style = { { display : "flex" , flexDirection : "column" } } >
135- < Body1Strong > Pepper Hayuki</ Body1Strong >
136- < Caption1 style = { { color : "var(--colorNeutralForeground3)" } } >
137- pepperhayuki@microsoft.com
138- </ Caption1 >
139- </ div >
140- </ div >
141130 </ div >
142131 ) ;
143132} ;
0 commit comments