1
1
import React from 'react' ;
2
- import MemoPanel from '../../panel/memoPanel.js' ;
3
2
function Tabs ( ) {
4
3
this . _data = [ ] ;
5
4
}
6
- Tabs . prototype . _getDefaultTabData = function ( defaultPanelComponent ) {
7
- return {
8
- title : "" ,
9
- tooltip : "" ,
10
- panelComponent : defaultPanelComponent ,
11
- closable : true ,
12
- iconClass : "" ,
13
- disable : false ,
14
- id : `tab_${ ( new ( Date ) ( ) ) . getTime ( ) } `
15
- } ;
5
+ Tabs . prototype . _checkPanelComponent = function ( DefaultPanelComponent , PanelComponent ) {
6
+ let NewPanelCom = PanelComponent ;
7
+ if ( ! PanelComponent )
8
+ NewPanelCom = DefaultPanelComponent ;
9
+ else
10
+ if ( typeof PanelComponent !== 'function' && React . isValidElement ( PanelComponent ) )
11
+ NewPanelCom = function ( props ) { return PanelComponent ; } ;
12
+ return NewPanelCom ;
16
13
} ;
14
+ Tabs . prototype . _prepareTabData = ( function ( ) {
15
+ const _getDefaultTabData = function ( DefaultPanelComponent ) {
16
+ return {
17
+ title : "" ,
18
+ tooltip : "" ,
19
+ panelComponent : DefaultPanelComponent ,
20
+ closable : true ,
21
+ iconClass : "" ,
22
+ disable : false ,
23
+ id : `tab_${ ( new ( Date ) ( ) ) . getTime ( ) } `
24
+ } ;
25
+ } ;
26
+ return function ( tabData , DefaultPanelComponent ) {
27
+ tabData . panelComponent = this . _checkPanelComponent ( DefaultPanelComponent , tabData . panelComponent ) ;
28
+ return Object . assign ( _getDefaultTabData ( DefaultPanelComponent ) , tabData ) ;
29
+ } ;
30
+ } ) ( ) ;
17
31
Tabs . prototype . _addTab = function ( tabObj , { defaultPanelComponent } ) {
18
- tabObj = Object . assign ( this . _getDefaultTabData ( defaultPanelComponent ) , tabObj ) ;
19
- this . _data . push ( tabObj ) ;
32
+ this . _data . push ( this . _prepareTabData ( tabObj , defaultPanelComponent ) ) ;
20
33
return this ;
21
34
} ;
22
35
Tabs . prototype . _removeTab = function ( id ) {
@@ -27,16 +40,14 @@ Tabs.prototype._removeTab = function (id) {
27
40
Tabs . prototype . getTab = function ( id ) {
28
41
return this . _data . find ( tab => tab . id === id ) ;
29
42
} ;
30
- Tabs . prototype . setTab = function ( id , newData = { } , memoizePanel = true ) {
43
+ Tabs . prototype . _setTab = function ( id , newData = { } , DefaultPanelComponent ) {
31
44
const _index = this . _data . findIndex ( tab => tab . id === id ) ;
32
45
if ( _index >= 0 ) {
46
+ newData . panelComponent = this . _checkPanelComponent ( DefaultPanelComponent , newData . panelComponent ) ;
33
47
const oldData = this . _data [ _index ] ;
34
48
newData . id = oldData . id ; // can not change id
35
- if ( memoizePanel && newData . panelComponent !== oldData . panelComponent && React . isValidElement ( newData . panelComponent ) ) {
36
- newData . panelComponent = < MemoPanel > newData.panelComponent</ MemoPanel > ;
37
- }
38
49
Object . assign ( this . _data [ _index ] , newData ) ;
39
50
}
40
- return newData ;
51
+ return this ;
41
52
} ;
42
53
export default Tabs ;
0 commit comments