11import React from 'react' ;
2- import MemoPanel from '../../panel/memoPanel.js' ;
32function Tabs ( ) {
43 this . _data = [ ] ;
54}
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 ;
1613} ;
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+ } ) ( ) ;
1731Tabs . 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 ) ) ;
2033 return this ;
2134} ;
2235Tabs . prototype . _removeTab = function ( id ) {
@@ -27,16 +40,14 @@ Tabs.prototype._removeTab = function (id) {
2740Tabs . prototype . getTab = function ( id ) {
2841 return this . _data . find ( tab => tab . id === id ) ;
2942} ;
30- Tabs . prototype . setTab = function ( id , newData = { } , memoizePanel = true ) {
43+ Tabs . prototype . _setTab = function ( id , newData = { } , DefaultPanelComponent ) {
3144 const _index = this . _data . findIndex ( tab => tab . id === id ) ;
3245 if ( _index >= 0 ) {
46+ newData . panelComponent = this . _checkPanelComponent ( DefaultPanelComponent , newData . panelComponent ) ;
3347 const oldData = this . _data [ _index ] ;
3448 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- }
3849 Object . assign ( this . _data [ _index ] , newData ) ;
3950 }
40- return newData ;
51+ return this ;
4152} ;
4253export default Tabs ;
0 commit comments