@@ -6,7 +6,6 @@ import { getConfig, reloadFromConfig, loadPanelsFromLocalstorage, saveConfig } f
66import './dockview-extensions.js'
77
88const cerateDockview = ( el , options ) => {
9- console . log ( options , 'options' ) ;
109 // options.renderer = 'always'
1110 // options.renderer = 'onlyWhenVisible'
1211 const template = el . querySelector ( 'template' ) ;
@@ -15,12 +14,11 @@ const cerateDockview = (el, options) => {
1514 theme : options . theme || {
1615 name : "light" ,
1716 className : "dockview-theme-light" ,
18- // gap: 3, //group间距
19- // dndOverlayMounting: 'absolute' | 'relative', //拖拽时遮罩层挂载到root还是当前group, 'absolute'有完整过渡动画效果, 'relative'只在当前group显示过渡动画效果
20- // dndPanelOverlay: 'content' | 'group', // 拖拽时遮罩层只覆盖content还是覆盖整个group
21- dndOverlayMounting : 'absolute' ,
22- dndPanelOverlay : 'group' ,
17+ // gap: 3,
18+ dndOverlayMounting : 'absolute' , // 'absolute' | 'relative'
19+ dndPanelOverlay : 'group' , // 'content' | 'group'
2320 } ,
21+ disableTabsOverflowList : true ,
2422 createComponent : option => new DockviewPanelContent ( option )
2523 } ) ;
2624 initDockview ( dockview , options , template ) ;
@@ -36,7 +34,6 @@ const initDockview = (dockview, options, template) => {
3634 dockview . init = ( ) => {
3735 const config = getConfig ( options ) ;
3836 dockview . params . floatingGroups = config . floatingGroups || [ ]
39- console . log ( config , 'config' ) ;
4037 dockview . fromJSON ( config ) ;
4138 window . dockview = dockview ;
4239 }
@@ -114,10 +111,10 @@ const initDockview = (dockview, options, template) => {
114111 } )
115112
116113 dockview . _inited = true ;
117- dockview . _initialized ?. fire ( )
118- // dockview.groups.forEach(group => {
119- // observeGroup(group)
120- // })
114+ dockview . _initialized ?. fire ( ) ;
115+ dockview . groups . forEach ( group => {
116+ observeGroup ( group )
117+ } )
121118 } , 100 ) ;
122119 } )
123120
@@ -138,7 +135,7 @@ export const observeGroup = (group) => {
138135 dockview . params . observer = new ResizeObserver ( observerList => requestAnimationFrame ( ( ) => resizeObserverHandle ( observerList , dockview ) ) ) ;
139136 }
140137 dockview . params . observer . observe ( group . header . element )
141- dockview . params . observer . observe ( group . header . tabContainer )
138+ dockview . params . observer . observe ( group . header . tabs . _tabsList )
142139 for ( let panel of group . panels ) {
143140 if ( panel . params . isActive ) {
144141 panel . api . setActive ( )
@@ -155,7 +152,7 @@ const resizeObserverHandle = (observerList, dockview) => {
155152const setWidth = ( target , dockview ) => {
156153 let header , tabsContainer
157154 if ( target . classList . contains ( 'dv-tabs-container' ) ) {
158- header = target . parentElement
155+ header = target . parentElement . parentElement
159156 tabsContainer = target
160157 }
161158 else {
@@ -170,31 +167,33 @@ const setWidth = (target, dockview) => {
170167 if ( voidWidth === 0 ) {
171168 if ( tabsContainer . children . length <= 1 ) return
172169 const inactiveTabs = header . querySelectorAll ( '.dv-tabs-container>.dv-tab' )
173- const lastTab = inactiveTabs [ inactiveTabs . length - 1 ]
174- const aEle = document . createElement ( 'a' )
175- const liEle = document . createElement ( 'li' )
176- aEle . className = 'dropdown-item'
177- liEle . tabWidth = lastTab . offsetWidth ;
178- aEle . append ( lastTab )
179- liEle . append ( aEle )
180- dropMenu . insertAdjacentElement ( "afterbegin" , liEle )
170+ for ( let i = inactiveTabs . length - 1 ; i >= 0 ; i -- ) {
171+ const lastTab = inactiveTabs [ i ]
172+ if ( lastTab . offsetLeft + lastTab . offsetWidth > lastTab . offsetParent . offsetWidth ) {
173+ const aEle = document . createElement ( 'a' )
174+ const liEle = document . createElement ( 'li' )
175+ aEle . className = 'dropdown-item'
176+ liEle . tabWidth = lastTab . offsetWidth ;
177+ aEle . append ( lastTab )
178+ liEle . append ( aEle )
179+ dropMenu . insertAdjacentElement ( "afterbegin" , liEle )
180+ }
181+ }
181182 }
182183 else {
183- let firstLi = dropMenu . querySelector ( 'li:has(.dv-active-tab)' ) || dropMenu . children [ 0 ]
184+ const firstLi = dropMenu . children [ 0 ]
184185 if ( firstLi ) {
185- let firstTab = firstLi . querySelector ( '.dv-tab' )
186+ const firstTab = firstLi . querySelector ( '.dv-tab' )
186187 if ( voidWidth > firstLi . tabWidth || tabsContainer . children . length == 0 ) {
187188 firstTab && tabsContainer . append ( firstTab )
188189 firstLi . remove ( )
189190 }
190191 }
191192 }
192- setTimeout ( ( ) => {
193- if ( [ ...tabsContainer . children ] . every ( tab => ! tab . classList . contains ( 'dv-active-tab' ) ) ) {
194- const group = dockview . groups . find ( g => g . element === header . parentElement )
195- group . panels [ 0 ] . api . setActive ( )
196- }
197- } , 100 ) ;
193+ if ( [ ...tabsContainer . children ] . every ( tab => tab . classList . contains ( 'dv-inactive-tab' ) ) ) {
194+ const group = dockview . groups . find ( g => g . element === header . parentElement )
195+ group . panels [ 0 ] . api . setActive ( )
196+ }
198197}
199198
200199const toggleComponent = ( dockview , options ) => {
0 commit comments