@@ -10,23 +10,37 @@ export interface IActivityBarProps {
10
10
11
11
function ActivityBar ( props : IActivityBar ) {
12
12
const { data, render, selected, onClick } = props ;
13
- let content : React . ReactNode = data ?. map ( ( item : IActivityBarItem , index : number ) => (
14
- < ActivityBarItem key = { item . id } { ...item } data-index = { index } checked = { selected === item . id } />
15
- ) ) ;
13
+
16
14
if ( render ) {
17
- content = render ( ) ;
15
+ return (
16
+ < div className = { prefixClaName ( SYMBOL_ACTIVITY_BAR ) } >
17
+ { render ( ) }
18
+ </ div >
19
+ ) ;
18
20
}
19
21
22
+ const normalBarItems = data ?. filter ( ( item : IActivityBarItem ) => ! item . type || item . type === 'normal' ) ;
23
+ const globalBarItems = data ?. filter ( ( item : IActivityBarItem ) => item . type && item . type === 'global' ) ;
24
+
25
+ const renderItems = ( item : IActivityBarItem , index : number ) => (
26
+ < ActivityBarItem key = { item . id } { ...item } data-index = { index } checked = { selected === item . id } />
27
+ ) ;
28
+
20
29
const click = ( e : React . MouseEvent ) => {
21
30
console . log ( 'ActivityBar onClick:' , e ) ;
22
31
onClick ( e , { } as any ) ;
23
32
} ;
24
33
25
34
return (
26
- < div className = { prefixClaName ( SYMBOL_ACTIVITY_BAR ) } onClick = { click } >
27
- < ul className = { prefixClaName ( 'container' , SYMBOL_ACTIVITY_BAR ) } >
28
- { content }
29
- </ ul >
35
+ < div className = { prefixClaName ( SYMBOL_ACTIVITY_BAR ) } id = { SYMBOL_ACTIVITY_BAR } onClick = { click } >
36
+ < div className = { prefixClaName ( 'container' , SYMBOL_ACTIVITY_BAR ) } >
37
+ < ul className = { 'normal-items' } >
38
+ { normalBarItems . map ( renderItems ) }
39
+ </ ul >
40
+ < ul className = { 'global-items' } >
41
+ { globalBarItems . map ( renderItems ) }
42
+ </ ul >
43
+ </ div >
30
44
</ div >
31
45
) ;
32
46
} ;
0 commit comments